计算机辅助分析与设计c语言 二分法牛顿迭代法求方程解.docx

上传人:b****4 文档编号:4591635 上传时间:2022-12-07 格式:DOCX 页数:9 大小:96.71KB
下载 相关 举报
计算机辅助分析与设计c语言 二分法牛顿迭代法求方程解.docx_第1页
第1页 / 共9页
计算机辅助分析与设计c语言 二分法牛顿迭代法求方程解.docx_第2页
第2页 / 共9页
计算机辅助分析与设计c语言 二分法牛顿迭代法求方程解.docx_第3页
第3页 / 共9页
计算机辅助分析与设计c语言 二分法牛顿迭代法求方程解.docx_第4页
第4页 / 共9页
计算机辅助分析与设计c语言 二分法牛顿迭代法求方程解.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

计算机辅助分析与设计c语言 二分法牛顿迭代法求方程解.docx

《计算机辅助分析与设计c语言 二分法牛顿迭代法求方程解.docx》由会员分享,可在线阅读,更多相关《计算机辅助分析与设计c语言 二分法牛顿迭代法求方程解.docx(9页珍藏版)》请在冰豆网上搜索。

计算机辅助分析与设计c语言 二分法牛顿迭代法求方程解.docx

计算机辅助分析与设计c语言二分法牛顿迭代法求方程解

《计算机辅助分析与设计》实验报告

实验一:

编程作业1:

用二分法求方程

的一个正的近似解(精确到0.1)。

程序:

#include

#include

#defineF(x)((x)*(x)*(x)-3*(x)+1)/*宏定义F(x)为方程式的左边*/

voidmain()

{intk=0;

floata,b,c,m;

printf("inputa,b,c:

");

scanf("%f,%f,%f",&a,&b,&c);/*输入a,b的值以及精确度c的值*/

while(F(a)*F(b)>0)/*输入的a,b的值直到满足F(a)F(b)

0为止*/

{printf("inputa,bagain:

");

scanf("%f,%f",&a,&b);}

for(;F(a)*F(b)<=0;k++)/*二分法开始求方程的根*/

{if(F(a)*F(b)==0)/*若F(a)F(b)=0,则方程的解在a,b两者中,并找出其根*/

if(F(a)==0)

printf("Arootofequationis:

%fk=%d\n",a,k);

else{printf("Arootofequationis;%fk=%d\n",b,k);break;}

elsem=(a+b)/2;/*取a,b的中点*/

if(fabs(a-b)

{printf("Arootofequationis:

%fk=%d\n",m,k);break;}

elseif(F(a)*F(m)>0)/*找出二分后区间两端点值异号的区间,并赋给[a,b]*/

a=m;

elseb=m;

}

}

程序运行结果如下图

编程作业2:

用牛顿迭代法求方程

附近的根(精确到0.001)。

程序:

#include

#include

floatf(floatx)/*定义函数f返回

的值(其中f(x)为方程式的左边)*/

{

floaty;

y=(x*x*x-x-1)/(3*x*x-1);

return(y);

}

voidmain()

{

floatx1,x2,x0,c;

printf("inputx0,c:

");

scanf("%f,%f",&x0,&c);/*输入x0及精确度c的值*/

x2=x0;

do/*牛顿迭代法开始求方程的根*/

{x1=x2;

x2=x1-f(x1);}

while(fabs(f(x1))>c);/*若不满足精度要求执行循环,反之则得到方程的根就是x2*/

printf("Arootofequationis:

%f\n",x2);

}

程序运行结果如下图:

 

实验二:

编程作业1:

用梯形法计算定积分

(取n=100)。

程序:

#include

#include

floatf(floatx)/*定义函数f返回[1/(1+

)]*/

{

floaty;

y=1/(x*x+1);

return(y);

}

voidmain()

{

floata,b,h,F=0;

intn,k;

printf("Inputa,b,n:

");

scanf("%f,%f,%d",&a,&b,&n);/*输入积分上下限a,b及n的值*/

F=(f(a)+f(b))/2.0;

h=fabs(b-a)/n;/*计算每一个小梯形的高度h*/

for(k=1;k

F+=f(a+k*h);

F=F*h;

printf("Theintegralof1/(1+x*x)is:

%f\n",F);

getch();

}

程序运行结果如下图:

 

编程作业2:

用抛物线法计算定积分

(取n=100)。

程序:

#include

floatf(floatx)/*定义函数f返回[1/(1+

)]*/

{

floaty;

y=1/(1+x*x);

return(y);

}

voidmain()

{

floata,b,h,F;

intn,k;

printf("inputa,b,n:

");

scanf("%f,%f,%d",&a,&b,&n);/*输入积分下上限a,b及n的值*/

h=(b-a)/(4*n);

F=f(a)+f(b);

for(k=0;k<(2*n);k++)/*求

的和*/

F+=4*f(((2*k+1)*h+a));

/*求

的和*/

for(k=1;k<(2*n);k++)

F+=2*f((2*k*h+a));

F=F*h/3;

printf("Theintegralof1/(1+x*x)is:

%f\n",F);

getch();

}

程序运行结果如下图:

 

实验三:

编程作业1:

用欧拉法求初值问题

处的近似值。

程序:

#include

floatf(floatx,floaty)/*定义函数f返回[y-(2x/y)]的值*/

{

floatz;

z=y-(2*x/y);

return(z);

}

voidmain()

{

inti=0,N;

floatx0,y0,h,x,y;

printf("inputx0,y0,h,N:

");

scanf("%f,%f,%f,%d",&x0,&y0,&h,&N);/*输入起始点x0、y0及步长h、步数N的值*/

for(;i

{

y=y0+f(x0,y0)*h;/*用欧拉公式y=y0+hf(x0,y0)求y的值*/

x=x0+h;

x0=x;

y0=y;

printf("\nx=%4.2f,y=%f",x,y);/*输出运算到第i+1步时x、y的值*/

}

getch();

}_

程序运行结果如下图:

 

编程作业2:

用改进欧拉法求初值问题

处的近似值。

程序:

#include

floatf(floatx,floaty)/*定义函数f返回[y-(2x/y)]的值*/

{

floatz;

z=y-(2*x/y);

return(z);

}

voidmain()

{

inti=0,N;

floatx0,y0,h,x1,y1;

printf("\ninputx0,y0,h,N:

");

scanf("%f,%f,%f,%d",&x0,&y0,&h,&N);/*输入起始点x0、y0及步长h、步数N的值*/

for(;i

{

x1=x0+h;

y1=y0+f(x0,y0)*h;/*求预报值y1=y0+hf(x0,y0)的值*/

y1=y0+(f(x0,y0)+f(x1,y1))*h/2;/*求校正值y1=y0+h[f(x0,y0)+f(x1,y1)]/2的值*/

x0=x1;

y0=y1;

printf("\nx=%4.2f,y=%f",x1,y1);/*输出运算到第i+1步时x、y的值*/

}

getch();

}

程序运行结果如下图:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1