- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
10 李旺龙
开发平台:
系统:windows7
工具:VC++ 6.0
实验一: 用二分法求非线性方程实根
实验题目:本实验用二分法求非线性方程f(x)=x3 -2*x-5=0在区间[2,3]内的根。
流程图:
源程序:
#includestdio.h
#includemath.h
float f(float x)
{
float a;
a=x*x*x-2*x-5;
return a;
} /*求函数值*/
void main()
{
float a,b,e,x; /*a,b分别表示有根区间的左右端点,e是精度要求,x是区间中点值*/
printf(\nplease input data a=);
scanf(%f,a);
printf(\nplease input data b=);
scanf(%f,b);
printf(\nplease input data eps=);
scanf(%f,e);
if(f(a)*f(b)0)
{
while(f(x)!=0)
{
x=(a+b)/2;
if(f(x)*f(a)0)
{
b=x;
if(fabs(b-a)e)
break;
else continue;
}
else
{
a=x;
if(fabs(b-a)e)
break;
else continue;
}
}
printf(\n);
x=(b+a)/2;
printf(the root of f(x)=0 is x=%f\n,x);
}
else
printf(\not root!a fresh input\n);
}
程序运行结果:
实验二:用迭代法求非线性方程实根
实验题目:本实验用迭代法求非线性方程f(x)=e-x-x+1=0的根。
流程图:
源程序:
#includestdio.h
#includemath.h
float fa(float x);
float dd(float a);
void main()
{
float x,x0;
printf(input data,x0=);
scanf(%f,x0);
x=dd(x0);
printf(the root of f(x)=0 is x=%f\n,x);
}
float dd(float a)
{
float x,x0,e;
int i;
printf(input eps=);
scanf(%f,e);
x0=a;
printf(x0=%f\n,x0);
for(i=1;;i++)
{
x=fa(x0);
printf(x(%d)=%f\n,i,x);
if(fabs(x-x0)e)
x0=x;
else
return x;
}
}
float f(float x)
{
float a;
a=exp(-x)-x+1;
return a;
}
float fa(float x)
{
float a;
a=exp(-x)+1;
return a;
}
程序运行结果:
实验三:用牛顿迭代法求非线性方程实根
实验题目:本实验用牛顿迭代法求f(x)=x-e-x=0在区间[0,1]的根,输出每次的迭代结果并统计所用的迭代次数,取eps=0.00001,x0=0.5
流程图:
源程序:
includestdio.h
#includemath.h
#define maxrept 1000 /*最大迭代次数*/
float f(float x)
{return x-exp(-x); /*函数f(x)*/
}
float df(float x)
{return(1+exp(-x)); /*f(x)的导数*/
}
float iterate(float x)
{ float x1;
x1=x-f(x)/df(x); /*牛顿迭代函数*/
return x1;
}
void main()
{ float x0,x1,eps,d;
int k=0;
printf(\nplaese input x0=);
scanf(%f,x0);
printf(\nplaes
文档评论(0)