數(shù)值分析上機(jī)作業(yè)_第1頁
數(shù)值分析上機(jī)作業(yè)_第2頁
數(shù)值分析上機(jī)作業(yè)_第3頁
數(shù)值分析上機(jī)作業(yè)_第4頁
數(shù)值分析上機(jī)作業(yè)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、*第一題 程序*一 程序要求:已知a=12.3841202.115237-1.0610741.112336-0.1135840.7187191.7423823.067813-2.0317432.11523719.141823-3.125432-1.0123452.1897361.563849-0.7841651.1123483.123124-1.061074-3.12543215.5679143.1238482.0314541.836742-1.0567810.336993-1.0101031.112336-1.0123453.12384827.1084374.101011-3.7418562

2、.101023-0.718280-0.037585-0.1135842.1897362.0314544.10101119.8979190.431637-3.1112232.1213141.7843170.7187191.5638491.836742-3.7418560.4316379.789365-0.103458-1.1034560.2384171.742382-0.784165-1.0567812.101023-3.111223-0.10345814.7138463.123789-2.2134743.0678131.1123480.336993-0.7182802.121314-1.103

3、4563.12378930.7193344.446782-2.0317433.123124-1.010103-0.0375851.7843170.238417-2.2134744.44678240.00001b=(2.1874369 33.992318 -25.173417 0.84671695 1.784317 -86.612343 1.1101230 4.719345,-5.6784392);1.用householder變換,把a(bǔ)化為三對角陣b(并打印b).2.用超松弛法求解bx=b(取松弛因子=1.4,x(0)=0,迭代9次)3.用列主元素消去法求解bx=b。二解題算法1.househo

4、lder算法步驟: 令a0=a, aij(1)=aij,已知ar-1 即ar-1=(aij(r) sr=(air(r )2)1/2 r=sr2+|a(r)r+1,r|srur=0,,0,a(r)r+1,r+sign(a(r)r+1,r)sr,a(r)r+2,r,anr(r)t yr=ar-1ur/r kr= urtyr/2r qr=yr-krur ar=ar-1-(qrurt+urqrt), r=(1,2,,n-2)2. sor解題算法 其基本思想是在高斯方法已求出x(m),x(m-1)的基礎(chǔ)上,經(jīng)過重新組合的新序列,而此新序列收斂速度加快。其算式是:xi(m)=(1-)xi(m-1)+(bi

5、jxi(m)+ xj(m-1)+gi)其中是超松弛因子,當(dāng)1時(shí),可以加快收斂速度。3. 列主元素消去法程序算法 對矩陣作恰當(dāng)?shù)恼{(diào)整,選取絕對值盡量大的元素作為主元素。然后進(jìn)行行變換,把矩陣化為上三角陣,再進(jìn)行回代,求出方程的解。三 主要程序#include #define n 9main()float en+1,fn+1,x1n+1,a0nn,bnn,yn,un,wn,x0n;float xn,qn,q1n,u1n,ma,a1n,s,s2,k,b1n;static float bn=2.1874369,33.992318,-25.173417,0.8471695,1.784317,-86.61

6、2343,1.1101230,4.719345,-5.56784392;int i,j,r,sign;float ann=12.38412,2.115237,-1.061074,1.112336,-0.113584,0.718719,1.742382,3.067813,-2.031743,2.115237,19.141823,-3.125432,-1.012345,2.189736,1.563849,-0.784163,1.112348,3.123124,-1.061074,-3.125432,15.567914,3.123848,2.031454,1.836742,-1.056781,0.3

7、36993,-1.010103,1.112336,-1.012345,3.123848,27.108437,4.101011,-3.741856,2.101023,-0.71828,-0.037585,-0.113584,2.189736,2.031454,4.101011,19.897918,0.431637,-3.111223,2.121314,1.784317,0.718719,1.563849,1.836742,-3.741856,0.431637,9.789365,-0.103458,-1.103456,0.238417,1.742384,-0.784165,-1.056781,2.

8、101023,-3.111223,-0.103458,14.713846,3.123789,-2.213474,3.067813,1.112348,0.336993,-0.71828,2.121314,-1.103456,3.123789,30.719334,4.446782,-2.031743,3.123124,-1.010103,-0.037585,1.784317,0.238417,-2.213474,4.446782,40.00001; clrscr(); for(i=0;in;i+) for(j=0;jn;j+) a0ij=aij; for(r=0;rn-2;r+) s=0; for

9、(i=r+1;i0) sign=1; if(ar+1r0) sign=-1; for(i=0;in;i+) if(i=r) ui=0; else if(i=r+1) ui=ar+1r+sign*s; else ui=air; for(i=0;in;i+) yi=0; for(j=0;jn;j+) yi=yi+aij*uj; yi=yi/ma; k=0; for(i=0;in;i+) k=k+ui*yi; k=k/(2*ma); for(i=0;in;i+) qi=yi-k*ui; for(i=0;in;i+) for(j=0;jn;j+) aij=aij-qi*uj-qj*ui; for(i=

10、0;in;i+) for(j=0;jn;j+) bij=aij; for(i=0;in;i+) for(j=0;jn;j+) printf(%8.4f,bij); printf(n); for(i=0;in;i+) x0i=0; xi=0; for(i=0;in;i+) x0=-(b01/b00)*x1+b0/b00; x0=1.4*x0-0.4*x00;for(j=1;jn-1;j+) xj=-(bjj-1/bjj)*xj-1-(bjj+1/bjj)*x0j+1+bj/bjj; xj=1.4*xj-0.4*x0j; xn-1=-(bn-1n-2/bn-1n-1)*x0n-2+bn-1/bn-

11、1n-1; xn-1=1.4*xn-1-0.4*x0n-1; for(j=0;jn;j+) x0j=xj; printf(n x:n); for(i=0;in;i+) printf(x%d=%10.6fn,i,xi); for(i=0;in-1;i+) b1i+1=bi; a1i+2=bi+1i; ei+1=bii+1;b1i+1=bii; b1n=bn-1n-1; q10=0; u10=0; a11=0; fn=bn-1; b1n=bn-1n-1; for(i=1;i0;i-) x1i=q1i*x1i+1+u1i; printf(n x:n); for(i=1;in+1;i+) printf

12、(x%d=%10.6fn,i,x1i); getch(); 第一題程序結(jié)果:12.3841 -4.8931 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -4.8931 25.3984 6.4941 -0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 6.4941 20.6115 8.2439 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 8.2439 23.4228-13.8801 0.0000 0.0000 0.0000 0.0

13、000 -0.0000 0.0000 0.0000-13.8801 29.6983 4.5345 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 4.5345 16.0061 4.8814 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 4.8814 26.0133 -4.5037 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -4.5037 21.2541 4.5045 0.0000 -0.0000 -0.0000 0.0000 0.

14、0000 -0.0000 0.0000 4.5045 14.5341 x: x0= 1.073156 x1= 2.273598 x2= -2.853854x3= 2.295630x4= 2.109620x5= -6.432651x6= 1.349386x7= 0.649445x8= -0.555408 x:x1= 0.000042x2= 0.000105x3= -0.000380x4= 0.000867x5= 0.001238x6= -0.005451x7= 0.016724x8= 0.090691x9= -0.411195*第三題 程序*/第三題:用三次樣條插值法求插值及導(dǎo)數(shù)/一.程序要求已

15、知十點(diǎn)函數(shù)值及起點(diǎn)和終點(diǎn)的導(dǎo)數(shù)值,要求用三次樣條插值求f(4.563)及f(4.563)的近似值.x12345f(x)00.693147181.09861231.38629441.6094378x678910f(x)1.79175951.94591012.0794452.19722462.3025851f(x)f(x)=1f(x)=0.1二.程序算法對于均勻分劃的插值函數(shù)取b樣條函數(shù)為基函數(shù),則任意樣條函數(shù)可用線形組合表示,寫成矩陣的形式: 用三對角陣的追趕法求解 追趕法步驟為以下遞推式 y=(x-xj)/h 用上述得出的解代入公式,并根據(jù)3(y)的取值 得該題的解 f(x)=s(x) f(x

16、)=s(x)且 s(x)= 且3(x)的表達(dá)式為以下所示 三次樣條插值法求插值及導(dǎo)數(shù)#include /*本程序利用已知數(shù)據(jù),采用樣條插值公式,求解在某點(diǎn)的函數(shù)值及導(dǎo)數(shù)*/#includemain()float func1(float t1),func2(float t2); float b12=2,0,6*0.69314718,6*1.0986123,6*1.3862944, 6*1.6094378,6*1.7917595,6*1.9459101, 6*2.0794415,6*2.1972246,6*2.3025851,0.2; float c12=0,0,0,0,0,0,0,0,0,0,0

17、,0; float x12=0,1,2,3,4,5,6,7,8,9,10,11; int i,j,k; int a1212=-1,0,1,0,0,0,0,0,0,0,0,0, 1,4,1,0,0,0,0,0,0,0,0,0, 0,1,4,1,0,0,0,0,0,0,0,0, 0,0,1,4,1,0,0,0,0,0,0,0, 0,0,0,1,4,1,0,0,0,0,0,0, 0,0,0,0,1,4,1,0,0,0,0,0, 0,0,0,0,0,1,4,1,0,0,0,0, 0,0,0,0,0,0,1,4,1,0,0,0, 0,0,0,0,0,0,0,1,4,1,0,0, 0,0,0,0,0,0,

18、0,0,1,4,1,0, 0,0,0,0,0,0,0,0,0,1,4,1, 0,0,0,0,0,0,0,0,0,-1,0,1; float b1,b2; float s1=0,s2=0; for (k=0;k=500;k+) for (i=0;i=11;i+) b1=0; b2=0; for (j=0;j=i-1;j+) b1=b1+aij*cj; for (j=i+1;j=11;j+) b2=b2+aij*cj; ci=(bi-b1-b2)/aii; for (j=0;j=2) m=0; else if(fabs(t1)=2.0/3.0) n=0; else if(-0.5=fabs(t2)

19、&fabs(t2)=0.5) n=-t2*t2+3.0/4.0; else n=0.5*t2*t2-(3.0/2.0)*fabs(t2)+9.0/8.0; return(n); 第三題程序結(jié)果: 用三次樣條插值公式求某點(diǎn)的近似函數(shù)值及導(dǎo)數(shù)的解為: 在4.563處的插值為:s(4.563)=1.517932 在3.000處的導(dǎo)數(shù)為:s(3.00)=0.334969*第四題程序*/*第四題:用newton法求方程的根*/用newton 法求方程 x7-28*x4+14=0在(0.1, 1.9)中的近似根(初始值為區(qū)間端點(diǎn),迭代6次或誤差小于0.00001)用牛頓迭代法求7次方程的根,當(dāng)n=1時(shí) 所

20、以設(shè)其初始值為1.9,方程為: x7-28x4+14=0 牛頓迭代公式為 f(x1)是曲線f(x)在x1點(diǎn)處的切線斜率 因此 x2是上述切線與x軸的交點(diǎn)。求出x2后再找出f(x2),既f(x)在x2處的切線此切線與軸交于x3。如此一次一次的迭代,逼近x的真實(shí)根。當(dāng)前后兩個(gè)求出 的差=時(shí),就認(rèn)為求出了近似的根#include /*本程序采用牛頓迭代法求方程的根*/main()int n; float a,b,x2,x1; n=1; x2=1.2; do /*迭代過程*/ x1=x2; a=x1*x1*x1*x1*x1*x1*x1-28*x1*x1*x1*x1+14; b=7*x1*x1*x1*x

21、1*x1*x1-112*x1*x1*x1; x2=x1-a/b; n=n+1; while(fabs(x2-x1)=1e-5); printf(%dn,n); printf(%fn,x2);getch(); 第四題程序結(jié)果: newton迭代法求方程的近似根為:0.845497*第五題程序*/*數(shù)值分析第五題:數(shù)值積分的romberg算法*/用romberg算法 當(dāng)就停止運(yùn)算。#include /*本程序采用romberg迭代法求積分的值*/#includemain()float sc(float z); float t112,t29,t38,t47,t56; float t65,t74,t8

22、3,t92; float g10=0,0,0,0,0,0,0,0,0,0; int i,j,k; t10=36*sin(1)+27*pow(3,1.4)*22*sin(9); for(j=1;j=8;j+) for(i=1;i=pow(2,j-1);i+) gj-1=gj-1+sc(1+(2*i-1)*pow(2,1-j); t1j=0.5*(t1j-1+pow(2,2-j)*gj-1); for(k=1;k=8;k+) t2k-1=(4*t1k-t1k-1)/(4-1); for(k=1;k=7;k+) t3k-1=(4*4*t2k-t2k-1)/(4*4-1); for(k=1;k=6;k

23、+) t4k-1=(pow(4,3)*t3k-t3k-1)/(pow(4,3)-1); for(k=1;k=5;k+) t5k-1=(pow(4,4)*t4k-t4k-1)/(pow(4,4)-1); for(k=1;k=4;k+) t6k-1=(pow(4,5)*t5k-t5k-1)/(pow(4,5)-1); for(k=1;k=3;k+) t7k-1=(pow(4,6)*t6k-t6k-1)/(pow(4,6)-1); for(k=1;k=2;k+) t8k-1=(pow(4,7)*t7k-t7k-1)/(pow(4,7)-1); t90=(pow(4,8)*t81-t80)/(pow(4,8)-1); printf(%fn,t90); getch(); float sc(float z) float n; n=pow(3,z)*pow(z,1.4)*(5*z+7)*sin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論