计算方法C语言编程_第1页
计算方法C语言编程_第2页
计算方法C语言编程_第3页
计算方法C语言编程_第4页
计算方法C语言编程_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算方法C语言编程第二章2已知方程在区间[1,2]内有一根,试问用二分法求根,使其具有5位有效数字至少应二分多少次?【程序设计】#include<math.h>main(){intn=0;floatx1=1.0,x2=2.0,x=1.0,x0;do{x0=x;x=(x1+x2)/2;n++;if(x*x*x+x-4>0)x2=x;elsex1=x;}while(fabs(x-x0)>0.00005);printf("N=%d\n",n);}〖运行结果〗N=154用迭代法求的正根,要求准确到小数点后第5位。【程序设计】#include<math.h>main(){floatx0,x=1.5,y;do{y=(log(x+0.2))/5;x0=x;x=exp(y);}while(fabs(x-x0)>0.000005);printf("X=%f\n",x);}-〖运行结果〗x=1.0447639用牛顿法求方程在x0=2附近的根,要求准确到小数点后第3位。【程序设计】#include<math.h>main(){floatx=2.0,x0;do{x0=x;x=x-(x*x*x-3*x-1)/(3*x*x-3);}while(fabs(x-x0)>0.0005);printf("X=%f\n",x);}〖运行结果〗x=1.87938511.分别用单点和双点弦截法求方程-x-1=0在[1,1.5]内的根。要求|xn+1-xn|<=0.000005【程序设计】#include<math.h>floatf(floatx){floatf;f=x*x*x-x-1;returnf;}floatg(floatx1,floatx2){floatg;g=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));returng;}main(){floatx1=1.0,x2=1.5,x,x0;x=x1;do{x0=x;x=g(x1,x2);if(f(x)>0)x2=x;elsex1=x;}while(fabs(x-x0)>0.000005);printf("X=%f\n",x);}〖运行结果〗x=1.324717第三章1.分别用列主元素消去法求解下列方程组.(计算取4位小数).【程序设计】#definen4main(){floata[n][n]={1.1161,0.1254,0.1397,0.1490,0.1582,1.1675,0.1768,0.1871,0.1968,0.2071,1.2168,0.2271,0.2368,0.2471,0.2568,1.2671},b[n]={1.5471,1.6471,1.7471,1.8471},k,x[n+1],y[n+1];inti,j,t;y[n]=0.0;for(i=0;i<n;i++)for(j=i+1;j<n;j++){k=(-1)*a[j][i]/a[i][i];a[j][i]=0;for(t=i+1;t<n;t++)a[j][t]=a[i][t]*k+a[j][t];b[j]=b[i]*k+b[j];}for(i=n-1;i>=0;i--){for(j=n-2;j>=0;j--){if(a[i][j]!=0)b[i]=b[i]-y[j+1]*a[i][j+1];elsebreak;}y[i]=b[i]/a[i][j+1];x[i+1]=y[i];}for(i=1;i<=n;i++)printf("X%d=%f\n",i,x[i]);}〖运行结果〗x1=1.040584x2=0.986957x3=0.935052x4=0.8812979设有方程组取初始向量,分别用雅可比迭代法与赛德尔迭代法求解,要求时迭代终止.【程序设计】#include<math.h>main()/*赛德尔*/{floatx1[100],x2[100],x3[100],y;intk=0;x1[0]=-3;x2[0]=1;x3[0]=1;do{x1[k+1]=((-2)*x2[k]-x3[k]-12)/5;x2[k+1]=(x1[k+1]-2*x3[k]+20)/4;x3[k+1]=((-2)*x1[k+1]+3*x2[k+1]+3)/10;if(fabs(x3[k+1]-x3[k])>fabs(x2[k+1]-x2[k]))y=x3[k+1]-x3[k];elseif(fabs(x2[k+1]-x2[k])>fabs(x1[k+1]-x1[k]))y=x2[k+1]-x2[k];elsey=x1[k+1]-x1[k];k++;}while(fabs(y)>0.001);printf("x1=%f\nx2=%f\nx3=%f\n",x1[k],x2[k],x3[k]);printf("K=%d\n",k);}〖运行结果〗x1=-3.999974x2=3.000043x3=2.000008k=7#include<math.h>main()/*雅可比*/{floatx1[100],x2[100],x3[100],y;intk=0;x1[0]=-3;x2[0]=1;x3[0]=1;do{x1[k+1]=((-2)*x2[k]-x3[k]-12)/5;x2[k+1]=(x1[k+1]-2*x3[k]+20)/4; x3[k+1]=((-2)*x1[k+1]+3*x2[k+1]+3)/10;if(fabs(x3[k+1]-x3[k])>fabs(x2[k+1]-x2[k]))y=x3[k+1]-x3[k];elseif(fabs(x2[k+1]-x2[k])>fabs(x1[k+1]-x1[k]))y=x2[k+1]-x2[k];elsey=x1[k+1]-x1[k];k++;}while(fabs(y)>0.001);printf("x1=%f\nx2=%f\nx3=%f\n",x1[k],x2[k],x3[k]);printf("K=%d\n",k);}〖运行结果〗x1=-4.000152x2=2.999648x3=2.000160k=1310设有方程组证明解此方程组的雅可比迭代法收敛,而相应的赛德尔迭代法发散.取初始向量,用雅可比迭代法求解,要求迭代三次.【程序设计】main(){floatx1[10],x2[10],x3[10];intk;x1[0]=0;x2[0]=0;x3[0]=0;for(k=0;k<=2;k++){x1[k+1]=1-2*x2[k]+2*x3[k];x2[k+1]=3-x1[k]-x3[k];x3[k+1]=5-2*x1[k]-2*x2[k];}printf("x1=%f\nx2=%f\nx3=%f\n",x1[k],x2[k],x3[k]);}〖运行结果〗x1=1.000000x2=1.000000x3=1.00000011设有方程组其等价形式为证明解等价方程组的简单迭代法发散,而赛德尔法收敛取初始向量,用赛德尔迭代法求解,要求迭代四次【程序设计】main(){floatx1[10],x2[10],x3[10];intk;x1[0]=0;x2[0]=0;x3[0]=0;for(k=0;k<=3;k++){x1[k+1]=(x2[k]+x3[k])/2;x2[k+1]=(x1[k+1]+1)/2;x3[k+1]=x1[k+1];}printf("x1=%f\nx2=%f\nx3=%f\n",x1[k],x2[k],x3[k]);}〖运行结果〗x1=0.578125x2=0.789062x3=0.578215第五章x1.12751.15031.17351.1972Y=f(x)0.11910.139540.159320.179031.已知函数表:应用拉格朗日插值公式计算f(1.1300)的近似值。(计算取4位小数)【程序设计】floatfun(float,float,float,int);floatx[4]={1.1275,1.1503,1.1735,1.1972};floaty[4]={0.1191,0.13954,0.15932,0.17903};voidmain(){intk=0;floatsum=0;for(k=0;k<=3;k++)sum+=fun(x[k],y[k],1.1300,k);printf("%5.4f",sum);}floatfun(floata,floatb,floatm,inti){floatshang=1.0,chu=1.0,shu;intj;loop:for(j=0;j<=3;j++)if(i==j)continue;else{shang*=(m-x[j]);chu*=(a-x[j]);}shu=shang*b/chu;returnshu;}〖运行结果〗0.1214X1.6151.6341.7021.8281.921Y=f(x)2.414502.464592.652713.030353.340667.利用函数表造出差商表,并利用牛顿插值公式计算f(x)在x=1.682,1.813处的近似值.(计算取5位小数).【程序设计】doublef(doublex[5],doubley[25],double(c){doublez;inti,j,k;for(i=1;i<5;i++) {for(j=4;i>=I;j--)y[j]=(y[j]-y[j-1]/(x[j]-x[j-i]);z=y[4];for(k=3;k>=0;k--)z=z*(c-x[k])+y[k];returnz;}}main(){doublem[5]={1.615,1.634,1.072,1.828,1.921},n[5]={2.41450,2.46459,2.65271,3.03035,3.34066}a=1.682,b=1.813,c,d;c=f(m,n,a);d=f(m,n,b);printf(“c=%805f\nd=%8.5f\n,c,d);}〖运行结果〗c=2.059592d=2.98376第七章xk1.82.02.22.42.6F(xk)3.120144.426596.042418.0301410.466752已知函数f(x)的下列数据:用柯特斯公式计算积分.(计算取5位小数)【程序设计】main(){doubley[5]={3.12014,4.42659,6.04241,8.03014,10.46675},m,n,a=1.8,b=2.6;n=b-a;m=(b-a)/90*(7*y[0]+32*y[1]+12*y[2]+32*y[3]+7*y[4]);printf(“m=%7.5f”.m);}〖运行结果〗m=5.03279xk00.10.20.30.40.5f(xk)11.0049711.0195361.0426681.0727071.107432xk0.60.70.80.91.0f(xk)1.1441571.7598591.2113071.2352111.2483757已知函数f(x)的下列数据:用复化梯形公式和复化辛浦生公式计算积分.(计算取6位小数)注意:本题f(x)=cosx+sin²x,,积分真值I=1.11414677.【程序设计】main(){doubley[11]={1,1.004971,1.019536,1.042668,1.072707,1.107432,1.144157,1.759859,1.211307,1.235211,1.248375};doubleI,h,m=0,n=10.0,a=0,b=1.0,c=0;intI;h=(b-a)/n;for(i=1;i<=9;i++){m=m+y[2i-1];c=c+y2i};}I=h/6*(y[0]+4*m+2*c+y[10]);Printf(“I=%8.6f,”I);}〖运行结果〗I=1.11414511用龙贝格法计算积分I=,要求误差不超过(计算取6位小数).【程序设计】#include<math.h>doublef1(doublex)/*龙贝格:*/{doubley;y=exp(-x);returny;}doublef2(doublea,doubleb,doublec){intk=0;doubleh1,h2,t1,t2,s1=0,s2=0,c1=0,c2,r1=0,r2=0,max;doubles,x;h1=b-a;t1=h1*(f(a)+f(b))/2;while(1){h2=h1/2;x=a+h2;s=0;k++;}do{s=s+f(x);x=x+h1;}while(x<b)t2=1/2*t1+h1/2*s;if(k>=1)s2=(4*t2-t1)/3;if(k>=2)c2=(16*s2-s1)/15;if(k>=3)r2=(64*c2-c1)/63;if(k>=4){max=fabs(r2-r1);if(max<c)break;}h1=h2;t1=t2;s1=s2;c1=c2;r1=r2;}returnr2}main(){doublem,I,n=0,d=1.0,q=0.00001;m=srp(3.14);I=2/m*f2(n,d,q);Printf(“I=%9.6f“,I);}〖运行结果〗I=0.713271第八章2用梯形法与欧拉预估-校正法求解初值问题:取步长h=0.1,并与准确解y=-x-1+2相比较.(计算取6位小数).【程序设计】#include<math.h>doublef1(doublen,doublem){doublet;t=n+m;returnt;}voidf2(doublea,doubleb,doublex0,doubley0,doubleh){intk,N;doublex,y,Yp,Yc;N=(int)/((b-a)/h+o.5);for(k=0;k<N;k++){x=x0+h;Yp=y0+h*f1(x0,y0);Yc=y0+h*f1(x,Yp);y=(Yp+Yc)/2;printf(“y=%4.6\n”,y);x0=x;y0=y;}}voiddoublef3(doublet1){doubled;d=-t1-1+2*exp(t1);printf(“d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论