- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数值计算方法实验程序0jsp
第一部分 C语言程序部分
一、误差与数值稳定性
例1数值方法计算积分收敛和发散实例
法1In=1-nIn-1
#includestdio.h
#includemath.h
main()
{int n,j;
float i;
i=1-exp(-1);
printf(%2d %-20.8f,0,i);
for(j=1;j=20;j++)
{i=1-j*i;
printf(%2d %-20.8f,j,i);
if((j+1)%3==0) printf(\n);
}
printf(\n);
法2
#includestdio.h
#includemath.h
#define N 20
main()
{int j;
float I;
I=0;printf(%2d %-20.8f,20,I);
for(j=19;j=1;j--)
{I=1.0/j*(1-I);
printf(%2d %-20.8f,j,I);
if(j%3==0) printf(\n);
}
printf(\n);
}
二、大数吞掉小数的例子
#includeconio.h
main()
{
double x=7e+33,y=0.001;
clrscr();
printf(1===%d\n,xx+y);
printf(2===%d\n,x==x+y);
}
三、二分法
例用二分法求方程的非零实根的近似值,使误差不超过10-2
#includestdio.h
#includemath.h
#includeconio.h
#define EPS 1e-2
#define DELTA 1e-6
float Bisection(float,float,float(*f)(float));
float f(float);
main()
{float a=1.5,b=2;
float x;
clrscr();
x=Bisection(a,b,f);
printf(\nThe root of the equation is%f,x);
getch();
}
float Bisection(float a,float b,float(*f)(float))
{float c,fc,fa=f(a),fb=f(b);
int n=1;
printf(total bisection c\t\t f(c)\n);
printf(n a b c fa fb fc\n);
while(1)
{if (fa*fb0) exit();
c=(a+b)/2,fc=f(c);
if(fabs(fc)DELTA) break;
else if(fa*fc0){b=c;fb=fc;}
else {a=c;fa=fc;}
if ((b-a)EPS) break;
printf(%2d%10f%10f%10f%10f%10f%10f\n,n++,a,b,c,fa,fb,fc);
}
return c;
}
float f(float x)
{return sin(x)-pow(x,2)/4;
}
四、迭代法
1.简单迭代法
例:用迭代法求方程f(x)=x3-x-1=0的根,迭代公式为
#includeconio.h
#include math.h
float diedai(float);
main()
{ int i;
float x0,x1,e;
scanf(%f %f,e,x0);
clrscr();
for (i=1;;i++)
{ x1=diedai(x0);
if(fabs(x1-x0)=e) break;
{x0=x1;
printf(x[%d]=%f\n,i,x1);
}
}
printf(this equations root is %lf\n ,x1);
}
float diedai(float x)
{float z,y,v;
y=x+1.0; v=1/3.0;
z=pow(y,v);
return(z);
}
2.牛顿迭代法
例:用牛顿迭代法求方程x-cosx=0的实根,要求准确到|xk+1-xk|10-5
#includemath.h
#includeconio.h
#includestdio.h
#define N 100
#define EPS 1e-6
#define ETA 1e-8
main()
{float f(floa
文档评论(0)