資源描述:
《數(shù)值與分析上機實驗報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、.數(shù)值分析上機實驗報告......《數(shù)值分析》上機實驗報告1.用Newton法求方程X7-X4+14=0在(0.1,1.9)中的近似根(初始近似值取為區(qū)間端點,迭代6次或誤差小于0.00001)。1.1理論依據(jù):設(shè)函數(shù)在有限區(qū)間[a,b]上二階導(dǎo)數(shù)存在,且滿足條件令故以1.9為起點如此一次一次的迭代,逼近x的真實根。當(dāng)前后兩個的差<=ε時,就認(rèn)為求出了近似的根。本程序用Newton法求代數(shù)方程(最高次數(shù)不大于10)在(a,b)區(qū)間的根。......1.2C語言程序原代碼:#include#includemain(
2、){doublex2,f,f1;doublex1=1.9;//取初值為1.9do{x2=x1;f=pow(x2,7)-28*pow(x2,4)+14;f1=7*pow(x2,6)-4*28*pow(x2,3);x1=x2-f/f1;}while(fabs(x1-x2)>=0.00001
3、
4、x1<0.1);//限制循環(huán)次數(shù)printf("計算結(jié)果:x=%f",x1);}1.3運行結(jié)果:1.4MATLAB上機程序functiony=Newton(f,df,x0,eps,M)d=0;fork=1:Miffeval(df,x0)==0d=2;brea
5、kelsex1=x0-feval(f,x0)/feval(df,x0);ende=abs(x1-x0);x0=x1;ife<=eps&&abs(feval(f,x1))<=epsd=1;breakendend......ifd==1y=x1;elseifd==0y='迭代M次失敗';elsey='奇異'endfunctiony=df(x)y=7*x^6-28*4*x^3;Endfunctiony=f(x)y=x^7-28*x^4+14;End>>x0=1.9;>>eps=0.00001;>>M=100;>>x=Newton('f','df',x0
6、,eps,M);>>vpa(x,7)1.5問題討論:1.使用此方法求方解,用誤差來控制循環(huán)迭代次數(shù),可以在誤差允許的范圍內(nèi)得到比較理想的計算結(jié)果。此程序的不足之處是,所要求解的方程必須滿足上述定理的四個條件,但是第二和第四個條件在計算機上比較難以實現(xiàn)。2.Newton迭代法是一個二階收斂迭代式,他的幾何意義Xi+1是Xi的切線與x軸的交點,故也稱為切線法。它是平方收斂的,但它是局部收斂的,即要求初始值與方程的根充分接近,所以在計算過程中需要先確定初始值。3.本題在理論依據(jù)部分,討論了區(qū)間(0.1,1.9)兩端點是否能作為Newton迭代的初值,結(jié)
7、果發(fā)現(xiàn)0.1不滿足條件,而1.9滿足,能作為初值。另外,該程序簡單,只有一個循環(huán),且為順序結(jié)構(gòu),故采用do-while循環(huán)。當(dāng)然也可以選擇for和while循環(huán)。......2.已知函數(shù)值如下表:x12345f(x)00.693147181.09861231.38629441.6094378x678910f(x)1.79175951.94591012.0794452.19722462.3025851f’(x)f’(1)=1f’(10)=0.1試用三次樣條插值求f(4.563)及f’(4.563)的近似值。2.1理論依據(jù)這里,所以只要求出,就能得出
8、插值函數(shù)S(x)。求的方法為:這里最終歸結(jié)為求解一個三對角陣的解。......用追趕法解三對角陣的方法如下:,綜上可得求解方程Ax=d的算法:2.2C語言程序代碼:#include#includevoidmain(){inti,j,m,n,k,p;doubleq10,p10,s4,g4,x0,x1,g0=1,g9=0.1;;doubles[10][10];doublea[10],b[10],c[10],d[10],e[10],x[10],h[9],u[9],r[9];doublef[10]={0,0.693147
9、18,1.0986123,1.3862944,1.6094378,1.7917595,1.9459101,2.079445,2.1972246,2.3025851};printf("請依次輸入xi:");for(i=0;i<=9;i++)......scanf("%lf",&e[i]);//求h矩陣for(n=0;n<=8;n++)h[n]=e[n+1]-e[n];d[0]=6*((f[1]-f[0])/h[0]-g0)/h[0];d[9]=6*(g9-(f[9]-f[8])/h[8])/h[8];for(j=0;j<=7;j++)d[j+1
10、]=6*((f[j+2]-f[j+1])/h[j+1]-(f[j+1]-f[j])/h[j])/(h[j]+h[j+1]);for(m=