版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)值分析上機(jī)題習(xí)題117.上機(jī)題舍入誤差與有效數(shù)N設(shè)Sn1,其精確值為(1)編制按從大到小的順序Sn(2)編制按從小到大的順序Sn12211N14L32112(N1)1-,計(jì)算Sn的通用程序.11,計(jì)算Sn的通用程序.(3)按兩種順序分別計(jì)算002,S,S106,并指出有效位數(shù).編制程序時(shí)用單精度通過本上機(jī)題你明白了什么?按從大到小的順序計(jì)算Sn的通用程序?yàn)?#include<iostream.h>floatsum(floatN)floatj,s,sum=0;for(j=2;j<=N;j+)s=1/(j*j-1);sum+=s;)returnsum;按從小到大的順序計(jì)算Sn的
2、通用程序?yàn)?#include<iostream.h>floatsum(floatN)floatj,s,sum=0;for(j=N;j>=2;j-)s=1/(j*j-1);sum+=s;)returnsum;)從大到小的順序的值從小到大的順序的值精確值后效位數(shù)從大到小從小到大S1020.7400490.740050.74004965S1040.7498520.74990.749944S1060.7498520.7499990.74999936)通過本上機(jī)題,看出按兩種不同的順序計(jì)算的結(jié)果是不相同的,按從大到小的順序計(jì)算的值與精確值有較大的誤差,計(jì)算得到的結(jié)果的有效位數(shù)少.致計(jì)算
3、結(jié)果的精度有所降低,的算法,其結(jié)果的相對(duì)誤差較小.而按從小到大的順序計(jì)算的值與精確值吻合.從大到小的順序計(jì)算機(jī)在進(jìn)行數(shù)值計(jì)算時(shí)會(huì)出現(xiàn)“大數(shù)吃小數(shù)的現(xiàn)象,導(dǎo)我們?cè)谟?jì)算機(jī)中進(jìn)行同號(hào)數(shù)的加法時(shí),采用絕對(duì)值較小者先加20.(上機(jī)題)Newton迭代法(1)給定初值Xo及容許誤差,編制Newton法解方程f(x)0根的通用程序.給定方程f(x)x3/3x0,易知其有三個(gè)根X1J3,x20,x3J3.1.由Newton方法的局部收斂性可知存在0,當(dāng)比(,)時(shí),Newton迭代序列收斂于根x2.試確定盡可能大的2.試取假設(shè)干初始值,觀察當(dāng)x0(1),(1,),(,),(,1),(1,)時(shí)floatx0,x1
4、,a;intk=0;cout<<"請(qǐng)輸入初值x0:"cin>>x0;doa=-f(x0)/df(x0);x1=x0+a;k+;x0=x1;while(fabs(a)>eps);cout<<k<<'t'<<x0;輸出迭代的次數(shù)和根值Newton序列是否收斂以及收斂于哪一個(gè)根.(3)通過本上機(jī)題,你明白了什么?解:(1)編制的通用程序:#include<iostream.h>#include<math.h>#defineeps0.000001/給定容許誤差floatf(fl
5、oatx)定義函數(shù)f(x)floatf;f=x*x*x/3-x;/f(x)的表達(dá)式;return(f);floatdf(floatx)定義函數(shù)df(x),計(jì)算f(x)的導(dǎo)函數(shù)floatdf;df=x*x-1;/f(x)導(dǎo)函數(shù)的表達(dá)式;return(df);voidmain(void)(2)計(jì)算迭代序列收斂于根x2的盡可能大的#include<iostream.h>#include<math.h>voiddelay(intn)/定義延時(shí)函數(shù)for(n=10000;n>0;n-);#defineeps0.000001floatf(floatx)定義函數(shù)f(x)floa
6、tf;f=x*x*x/3-x;/f(x)的表達(dá)式;的函數(shù)為:return(f);floatdf(floatx)定義函數(shù)df(x),計(jì)算f(x)的導(dǎo)函數(shù)floatdf;df=x*x-1;/f(x)導(dǎo)函數(shù)的表達(dá)式;return(df);=0.774,即在區(qū)間-0.774,0.774內(nèi)迭代序列*對(duì)于不同得初始值U斂于不同的根,Xo在-8,-1內(nèi)收斂于Xi,在-0.774,0.774內(nèi)收斂于x2,在1,+°°內(nèi)收斂于x3,但在內(nèi)0.774,1和一1,0.774均可能收斂于*一一.一、一一.X1和x3.X,x2,x3分別為萬程的精確解.分析:對(duì)于不同的初值,迭代序列會(huì)收斂于不同的根,
7、所以在某個(gè)區(qū)間內(nèi)求根對(duì)于初值的選取有很大的關(guān)系.產(chǎn)生上述結(jié)果的原因是區(qū)間不滿足大范圍收斂的條件.intjudgement(floatz)(intcount=5;floatx0,x1,type,type1;x0=z;while(count->0)(x1=x0-f(x0)/df(x0);type=fabs(x1);type1=fabs(x1-x0);調(diào)試值用cout<<"count="<<count<<'t'<<"type="<<type<<'t'&
8、lt;<"type1="<<type1<<'n'if(fabs(x1-x0)<eps)return1;x0=x1;delay(30000);調(diào)試值用當(dāng)步長為0.001時(shí),程序計(jì)算出的8的為8收斂于0.return0;voidmain(void)(floatdelta=0;intflag=1;while(flag=1)(cout<<方程的根為:"<<'n'delta+=eps;flag=judgement(delta);cout<<"輸出方程根收斂的區(qū)間
9、彳K:n"cout<<delta-eps;輸出收斂的區(qū)間值39.(上機(jī)題)列主元Gauss消去法對(duì)于某電路的分析,歸結(jié)為求解線性方程組RI=Vo其中,R=31-13000-10000-1335-90-1100000-931-100000000-1079-30000-9000-3057-70-500000-747-300000000-3041000000-50027-2000-9000-229V=(-15,27,-23,0,-20,12,-7,7,10)#include<iostream.h>cout<<'n'#include<
10、math.h>輸出數(shù)組voidmain(void)cout<<<<'n'/進(jìn)行第一行和第一inti,j,n,k,q;/floata1011,s10,s110;intt=1;cout<<"請(qǐng)輸入n的值:"for(i=1;i<=n;i+)cin>>n;si=ai1;cout<<"輸入數(shù)組a:"<<endl;floatmax=fabs(s1);for(i=1;i<=n;i+)for(i=2;i<=n;i+)for(j=1;j<=(n+1);j+
11、)if(fabs(si)>max)cin>>aij;給矩陣a賦值for(i=1;i<=n;i+)max=fabs(si);t=i;for(j=1;j<=(n+1);j+)cout<<aij<<'t'for(j=1;j<=(n+1);j+)(1)編制解n階線性方程組Ax=b的列主元三角分解法的通用程序;(2)用所編制的程序解線性方程組RI=V,并打印出解向量,保存五位有效數(shù);(3)本編程之中,你提升了哪些編程水平?程序?yàn)椋篴U元素的求取'<<'n'/進(jìn)行第k步分解'/a加尸b;
12、)/進(jìn)行第一列主元互換for(i=2;i<=n;i+)ai1=ai1/max;/第一列除以a11for(i=1;i<=n;i+)(for(j=1;j<=(n+1);j+)cout<<aij<<'t'cout<<'n')/輸出進(jìn)行第一步變換的數(shù)組acout<<"for(k=2;k<=n;k+)(for(i=k;i<=n;i+)(floatsum=0;for(q=1;q<k;q+)sum+=aiq*aqk;s1i=aik卜sum;)intl=k;floatm=fabs(s1
13、k);for(i=k;i<=n;i+)比擬第k步分解的第k列值的大小(if(fabs(s1i)>m)(m=fabs(s1i);l=i;返回行值)for(j=1;j<=n+1;j+)交換兩行元素(floats2=akj;akj=alj;結(jié)果:方程的解為:x1=-0.28923,x2=0.34544,x3=-0.71281,x4=-0.22061,x5=-0.43040,x6=alj=s2;)for(j=k;j<=n+1;j+)算出第k行行元素的值(floatsum1=0;for(q=1;q<k;q+)sum1+=akq*aqj;akj=akj-sum1;)for(i
14、=k+1;i<=n;i+)/算出第k列列元素的值(floatsum2=0;for(q=1;q<k;q+)sum2+=aiq*aqk;aik=(aik-sum2)/(akk);)第k步分解結(jié)束for(i=1;i<=n;i+)(for(j=1;j<=(n+1);j+)cout<<aij<<'t'cout<<'n')輸出改變后的數(shù)組/輸出解/floatx10;for(i=n-1;i>=1;i-)(xn=ann+1/ann;floatsum3=0;for(j=i+1;j<=n;j+)sum3+=ai
15、j*xj;xi=(ain+1-sum3)/aii;)回代過程for(i=1;i<=n;i+)(cout<<'x'<<i<<'='<<xi<<endl;/輸出解向量)0.15431,x7=-0.057823,x8=0.20215,x9=0.29023.分析:我感覺是提升了查錯(cuò)誤點(diǎn)的水平和編循環(huán)語句的水平,即利用很規(guī)整的迭代公式進(jìn)行編程.另外列主元三角分解法的階梯步驟有了更深的了解37.(上機(jī)題)3次樣條插值函數(shù)(1)編制求第一型3次樣條插值函數(shù)的通用程序(2)汽車曲線型值點(diǎn)的數(shù)據(jù)如下:xi01234
16、5678910Yi2.513.304.044.705.225.545.785.405.575.705.80端點(diǎn)條件為y0=0.8,y10=0.2.用所編制程序求車門的3次樣條插值函數(shù)S(x),并打印出S(i+0.5)(i=0,1,9)o解:通用程序:#include<iostream.h>voidmain(void)floatx11;/存放數(shù)組xjfloaty11;/存放數(shù)組yjfloath11;/存放數(shù)組hjfloatu11;/存放數(shù)組ujfloatv11;/存放數(shù)組vjfloatd11;/存放數(shù)組djfloatM11;/存放數(shù)組Mjfloatb11;/存放數(shù)組bjfloatt1
17、1,l11,yy11,s4,aa1,aa2,aa3,aa4;floats110;inti,j,n;floatxx;/x為區(qū)間值將初值初始化cout<<"請(qǐng)輸入n的值:n"cin>>n;cout<<"輸入數(shù)組x:n"for(i=0;i<=n;i+)cin>>xi;cout<<"輸入數(shù)組y:n"for(i=0;i<=n;i+)cin>>yi;輸入端點(diǎn)值floatdf2;cout<<"輸入兩個(gè)端點(diǎn)值:n"for(i=0;i&l
18、t;2;i+)cin>>dfi;利用書本上的算法求出所需要的值求出hj的值for(j=0;j<=n-1;j+)hj=xj+1-xj;cout<<'h'<<''<<j<<''<<'='<<hj<<'t'cout<<endl;求出uj和vj的初值v0=1;un=1;for(j=1;j<=n-1;j+)uj=hj-1/(hj-1+hj);vj=hj/(hj-1+hj);求出dj的值for(j=1;j&l
19、t;n;j+)dj=6*(yj+1-yj)/hj-(yj-yj-1)/hj-1)/(hj+hj-1);d0=6*(y1-y0)/h0-df0)/h0;dn=6*(df1-(yn-yn-1)/hn-1)/hn-1;for(j=1;j<=n;j+)cout<<'u'<<''<<j<<T<<'='<<uj<<'t'cout<<endl;for(j=0;j<n;j+)cout<<'v'<<
20、39;'<<j<<T<<'='<<vj<<'t'cout<<endl;for(j=0;j<=n;j+)(cout<<'d'<<''<<j<<''<<'='<<dj<<'t')cout<<endl;利用書本上的追趕法求解方程組for(i=0;i<=n;i+)bi=2;cout<<endl;
21、t0=b0;yy0=d0;消元過程for(i=1;i<=n;i+)li=ui/ti-1;ti=bi-li*vi-1;yyi=di-li*yyi-1;回代過程Mn=yyn/tn;for(i=n-1;i>=0;i-)Mi=(yyi卜vi*Mi+1)/ti;(2)編制的程序求車門的3次樣條插值函數(shù)將Mj的值輸出for(i=0;i<=n;i+)cout<<'M'<<''<<i<<''<<'='<<Mi<<endl;輸出插值多項(xiàng)式的系數(shù)fo
22、r(j=0;j<n;j+)s0=yj;s1=(yj+1-yj)/hj-(Mj/3+Mj+1/6)*hj;s2=Mj/2;s3=(Mj+1-Mj)/(6*hj);cout<<"當(dāng)x的值在區(qū)間"<<'x'<<''<<j<<''<<"至u"<<'x'<<',<<(j+1)<<''<<"時(shí),輸出插值多項(xiàng)式的系數(shù):n"fo
23、r(intk=0;k<4;k+)cout<<'s'<<''<<k<<''<<'='<<sk<<'t'cout<<endl;S(x):x屬于區(qū)間0,1時(shí);S(x)=2.51+0.8(x)-0.0014861(x)(x)-0.00851395(x)(x)(x)x屬于區(qū)間1,2時(shí);S(x)=3.3+0.771486(x-1)-0.027028(x-1)(x-1)-0.00445799(x-1)(x-1)(x-1)x屬于區(qū)
24、間2,3時(shí);S(x)=4.04+0.704056(x-2)-0.0404019(x-2)(x-2)-0.0036543(x-2)(x-2)(x-2)x屬于區(qū)間3,4時(shí);S(x)=4.7+0.612289(x-3)-0.0513648(x-3)(x-3)-0.0409245(x-3)(x-3)(x-3)x屬于區(qū)間4,5時(shí);S(x)=5.22+0.386786(x-4)-0.174138(x-4)(x-4)+0.107352(x-4)(x-4)(x-4)x屬于區(qū)間5,6時(shí);S(x)=5.54+0.360567(x-5)+0.147919(x-5)(x-5)-0.268485(x-5)(x-5)(x
25、-5)x屬于區(qū)間6,7時(shí);S(x)=5.78-0.149051(x-6)-0.657537(x-6)(x-6)+0.426588(x-6)(x-6)(x-6)x屬于區(qū)間7,8時(shí);S(x)=5.4-0.184361(x-7)+0.622227(x-7)(x-7)-0.267865(x-7)(x-7)(x-7)x屬于區(qū)間8,9時(shí);S(x)=5.57+0.256496(x-8)-0.181369(x-8)(x-8)+0.0548728(x-8)(x-8)(x-8)x屬于區(qū)間9,10時(shí);S(x)=5.7+0.058376(x-9)-0.0167508(x-9)(x-9)+0.0583752(x-9)(
26、x-9)(x-9)S(0.5)=2.90856S(3.5)=4.98819S(6.5)=5.59441S(9.5)=5.7323S(1.5)=3.67843S(4.5)=5.38328S(7.5)=5.42989S(2.5)=4.38147S(5.5)=5.7237S(8.5)=5.6597623.(上機(jī)題)常微分方程初值問題數(shù)值解(1)編制RK4方法的通用程序;(2)編制AB4方法的通用程序(由RK4提供初值);(3)編制AB4-AM4預(yù)測校正方法的通用程序(由RK4提供初值);(4)編制帶改良的AB4-AM4預(yù)測校正方法的通用程序(由RK4提供初值)(5)對(duì)于初值問題Hx2y2(0x1.5
27、)ty(0)3取步長h0.1,應(yīng)用(1)(4)中的四種方法進(jìn)行計(jì)算,并將計(jì)算結(jié)果和精確解3y(x)3/(1x)作比擬;(6)通過本上機(jī)題,你能得到哪些結(jié)論?解:程序?yàn)椋?include<iostream.h>#include<fstream.h>#include<stdlib.h>#include<math.h>ofstreamoutfile("data.txt");/此處定義函數(shù)f(x,y)的表達(dá)式用戶可以自己設(shè)定所需要求得函數(shù)表達(dá)式doublef1(doublex,doubley)doublef1;f1=(-1)*x*x*
28、y*y;returnf1;/此處定義求函數(shù)精確解的函數(shù)表達(dá)式doublef2(doublex)doublef2;f2=3/(1+x*x*x);returnf2;/此處為精確求函數(shù)解的通用程序voidaccurate(doublea,doubleb,doubleh)doublex100,accurate100;x0=a;inti=0;outfile<<"輸出函數(shù)準(zhǔn)確值的程序結(jié)果:n"doxi=x0+i*h;accuratei=f2(xi);outfile<<"accurate"<<i<<"=&quo
29、t;<<accuratei<<'n'i+;while(i<(b-a)/h+1);此處為經(jīng)典Runge-Kutta公式的通用程序voidRK4(doublea,doubleb,doubleh,doublec)inti=0;doublek1,k2,k3,k4;doublex100,y100;y0=c;x0=a;outfile<<"輸出經(jīng)典Runge-Kutta公式的程序結(jié)果:n"do(xi=x0+i*h;k1=f1(xi,yi);k2=f1(xi+h/2),(yi+h*k1/2);k3=f1(xi+h/2),(yi+h*
30、k2/2);k4=f1(xi+h),(yi+h*k3);yi+1=yi+h*(k1+2*k2+2*k3+k4)/6;outfile<<"y"<<""<<i<<"="<<yi<<'n'i+;while(i<(b-a)/h+1);/此處為4階Adams顯式方法的通用程序voidAB4(doublea,doubleb,doubleh,doublec)(doublex100,y100,y1100;doublek1,k2,k3,k4;y0=c;x0=a
31、;outfile<<"輸出4階Adams顯式方法的程序結(jié)果:n"for(inti=0;i<=2;i+)(xi=x0+i*h;k1=f1(xi,yi);k2=f1(xi+h/2),(yi+h*k1/2);k3=f1(xi+h/2),(yi+h*k2/2);k4=f1(xi+h),(yi+h*k3);yi+1=yi+h*(k1+2*k2+2*k3+k4)/6;intj=3;y10=y0;y11=y1;y12=y2;y13=y3;do(xj=x0+j*h;y1j+1=y1j+(55*f1(xj,y1j)-59*f1(xj-1,y1j-1)+37*f1(xj-2,
32、y1j-2)-9*f1(xj-3,y1j-3)*h/24;n'j+;while(j<(b-a)/h+1);/主函數(shù)voidmain(void)(doublea,b,h,c;cout<<"輸入上下區(qū)間、步長和初始值:n"cin>>a>>b>>h>>c;accurate(a,b,h);RK4(a,b,h,c);AB4(a,b,h,c);結(jié)果為:y(xi)和精確值和由經(jīng)典Runge-Kutta公式得出的結(jié)果列在下面的表格中,以及精確值數(shù)值解的誤差:iXiyiy(xi)|y(xi)-yi|0033010.12
33、.9972.9971.87138e-00720.22.976192.976193.91665e-00730.32.921132.921137.58342e-00740.42.819552.819551.61101e-00650.52.666662.666673.17735e-00660.62.46712.467115.00551e-00670.72.23382.23385.77233e-00680.81.984121.984134.12954e-00690.91.735111.735111.15554e-007101.01.500011.55.80668e-006111.11.287011.2
34、871.13075e-005121.21.099721.099711.54242e-005131.30.9383970.938381.77272e-005141.40.80130.8012821.83754e-005151.50.6857320.6857141.78e-005由AB4方法得出的結(jié)果為:Y10=3y15=2.66467y110=1.50219y115=0.685335y11=2.997y16=2.4652y111=1.28876y12=2.97619y17=2.23308y112=1.10072y13=2.92113y18=1.98495y113=0.93871y14=2.818
35、39y19=1.73704y114=0.801135通過本上機(jī)題我明白了各種求微分方程的數(shù)值方法,經(jīng)典Runge-Kutta公式,AB4方法以及Runge-Kutta公式的精度,四AB4-AM4預(yù)測校正方法求解公式的精度是不同的.其中經(jīng)典階Adams顯式方法(AB4)具有4階精度.10.拋物線方程Crank-Nicolson格式(1)編制用Crank-Nicolson格式求拋物線方程22u/t-au/x=f(x,t)(0<x<l,0tT)<u(x,0)=(x)(0x1)二u(0,t)=x,u(1,t)=t(0<t1)數(shù)值解的通用程序.(2)就a=1,f(x,t)=0,x
36、=exp(x),t=exp(t),t=exp(1+t),M=40,N=40,輸入點(diǎn)(0.2,1.0),(0.4,1.0),(0.6,1.0),(.8,1.0)4點(diǎn)處u(x,t)的近似值.(3)所給方程的精確解為u(x,t)=exp(x+t),將步長反復(fù)二分,從(0.2,1.0),(0.4,1.0),(0.6,1.0),(0.8,1.0)4點(diǎn)處精確解與數(shù)值解的誤差觀察當(dāng)步長縮小一半時(shí),誤差以什么規(guī)律縮小.算法:此題選擇空間步長1.h=0.025,時(shí)間步長I=0.025置初值;2. 通過點(diǎn)(i-1,k),(i-1,k+1),(i,k),(i+1,k),(i+1,k+1)的值;3. 輸出結(jié)果求解點(diǎn)(I,k+1)原程序:#include<iostream>#include<math.h>floath=0.025,k=0.025;intm=40;intn=40;floaty4040,r=a*k/(h*h);voidInput()inti,j;cout<<"LoadingInputData."<<endl;for(i=0;i<m;i+)for(j=0;j<n;j+)if(i=j)a皿=1+r;for(j=0;j&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年在線銷售合作合同書范本
- 長期金融咨詢服務(wù)合同模板
- 店面接盤協(xié)議書格式
- 長期供貨協(xié)議樣本
- 工業(yè)產(chǎn)品購銷合同模板
- 勞動(dòng)關(guān)系解除協(xié)議
- 個(gè)人參與創(chuàng)業(yè)團(tuán)隊(duì)入股協(xié)議
- 建筑工程清包工作合同參考
- 2023年高考地理第三次模擬考試卷(江蘇B卷)(解析版)
- 貨物分期付款購買協(xié)議樣本
- 2023年科研誠信理論知識(shí)考核試題及答案
- 北京版八年級(jí)生物下冊(cè)《線蟲動(dòng)物和軟體動(dòng)物》教學(xué)設(shè)計(jì)
- 歷史(中職)PPT全套教學(xué)課件
- 小學(xué)綜合實(shí)踐活動(dòng)-筆記自然教學(xué)課件設(shè)計(jì)
- Unit 6 Understanding ideas Hot!Hot!Hot!課件高中英語外研版(2019)必修第三冊(cè)
- 加油站加油機(jī)設(shè)備安全管理制度
- 醫(yī)學(xué)影像技術(shù)專業(yè)(群)建設(shè)方案
- 【招標(biāo)控制價(jià)編制研究文獻(xiàn)綜述(論文)4800字】
- 鐘表經(jīng)典款式勞力士黑鬼
- 學(xué)校崗位廉政風(fēng)險(xiǎn)排查登記表
- 肝癌原發(fā)性肝癌的綜合治療
評(píng)論
0/150
提交評(píng)論