还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
计算方法与实习实验报告学院:学号:姓名完成日期:实习题一
4、设,已知其精确值为1)编制按从大到小的顺序计算Sn的程序;2)编制按从小到大的顺序计算Sn的程序;3)按两种顺序分别计算S1000,S_____,S30000,并指出有效位数实验代码C语言程序如下#includeiostream#includec__thusingnamespa__std;int__in{floatSn=0;intN;cinN;forfloatj=2;j=N;j++{Sn=1/j*j-1+Sn;}cout从小到大计算的结果为Snendl;Sn=0;forj=N;j=2;j--{Sn=1/j*j-1+Sn;}cout从大到小计算的结果为Snendl;return0;}运行窗口实习题二
1、用牛顿法求下列方程的根1)实验代码C语言程序代码如下#includeiostream#includec__th#defineN100#defineeps1e-6#defineeta1e-8usingnamespa__std;floatNewtonfloatffloatfloatflfloatfloatx0{floatx1d;intk=0;do{x1=x0-fx0/flx0;ifk++N||fabsflx1eps{cout发散endl;break;}d=fabsx11x1-x0:x1-x0/x1;x0=x1;coutx=x0endl;}whilefabsdepsfabsfx1eta;returnx1;}floatffloatx{returnx+log10x-2;}floatflfloatx{return1+1/x;}void__in{floatx0y0;cinx0;y0=Newtonfflx0;cout方程的根为y0endl;}运行窗口实习题三
1、用列主元消去法解方程组1)实验代码C语言程序代码如下:#includeiostream#includec__thusingnamespa__std;voidColPivotfloat*cintnfloatx[]{intijtk;floatp;fori=0;i=n-2;i++{k=i;forj=i+1;j=n-1;j++iffabs*c+j*n+1+ifabs*c+k*n+1+ik=j;ifk!=jforj=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;}forj=i+1;j=n-1;j++{p=*c+j*n+1+i/*c+i*n+1+i;fort=i;t=n;t++*c+j*n+1+t-=p**c+i*n+1+t;}}fori=n-1;i=0;i--{forj=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;}}int__in{voidColPivotfloat*intfloat[];inti;floatx
[4];floatc
[4]
[5]={1103421-1113-1-13-3-123-14};ColPivotc
[0]4x;fori=0;i=3;i++printf[x%d]=%f\nix[i];return0;}运行窗口
4、编写用追赶法解三对角线性方程组的程序,并解下列方程组2),其中A10x10=-411-411-
41......1-411-4b=-27-15…-15实验代码C语言程序如下#includeiostream#includec__thusingnamespa__std;voidColPivotfloat*cintnfloatx[]{intijtk;floatp;fori=0;i=n-2;i++{k=i;forj=i+1;j=n-1;j++iffabs*c+j*n+1+ifabs*c+k*n+1+ik=j;ifk!=jforj=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;}forj=i+1;j=n-1;j++{p=*c+j*n+1+i/*c+i*n+1+i;fort=i;t=n;t++*c+j*n+1+t-=p**c+i*n+1+t;}}fori=n-1;i=0;i--{forj=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;}}int__in{voidColPivotfloat*intfloat[];inti;floatx
[10];floatc
[10]
[11]={-4100000000-271-410000000-1501-41000000-15001-4100000-150001-410000-1500001-41000-15000001-4100-150000001-410-1500000001-41-15000000001-4-15};ColPivotc
[0]10x;fori=0;i=9;i++printf[x%d]=%f\nix[i];return0;}运行窗口实习题四
2、按下列数据Xi
0.
300.
420.
500.
580.
660.72Yi
1.
044031.
084621.
118031.
156031.
198171.23223作5次插值,并求X1=
0.46,X2=
0.55,X3=
0.60时的函数近似值实验代码C语言程序如下#includeiostream#includecstdiousingnamespa__std;#defineN5voidDifferen__floatx[]floaty[]intn{float*f=newfloat[n+1];intki;fork=1;k=n;k++{f
[0]=y[k];fori=0;ik;i++f[i+1]=f[i]-y[i]/x[k]-x[i];y[k]=f[k];}deletef;return;}int__in{inti;floatabcvarx=
0.46vary=
0.55varz=
0.60;floatx[N+1]={
0.
300.
420.
500.
580.
660.72};floaty[N+1]={
1.
044031.
084621.
118031.
156031.
198171.23223};Differen__xyN;a=y[N];b=y[N];c=y[N];fori=N-1;i=0;i--a=a*varx-x[i]+y[i];fori=N-1;i=0;i--b=b*vary-x[i]+y[i];fori=N-1;i=0;i--c=c*varz-x[i]+y[i];printfNn%f=%f\nvarxa;printfNn%f=%f\nvaryb;printfNn%f=%f\nvarzc;return0;}运行窗口实习题六
1、用复化梯形公式和复化辛卜生公式计算积分I1(f)=dx观察n为多少时,所得近似值具有6位有效数字实验代码C语言程序如下#includeiostream#includec__th#includeio__nipusingnamespa__std;int__in{doublef1=0f2=0p=0q=0e=
0.000001abhx1x2x3;intij=1n1=1n2=1;cout计算结果如下endl;cout以下为用复化梯形公式的计算结果endl;coutsetw15f1setw15前后项差值endl;fori=0;;i++{a=0;b=
3.14159/2;h=b-a/n1;forj=1;j=n1;j++{x1=a+j-1*h;x2=a+j*h;f1+=h/2*sqrt1+cosx1*cosx1+sqrt1+cosx2*cosx2;iffabsf1-p
0.000001break;}coutsetw15f1setw15fabsf1-pendl;iffabsf1-p
0.000001break;p=f1;n1++;f1=0;}coutsetprecision7用复化梯形公式计算得f1=f1迭代次数为n=n1endlendl;cout以下为用复化辛卜生公式的计算结果endl;coutsetw15f1setw15前后项差值endl;fori=0;;i++{a=0;b=
3.14159/2;h=b-a/n2;forj=1;j=n2;j++{x1=a+j-1*h;x2=a+j*h;x3=a+j-
0.5*h;f2+=h/6*sqrt1+cosx1*cosx1+4*sqrt1+cosx3*cosx3+sqrt1+cosx2*cosx2;iffabsf2-q
0.000001break;}coutsetw15f2setw15fabsf2-qendl;iffabsf2-q
0.000001break;q=f2;n2++;f2=0;}coutsetprecision7用复化辛卜生公式计算得f1=f2迭代次数为n=n2endl;return0;}运行窗口实习题七
2、用四阶龙格-库塔公式(取h=
0.1)解下列微分方程组初值问题
(1) 实验代码C语言程序如下#includestdio.hvoidRunge_Kuttafloat*f1floatxfloaty1floaty2float*f2floatxfloaty1floaty2floatafloatbfloaty0intN{floatx=aK1K2K3K4L1L2L3L4y1=y0y2=y0;floath=b-a/N;inti;printfx
[0]=%f\ty1
[0]=%f\ty2
[0]=%f\nxy1y2;fori=1;i=N;i++{K1=*f1xy1y2;L1=*f2xy1y2;K2=*f1x+h/2y1+h*K1/2y2+h*L1/2;L2=*f2x+h/2y1+h*K1/2y2+h*L1/2;K3=*f1x+h/2y1+h*K2/2y2+h*L2/2;L3=*f2x+h/2y1+h*K2/2y2+h*L2/2;K4=*f1x+hy1+h*K3y2+h*L3;L4=*f2x+hy1+h*K3y2+h*L3;y1=y1+h*K1+2*K2+2*K3+K4/6;y2=y2+h*L1+2*L2+2*L3+L4/6;x=a+i*h;printfx[%d]=%f\ty1[%d]=%f\ty2[%d]=%f\nixiy1iy2;}}floatf1floatxfloaty1floaty2{return120-2*y1+2*y2;}floatf2floatxfloaty1floaty2{return2*y1-5*y2;}void__in{floata=0b=1y0=0;Runge_Kuttaf1f2aby010;}运行窗口小结通过对计算方法一个学期的学习,我受益匪浅理论和上机实践的结合让我对知识有了更进一步的理解和掌握并让我能学会运用C++的功能来代替有些笔算起来很复杂的计算不仅方便了个人,而且还紧紧跟随现代科技发展的脚步12。