数值分析计算方法程序汇总.doc
《数值分析计算方法程序汇总.doc》由会员分享,可在线阅读,更多相关《数值分析计算方法程序汇总.doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流数值分析计算方法程序汇总.精品文档.(一)秦九韶法例:已知p=2x2-3x-4,求x=1时,p=?程序:#include stdio.hvoid main()float a50,b,x;int n,i,k;scanf(%d%f,&n,&x);for(i=0;i=n;i+)scanf(%f,&ai);b=a0;k=1;while(k=n)b=x*b+ak;k=k+1;printf(%f,b);结果:-5.000000(二)复化中矩形公式例:求=g(y1)+g(y2)+g(ym)h的值(已知g(y)=yn/2-1e-y/2 ,n=11,h=0.1
2、,ym=20)。程序:#include stdio.h#include main() double y,h,s;int n,i;n=11;h=0.1;s=0;y=0;for(i=0;i=200;i+) y=y+h; s=s+pow(y,n/2.0-1)*exp(-y/2.0);s=s*h;printf(%fn,s);结果:2266.139467(三)复化梯形公式例:求程序:#include stdio.hvoid main()double a,b,s,h,x;int i,n;a=-1.0;b=1.0;n=10;h=(b-a)/n;x=a;s=x*x/2;for(i=1;in;i+)x=x+h;
3、s=s+x*x;s=s+b*b/2;s=s*h;printf(s=%fn,s);结果:s=0.680000(四)复化辛普森公式例:求程序:#include stdio.hvoid main()double a,b,c,s,h,x,y;int i,n;a=0.0;b=1.0;n=10;s=0.0;h=(b-a)/n;x=a;y=x+h;c=(x+y)/2;for(i=1;i=n;i+)s=s+x*x*x+4*c*c*c+y*y*y;x=x+h;y=y+h;c=c+h;s=s*h/6;printf(s=%fn,s);结果:s=0.250000(五)复化高斯公式例:求程序:#include #inc
4、lude main()double a,b,h,s,x1,x2; int i,n; a=0;b=2;n=20;s=0; h=(b-a)/n; for(i=0;in;i+) x1=a+i*h+h/2*(1/1.732+1); x2=a+i*h+h/2*(1-1/1.732); s=s+x1*x1*x1+x2*x2*x2; s=h/2*s; printf(s=%fn,s);结果:s=4.000000(六)二维中矩形公式例:求程序:#include #include main()double a,b,c,d,x50,y50,hx,hy,s; int i,j,n,k; a=0.0;b=1.0;c=0.
5、0;d=1.0; n=k=10; hx=(b-a)/n;hy=(d-c)/k; x0=a+hx/2;y0=c+hy/2;s=0.0; for(j=0;jk;j+) for(i=0;in;i+) s=s+xi*xi+yj*yj; xi+1=xi+hx; yj+1=yj+hy; s=hx*hy*s; printf(s=%fn,s);结果:s=0.665000(七)迭代法例:求x=x2的解。程序:#include stdio.h#includemain() double x,xl,y,yl;int i,j;x=0.5;xl=x;y=0.5;yl=y;for(i=0;i+)x=x*x; if(fabs
6、(xl-x)0.0001) break; else xl=x;for(j=0;j+)y=sqrt(y); if(fabs(yl-y)0.0001) break; else yl=y;printf(x=%f,y=%fn,x,y);结果:x=0.000000,y=0.999915(八)牛顿迭代法y=f(x),求f(x*)=0。y-y0=f(x0)(x-x0)-y0=f(x0)(x1-x0)x1=x0-f(x0)/f(x0)xn+1=xn-f(xn)/f(xn)例:求f(x)=x-x2的零点(已知x0=0.1)。程序:#include stdio.h#includemain() double x,x
7、l;int i;x=0.1;xl=x;for(i=0;i+)x=x-(x-x*x)/(1-2*x); if(fabs(xl-x)0.0001) break; else xl=x;printf(x=%f,x);结果:x=-0.000000(九)二分法已知f(a)f(b)0,则在a,b中至少有一点f(x*)=0。令x1=(a+b)/2如f(a)f(x1)0,取a1=a,b1=x1;否则,取a1=x1,b1=b。令x2=(a1+b1)/2如f(a1)f(x2)0,取a2=a1,b2=x2;否则,取a2=x2,b2=b1。令xn+1=(an+bn)/2如f(an)f(xn+1)0,取an+1=an,b
8、n+1=xn+1;否则,取an+1=xn+1,bn+1=bn。例:求f(x)=x-x2在0.1,2.45内的零点。程序:#include stdio.h#includemain() double a,al,b,bl,x,xl; int i;a=0.1;b=2.45;for(i=0;i+)x=(a+b)/2; if(a-a*a)*(x-x*x)0) al=a,b=x; else a=x,bl=b; if(fabs(xl-x)0.0001) break; else xl=x;printf(x=%f,xl);结果:x=1.000040(十)一元回归已知(x1,y1),(x2,y2)(xN,yN),y
9、=a+bx yi=a+bxi+Ei Q(a,b)= Ei=yi-a-bxi总误差Q= 令得aN+bX-Y=0, aX+bX2-XY=0(其中X=, Y=, X2=, XY=)。可得:例:已知(0,0),(1,2),(2,5);求a,b。程序:#include stdio.hmain() float a,b,E,X,Y,Xl,Xy,Q,x3=0.0,1.0,2.0,y3=0.0,2.0,5.0; int i,j,n=3; X=0;Y=0;Xl=0;Xy=0; for(i=0;in;i+) X=X+xi; Y=Y+yi; Xl=Xl+xi*xi; Xy=Xy+xi*yi; a=(Xl*Y-X*Xy
10、)/(n*Xl-X*X); b=(n*Xy-X*Y)/(n*Xl-X*X); printf(a=%f,b=%fn,a,b); Q=0;E=0; for(j=0;j=3;j+) Q=Q+E*E; E=yj-a-b*xj; printf(Q(总误差)=%fn,Q);结果:a=-0.166667,b=2.500000Q(总误差)=0.166667(十一)泰勒插值例:计算当x=2.104时,ex=pn(x)=?程序:#include stdio.h#include void main()double x,l,p; int i,n; x=2.104;n=100; p=1;l=1; for(i=0;i=n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 计算方法 程序 汇总
限制150内