=10000)break;n++;}printf("sum[%d]=%f\n",n,sum);}结果:(2)逆序计算源代码:#include#includevoid"/> =10000)break;n++;}printf("sum[%d]=%f\n",n,sum);}结果:(2)逆序计算源代码:#include#includevoid"/>
首页 计算方法与实习上机题答案

计算方法与实习上机题答案

举报
开通vip

计算方法与实习上机题答案实习题11用两种不容的顺序计算,分析误差的变化644834.1100012nn(1)顺序计算源代码:#include#includevoidmain(){doublesum=0;intn=1;while(1){sum=sum+(1/pow(n,2));if(n%1000==0)printf("sun[%d]=%-30f",n,sum);if(n>=10000)break;n++;}printf("sum[%d]=%f\n",n,sum);}结果:(2)逆序计算源代码:#include#includevoid...

计算方法与实习上机题答案
实习题11用两种不容的顺序计算, 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 误差的变化644834.1100012nn(1)顺序计算源代码:#include#includevoidmain(){doublesum=0;intn=1;while(1){sum=sum+(1/pow(n,2));if(n%1000==0)printf("sun[%d]=%-30f",n,sum);if(n>=10000)break;n++;}printf("sum[%d]=%f\n",n,sum);}结果:(2)逆序计算源代码:#include#includevoidmain(){doublesum=0;intn=10000;while(1){sum=sum+(1/pow(n,2));if(n%1000==0)printf("sum[%d]=%-30f",n,sum);if(n<=1)break;n--;}printf("sum[%d]=%f\n",n,sum);}结果:2已知连分数))//(.../(322101nnbaabababf利用下面的方法计算f:011)0,...,2,1(,dfnnidabdbdiiiinn写一个程序,读入n,,计算并打印fnnba,源代码:#include#includevoidmain(){inti=0,n;floata[1024],b[1024],d[1024];printf("pleaseinputn,n=");scanf("%d",&n);printf("\npleaseinputa[1]toa[n]:\n");for(i=1;i<=n;i++){printf("a[%d]=",i);scanf("%f",&a[i]);}printf("\npleaseinputb[0]tob[n]:\n");for(i=0;i<=n;i++){printf("b[%d]=",i);scanf("%f",&b[i]);}d[n]=b[n];for(i=n-1;i>=0;i--)d[i]=b[i]+a[i+1]/d[i+1];printf("\nf=%f\n",d[0]);}结果:3给出一个有效的算法和一个无效的算法计算积分10)10,...1,0(14ndxxxynn源代码:#include#includemain(){doubley_0=(1/4.0)*log(5),y_1;doubley_2=(1.0/55.0+1.0/11.0)/2,y_3;intn=1,m=10;printf("有效算法输出结果:\n");printf("y[0]=%-20f",y_0);while(1){y_1=1.0/(4*n)+y_0/(-4.0);printf("y[%d]=%-20f",n,y_1);if(n>=10)break;y_0=y_1;n++;if(n%3==0)printf("\n");}printf("\n无效算法的输出结果:\n");printf("y[10]=%-20f",y_2);while(1){y_3=1.0/n-4.0*y_2;printf("y[%d]=%-20f",m-1,y_3);if(m<=1)break;y_2=y_3;m--;if(m%2==0)printf("\n");}}结果:4设,已知其精确值为NjNjS2211)11123(21NN(1)编制按从小到大顺序计算的程序NS(2)编制按从小达到的顺序计算的程序NS(3)按两种顺序分别计算,并指出有效位数30000100001000,,SSS源代码:#includemain(){intN;doubleSN[30000];SN[30000]=(3.0/2.0-1.0/30000.0-1/30001.0)/2.0;for(N=30000;N>=2;N--)SN[N-1]=SN[N]-1.0/(N*N-1);printf("从大到小顺序计算:\nSN[1000]=%f\nSN[10000]=%f\nSN[30000]=%f\n",SN[1000],SN[10000],SN[30000]);SN[2]=(3.0/2-1.0/2.0-1/3.0)/2.0;for(N=3;N<=30000;N++)SN[N]=SN[N-1]+1.0/(N*N-1);printf("从小到大顺序计算:\nSN[1000]=%f\nSN[10000]=%f\nSN[30000]=%f\n",SN[1000],SN[10000],SN[30000]);}结果:实习题21.用牛顿法求下列方程的根02xex01xxe02lgxx源代码:#include#includetypedeffloat(*p)(float);floatff1(floatx){returnx*x-exp(x);}floatff2(floatx){returnx*exp(x)-1;}floatff3(floatx){returnlog(x)+x-2;}floatanswer(float(*p)(float)){intk=2;floatm=1,n=-1,x2,a,b,c;if(p==ff3)n=2;printf("x[0]=%.4f,x[1]=%.4f,",m,n);while(1){if(fabs(m-n)<1e-4)break;a=p(n)*(n-m);b=p(n)-p(m);c=a/b;x2=n-c;m=n;n=x2;printf("x[%d]=%.4f,",k,x2);k++;if(k%3==0)printf("\n");}if(k%3!=0)printf("\n");printf("iterationtimes:%d,roots:%.4f\n",k-2,n);return0;}main(){printf("x*x-exp(x),\n");answer(ff1);printf("x*exp(x)-1,\n");answer(ff2);printf("lg(x)+x-2,\n");answer(ff3);return0;}结果:2.编写一个割线法的程序,求解上述各方程源代码:#include#includefloatgexian(float,float);floatf(float);main(){inti,j;floatx1=2.2;floatx2=2,x3;scanf("%d",&i);if(i==1)printf("%f",x1);elseif(i==2)printf("%f",x2);else{for(j=3;j<=i;j++){x3=gexian(x1,x2);x1=x2;x2=x3;}printf("%f",gexian(x1,x2));}}floatf(floatx){return(x*x-exp(x));}floatgexian(floatx1,floatx2){return(x2-(f(x2)/(f(x2)-f(x1)))*(x2-x1));}结果:实习题31用列主元消去法解下列方程组;43443233312)1(421432143214321xxxxxxxxxxxxxxx4341220332282)2(432132143214321xxxxxxxxxxxxxxx源程序:#include#includevoidColPivot(float*,int,float[]);voidColPivot(float*c,intn,floatx[]){inti,j,t,k;floatp;for(i=0;i<=n-2;i++){k=i;for(j=i+1;j<=n-1;j++)if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))k=j;if(k!=i)for(j=i;j<=n;j++){p=*(c+i*(n+1)+j);*(c+i*(n+1)+j)=*(c+k*(n+1)+j);*(c+k*(n+1)+j)=p;}for(j=i+1;j<=n-1;j++){p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));for(t=i;t<=n;t++)*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));}}for(i=n-1;i>=0;i--){for(j=n-1;j>=i+1;j--)(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));}}voidmain(){inti;floatx[4];floatc[4][5]={1,1,0,3,4,2,1,-1,1,1,3,-1,-1,3,-3,-1,2,3,-1,4};ColPivot(c[0],4,x);for(i=0;i<=3;i++)printf("x[%d]=%f\n",i,x[i]);}结果:第(1)题第(2)题2、源代码:#includevoidmain(){floatx[4];inti;floata[4][5]={48,-24,0,-12,4,-24,24,12,12,4,0,6,20,2,-2,-6,6,2,16,-2};voidDirectLU(float*,int,float[]);DirectLU(a[0],4,x);for(i=0;i<=3;i++)printf("x[%d]=%f\n",i,x[i]);}voidDirectLU(float*u,intn,floatx[]){inti,r,k;for(r=0;r<=n-1;r++){for(i=r;r<=n;i++)for(k=0;k<=r-1;k++)*(u+r*(n+1)+i)-=*(u+r*(n+1)+k)*(*(u+k*(n+1)+i));for(i=r+1;i<=n-1;i++){for(k=0;k<=r-1;k++)*(u+i*(n+1)+r)-=*(u+i*(n+1)+k)*(*(u+k*(n+1)+r));*(u+i*(n+1)+r)/=*(u+r*(n+1)+r);}}for(i=n-1;i>=0;i--){for(r=n-1;r>=i+1;r--)*(u+i*(n+1)+n)-=*(u+i*(n+1)+r)*x[r];x[i]=*(u+i*(n+1)+n)/(*(u+i*(n+1)+i));}}实习题41、源代码:#includefloatLagrange(floatx[],floaty[],floatxx,intn)//n为(n+1)次插值;{inti,j;float*a,yy=0;a=newfloat[n];for(i=0;i<=n-1;i++){a[i]=y[i];for(j=0;j<=n-1;j++)if(j!=i)a[i]*=(xx-x[j])/(x[i]-x[j]);yy+=a[i];}deletea;returnyy;}voidmain(){floatx[5]={-3.0,-1.0,1.0,2.0,3.0};floaty[5]={1.0,1.5,2.0,2.0,1.0};floatxx1=-2,xx2=0,xx3=2.75,yy1,yy2,yy3;yy1=Lagrange(x,y,xx1,3);yy2=Lagrange(x,y,xx2,3);yy3=Lagrange(x,y,xx3,3);printf("x1=%-20f,y1=%f\n",xx1,yy1);printf("x2=%-20f,y2=%f\n",xx2,yy2);printf("x3=%-20f,y3=%f\n",xx3,yy3);}结果:2、源代码:#includefloatLagrange(floatx[],floaty[],floatxx,intn)//n为(n+1)次插值;{inti,j;float*a,yy=0;a=newfloat[n];for(i=0;i<=n-1;i++){a[i]=y[i];for(j=0;j<=n-1;j++)if(j!=i)a[i]*=(xx-x[j])/(x[i]-x[j]);yy+=a[i];}deletea;returnyy;}voidmain(){floatx[6]={0.30,0.42,0.50,0.58,0.66,0.72};floaty[6]={1.04403,1.08462,1.11803,1.15603,1.19817,1.23223};floatxx1=0.46,xx2=0.55,xx3=0.60,yy1,yy2,yy3;yy1=Lagrange(x,y,xx1,6);yy2=Lagrange(x,y,xx2,6);yy3=Lagrange(x,y,xx3,6);printf("x1=%-20f,y1=%f\n",xx1,yy1);printf("x2=%-20f,y2=%f\n",xx2,yy2);printf("x3=%-20f,y3=%f\n",xx3,yy3);}结果:3、源代码:#include#defineN3voidDifference(floaty[],floatf[4][4],intn){intk,i;f[0][0]=y[0];f[1][0]=y[1];f[2][0]=y[2];f[3][0]=y[3];for(k=1;k<=n;k++)for(i=0;i<=(N-k);i++)f[i][k]=f[i+1][k-1]-f[i][k-1];return;}voidmain(){inti,k=1;floata,b=1,m=21.4,t=1.4,f[4][4]={0};floatx[5]={20,21,22,23,24};floaty[5]={1.30103,1.32222,1.34242,1.36173,1.38021};Difference(y,f,N);a=f[0][0];for(i=1;i<=N;i++){k=k*i;b=b*(t-i+1);a=a+b*f[0][i]/k;}printf("x(k)\n");for(i=0;i<=4;i++)printf("%-20f",x[i]);printf("\ny(k)\n");for(i=0;i<=4;i++)printf("%-20f",y[i]);for(k=1;k<=3;k++){printf("\nF(%d)\n",k);for(i=0;i<=(3-k);i++){printf("%-20f",f[i][k]);}}printf("\n");printf("f(%f)=%-20f",m,a);printf("\n");}结果:实习题52、源代码:#include#includevoidmain(){inti,n;floata[2];floatx[15]={1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8},z[15];floaty[15]={33.4,79.50,122.65,159.05,189.15,214.15,238.65,252.50,267.55,280.50,296.65,301.40,310.40,318.15,325.15};for(n=0;n<=14;n++)//增加了数组z;{z[n]=log(y[n]/x[n]);}voidApprox(float[],float[],int,int,float[]);Approx(x,z,15,1,a);//变成一次拟合;//for(i=0;i<=1;i++)//printf("a[%d]=%f\n",i,a[i]);printf("a=exp(a[0])=%f\n",exp(a[0]));printf("b=-a[1]=%f\n",-a[1]);}voidApprox(floatx[],floaty[],intm,intn,floata[]){inti,j,t;float*c=newfloat[(n+1)*(n+2)];floatpower(int,float);voidColPivot(float*,int,float[]);for(i=0;i<=n;i++){for(j=0;j<=n;j++){*(c+i*(n+2)+j)=0;for(t=0;t<=m-1;t++)*(c+i*(n+2)+j)+=power(i+j,x[t]);}*(c+i*(n+2)+n+1)=0;for(j=0;j<=m-1;j++)*(c+i*(n+2)+n+1)+=y[j]*power(i,x[j]);}ColPivot(c,n+1,a);deletec;}voidColPivot(float*c,intn,floatx[]){inti,j,t,k;floatp;for(i=0;i<=n-2;i++){k=i;for(j=i+1;j<=n-1;j++)if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))k=j;if(k!=i)for(j=i;j<=n;j++){p=*(c+i*(n+1)+j);*(c+i*(n+1)+j)=*(c+k*(n+1)+j);*(c+k*(n+1)+j)=p;}for(j=i+1;j<=n-1;j++){p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));for(t=i;t<=n;t++)*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));}}for(i=n-1;i>=0;i--){for(j=n-1;j>=i+1;j--)(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));}}floatpower(inti,floatv){floata=1;while(i--)a*=v;returna;}结果:实习题61、源代码:(1)#include#includefloatCotes(float(*f)(float),floata,floatb,intn){intk;floatc,c1=0,c2,c3,c4;floath=(b-a)/n;c2=(*f)(a+h/4);c3=(*f)(a+h/2);c4=(*f)(a+3*h/4);for(k=1;k<=n-1;k++){c1+=(*f)(a+k*h);c2+=(*f)(a+k*h+h/4);c3+=(*f)(a+k*h+h/2);c4+=(*f)(a+k*h+3*h/4);}c=h/90*(7*((*f)(a)+(*f)(b))+14*c1+32*c2+12*c3+32*c4);returnc;}floatf(floatx){return1/sqrt(1+x*x*x);}voidmain(){inti,n=4;floatc;for(i=0;i<=4;i++){c=Cotes(f,0,1,n);printf("C(%d)=%f\n",n,c);n*=2;}}(2)#include#includefloatCotes(float(*f)(float),floata,floatb,intn){intk;floatc,c1=0,c2,c3,c4;floath=(b-a)/n;c2=(*f)(a+h/4);c3=(*f)(a+h/2);c4=(*f)(a+3*h/4);for(k=1;k<=n-1;k++){c1+=(*f)(a+k*h);c2+=(*f)(a+k*h+h/4);c3+=(*f)(a+k*h+h/2);c4+=(*f)(a+k*h+3*h/4);}c=h/90*(7*((*f)(a)+(*f)(b))+14*c1+32*c2+12*c3+32*c4);returnc;}floatf(floatx){//return1/sqrt(1+x*x*x);if(x==0)return1;elsereturnsin(x)/x;}voidmain(){inti,n=4;floatc;for(i=0;i<=4;i++){//c=Cotes(f,0,1,n);c=Cotes(f,0,5,n);printf("C(%d)=%f\n",n,c);n*=2;}}结果:(1)(2)实习题7一、改进欧拉法1、#include#includedoubleAdams(double(*f)(doublex,doubley),doublex0,doubley0,doubleh,intN){for(intn=0;n#includeusingnamespacestd;//f为函数的入口地址,x0、y0为初值,xn为所求点,step为计算次数doubleRunge_Kuta(double(*f)(doublex,doubley),doublex0,doubley0,doublexn,longstep){doublek1,k2,k3,k4,result;doubleh=(xn-x0)/step;if(step<=0)return(y0);if(step==1){k1=f(x0,y0);k2=f(x0+h/2,y0+h*k1/2);k3=f(x0+h/2,y0+h*k2/2);k4=f(x0+h,y0+h*k3);result=y0+h*(k1+2*k2+2*k3+k4)/6;}else{doublex1,y1;x1=xn-h;y1=Runge_Kuta(f,x0,y0,xn-h,step-1);k1=f(x1,y1);k2=f(x1+h/2,y1+h*k1/2);k3=f(x1+h/2,y1+h*k2/2);k4=f(x1+h,y1+h*k3);result=y1+h*(k1+2*k2+2*k3+k4)/6;}printf("%lg\n",result);return(result);}intmain(void){doublef(doublex,doubley);doublex0=0,y0=0,k;doublex,y,step;longi;step=0.1;cout.precision(10);//for(i=0;i<=10;i++)//{//x=x0+i*step;//cout<voidRunge_Kutta(float(*f)(floatx,floaty),floata,floatb,floaty0,intN,floatyy[]){floatx=a,y=y0,K1,K2,K3,K4;floath=(b-a)/N;inti;for(i=1;i<=3;i++){K1=(*f)(x,y);K2=(*f)(x+h/2,y+h*K1/2);K3=(*f)(x+h/2,y+h*K2/2);K4=(*f)(x+h/2,y+h*K3);y=y+h*(K1+2*K2+2*K2+2*K3+K4)/6;x=a+i*h;yy[i-1]=y;}}voidAdams(floata,floatb,intN,float(*f)(floatx,floaty),floaty0){inti;floaty1,y2,y,yp,yc,yy[3],h,x;printf("x[0]=%f\ty[0]=%f\n",a,y0);Runge_Kutta(f,a,b,y0,N,yy);y1=yy[0];y2=yy[1];y=yy[2];h=(b-a)/N;for(i=1;i<=3;i++)printf("x[%d]=%f\ty[%d]=%f\n",i,a+i*h,i,yy[i-1]);for(i=3;i
本文档为【计算方法与实习上机题答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥18.9 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
天山书童
暂无简介~
格式:pdf
大小:308KB
软件:PDF阅读器
页数:0
分类:教育学
上传时间:2021-02-03
浏览量:41