數(shù)值分析編程題c語言匯總_第1頁
數(shù)值分析編程題c語言匯總_第2頁
數(shù)值分析編程題c語言匯總_第3頁
數(shù)值分析編程題c語言匯總_第4頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)值分析實(shí)習(xí)報(bào)告- 1 -數(shù)值分析實(shí)習(xí)報(bào)告上機(jī)實(shí)習(xí)題一一、題目: b與已知A12.38412,2.115237,-1.061074,1.112336,-0.113584,0.718719,1.742382,3.067813,-2.0317432.115237,19.141823,-3.125432,-1.012345,2.189736,1.563849,-0.784165,1.112348,3.123124-1.061074,-3.125432,15.567914,3.123848,2.031454,1.836742,-1.056781,0.336993,-1.0101 031.112336,

2、-1.012345,3.123848,27.108437,4.101011,-3.741856,2.101023,-0.71828,-0.037585A=-0.113584,2.189736,2.031454,4.101011,19.897918,0.431637,-3.111223,2.121314,1.7841370.718719,1.563849,1.836742,-3.741856,0.431637,9.789365,-0.103458,-1.103456,0.2384171.742382,-0.784165,-1.056781,2.101023,-3.111223,-0.103458

3、,14.7138465,3.123789,-2.2134743.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.00001b=2.1874369,33.992318,-25.173417,0.84671695,1.784317,-86.612343,1.1101230,4.719345,-5.67843921用 Househol

4、d 變換,把A 化為三對角陣B (并打印(0)=0, 迭代9 次) =1.4,X 。 2用超松弛法求解BX=bB )。(取松弛因子3用列主元素消去法求解BX=b 。二、解題方法的理論依據(jù):1 、用 Householder變換的理論依據(jù) 1令 A0=A,a(ij)1=a(ij),已知 Ar_1 即 Ar_1=a(ij)r 2 Sr=sqrt(pow(a,2) 3 a(r)=Sr*Sr+abs(a(r+1,r)*Sr 4 y(r)=A(r_1)*u?/a? 5 Kr=(/2)*Ur的轉(zhuǎn)置 *Yr/a? 6 Qr=Yr-Kr*Ur 7 Ar=A(r-1)-(Qr*Ur的轉(zhuǎn)置 +Ur*Qr 的轉(zhuǎn)置 )

5、 r=1,2, ,n-22 、用超松弛法求解(m)(m-1)其基本思想:在高斯方法已求出x,x的基礎(chǔ)上,組合新的序列,從而加快收斂速度。其算式:Bi i 1 X i 1Bi i X iBi i1 X i 1 biBi i 1B i i 1b i X iX i 1X 0i1Bi iBi iB i i X i wX i X 0iX 0i X i 其中是超松弛因子,當(dāng)>1 時(shí),可以加快收斂速度3 、用消去法求解用追趕消去法求Bx=b 的方法:d1i 1 bi a1i 2 Bi 1 i ,- 2 -數(shù)值分析實(shí)習(xí)報(bào)告1i i1i1 Bib 1 1 Bi i c ,q10=0 , u10=0 ,8

6、,i),i 1,2ib1a1i q11q1ici(u1i(d1ia1iu1i)( b1i a1iq1i1),i 1,2,9x9=u19xi q1i x i1 u1i, i 8,7,1三、 1計(jì)算程序:#include math.h#include stdio.h#define ge 8void main()int sign(double x);double a9=12.38412,2.115237, -1.061074,1.112336, -0.113584,0.718719,1.742382,3.067813, -2.031743, 2.115237,19.141823, -3.125432

7、, -1.012345,2.189736,1.563849, -0.784165,1.112348,3.123124, -1.061074, -3.125432,15.567914,3.123848,2.031454,1.836742, -1.056781,0.336993, -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.1

8、11223,2.121314,1.784317, 0.718719,1.563849,1.836742, -3.741856,0.431637,9.789365, -0.103458, -1.103456,0.238417, 1.742382, -0.784165, -1.056781,2.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

9、,3.123124, -1.010103, -0.037585,1.784317,0.238417, -2.213474,4.446782,40.00001;double k,h,s,w;int i,j,n,m,g;double u9,x19,y9,q9,b1910,x9;double b9=2.1874369,33.992318, -25.173417,0.84671695,1.784317, -86.612343,1.1101230,4.719345, -5.6784392;for(j=0;j<7;+j)/*Household變換*/s=0.0;for(i=j+1;i<9;+i

10、)s=s+aij*aij;s=sqrt(s);h=(aj+1j>0)?(s*s+s*aj+1j):(s*s-s*aj+1j);for(g=0;g<9;+g)- 3 -數(shù)值分析實(shí)習(xí)報(bào)告if (g<=j)ug=0;else if (g=j+1)ug=aj+1j+s*sign(aj+1j);else ug=agj;for(m=0;m<9;+m)ym=0;for(n=0;n<9;+n)ym=ym+amn*un;ym=ym/h;k=0;for(i=0;i<9;+i)k=k+ui*yi;k=0.5*k/h;for(i=0;i<9;+i)qi=yi-k*ui;for

11、(n=0;n<9;+n)for(m=0;m<9;+m)amn=amn-(qm*un+um*qn);printf(Household:n);for(i=0;i<9;+i)for(j=0;j<9;+j)if (j%9=0);printf(% -9.5f,aij););w=1.4; /* 超松弛法 */ for(i=0;i<9;i+)x1i=0;for(i=0;i<9;i+)for(j=0;j<9;j+)if(i=j)b1ij=0;else b1ij= -aij/aii;for(i=0;i<9;i+)b1i9=bi/aii;- 4 -數(shù)值分析實(shí)習(xí)報(bào)告f

12、or(n=0;n<9;n+)for(i=0;i<9;i+)s=0;for(j=0;j<9;j+)s=s+b1ij*x1j;s=s+b1i9;x1i=x1i*(1-w)+w*s;for(i=0;i<9;i+)if (i=5);牰湩晴尨 ?屨椬砬嬱嵩 ?);u0=a00;/* 以下是消去法*/y0=b0;for(i=1;i<9;i+)qi=aii-1/ui -1;ui=aii-qi*ai -1i;yi=bi-qi*yi-1;xge=yge/uge;for(i=ge -1;i>=0;i - )xi=(yi-aii+1*xi+1)/ui;for(i=0;i<9

13、;i+)if (i=5);printf( x%d=% -10.6f,i,xi);int sign(double x)intz;z=(x>=(1e -6)?1: -1);return(z);2打印結(jié)果:Household:12.38412 -4.89308 0.000000.000000.000000.000000.000000.000000.00000- 5 -數(shù)值分析實(shí)習(xí)報(bào)告-4.89308 25.39842 6.49410 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 6.49410 20.61150 8.24393

14、0.00000 0.00000 0.00000 0.00000 0.000000.000000.000008.243930.000000.00000-0.000000.000000.000000.000000.000000.000000.000000.000000.000000.000000.000004.5345016.00612 4.881440.000000.000000.000000.000000.000000.000000.000004.8814426.01332 -4.50363 -0.000000.000000.000000.000000.000000.000000.00000-

15、4.50363 21.25406 4.504500.000000.000000.00000-0.00000 0.000000.00000-0.00000 4.5045014.53412x0=1.073409x1=2.272579x2= -2.856601x3=2.292514x4=2.112165x5= -6.422586x6=1.357802x7=0.634259x8= -0.587042x0=1.075799x1=2.275744x2= -2.855515x3=2.293099x4=2.112634x5= -6.423838x6=1.357923x7=0.634244x8= -0.5872

16、66四、問題討論:此程序具有很好的通用性。在GS 方法的基礎(chǔ)上,已經(jīng)求出重新組合得新的序列,而在此新序列收斂速度加快。x 的第m 解,第m-1基礎(chǔ)上,經(jīng)過上機(jī)實(shí)習(xí)題二一、題目:已知函數(shù)值如下表:x12345f(x)00.69314781.09861231.38629441.6094378x678910f(x)1.7917951.94591012.0794452.19722462.3025851f'(x)f'(1)=1f'(0)=0.1試用三次樣條插值求f(4.563) 及 f (4.563) 的近似值。二、解題方法的理論依據(jù):任意劃分的三彎矩插值法以及方程組解法中的三對

17、角陣追趕算法。應(yīng)用三次樣條插值法能夠?qū)瘮?shù)產(chǎn)生很好的逼近效果。而追趕算法又具有計(jì)算量少、方法簡單、算法穩(wěn)定的特點(diǎn)。方法應(yīng)用條件:適用于求復(fù)雜函數(shù)在給定區(qū)間內(nèi)某一點(diǎn)的函數(shù)值,給出函數(shù)f(x) 在區(qū)間 a,b 中的n 個(gè)插值點(diǎn),并且給出函數(shù)在區(qū)間端點(diǎn)處的值。三、 1計(jì)算程序:#include stdio.h#include math.h#define n 11- 6 -數(shù)值分析實(shí)習(xí)報(bào)告#define ge 11void main()int i,m;double e,s,E,q12,u12,y12,c12,w12;double b12=2,0,4.15888308,6.5916738,8.31776

18、64,9.6566268,10.750557,11.6754606,12.47667,13.1833476,13.8155106,14.0155106;ann -1=4;ann=2;for(i=1;i<11;i+)aii -1=1;aii=4;aii+1=1;u0=a00;/* 消去法求ci*/y0=b0;for(i=1;i<12;i+)qi=aii-1/ui -1;ui=aii-qi*ai -1i;yi=bi -qi*yi-1;cge=yge/uge;for(i=ge -1;i>=0;i - )ci=(yi -aii+1*ci+1)/ui;牰湩晴尨請輸入要插的值:);sca

19、nf(%lf,&E);for(i=0;i<12;i+)e=fabs(E -i);if(e>=2)wi=0;else if(e<=1)wi=0.5*fabs(e*e*e)-e*e+2.0/3.0;elsewi=( -1.0/6.0)*fabs(e*e*e)+e*e-2*fabs(e)+4.0/3.0;s=0.0;for(i=0;i<12;i+)s=s+ci*wi;printf(%lf)=%lf,E,s););- 7 -數(shù)值分析實(shí)習(xí)報(bào)告牰湩晴尨請輸入要求的導(dǎo)數(shù)的值:);scanf(%d,&m);printf(' (%d)=%lfn,m,(cm+1 -

20、cm -1)/2.0);輸出結(jié)果:請輸入要插的值 :4.563f(4.563)=1.517932請輸入要求的導(dǎo)數(shù)的值 :4.563f'(4.563)= 0.249350四、問題討論:在給均勻分劃的插值函數(shù)x 賦值時(shí),由于使用for循環(huán),誤將xi=i+1寫成 xi=i,導(dǎo)致運(yùn)算錯(cuò)誤。此程序具有一定通用性,對于任意劃分的三彎矩插值法,只許改動xi即可。求解方程組 Mj 時(shí),要用到三對角方程組的追趕法(也稱Thomas 算法)。變量較多,應(yīng)注意區(qū)分。求導(dǎo)時(shí)注意正負(fù)號。上機(jī)實(shí)習(xí)題三一、題目:用 Newton 法求方程74+14=0-28xX在( 0.1,1.9 )中的近似根(初始近似值取為區(qū)間

21、端點(diǎn),迭代6 次或誤差小于0.00001 )。二、解題方法及理論依據(jù):Newton 迭代法是平方收斂于方程f(x)=0 在區(qū)間 a,b 上的唯一解, 收斂速度較快, 循環(huán)次數(shù)少。方法應(yīng)用條件:) f(a)f(b)<0” ) f(x)在區(qū)間 a,b 上不變號 .') f(x) 0''' ) |f(c)|/b-a |f(c)|其中 c 是 a,b 中使 min|f(a),f(b)達(dá)到的一個(gè) , 則對任意時(shí)近似值x? 0a,b,Newton迭代過程為'x= (x)=x -f(x)/f(x),k=1,2,3 kk+1kk 算法:令74 14,f(0.1)

22、0,f (1(fx ) xx28.9) 0633316) 7x0(f (x) 7x112 xx3252k 1k0) x336x 42x(x8f )(x 42 01f(.9) f)(1.9 故以 1.9 為起點(diǎn) f(x) kx x )(xf k x 1.9 0 - 8 -數(shù)值分析實(shí)習(xí)報(bào)告計(jì)算程序: 1 三、#include math.hmain()float x,y,f,f1;scanf(%f,&x);doy=x;*/的表達(dá)式定義f(x)f=pow(y,7)-28*pow(y,4)+14;達(dá)式 '(x)f1=7*pow(y,6)-112*pow(y,3);/*x=y-f/f1;/

23、* Newton0.00001*/控制誤差小于while(fabs(x-y)>=1e-5);/*/定義f*/的表迭代法/* printf(The result of the question is %fn,x);打印結(jié)果: 20.11.9請輸入端點(diǎn)值:3.030577x=0.845497四、問題討論:軸交點(diǎn),故也稱為切線法,它是平方收斂的,的切線與x 是 f(x)在點(diǎn) x 程序較為簡單。它的幾何意義為 xkk+1是否為零。 )f (x 此處取 x=1.9收斂性較好,要注意判斷kk上機(jī)實(shí)習(xí)題四 一、題目:3241.x dxsinx5x3x7)( =0.00001) 。用 Romberg 算

24、法求允許誤差( 1 二、解題方法及理論依據(jù) : Romberg )方法求數(shù)值積分龍貝格((0)=(b-a)/2*f(a)+f(b) T1(l)(l-1)l-1lT=( 1/2 )* T+(b-a)/2* fa+(2i-1)*(b-a)/211k-1m(k)(k-1)mT=4T-T/(4-1)mm+1m三、 1計(jì)算程序 :#include math.hint a=1,b=3;x2 double f(double x)/*求 f(x)=3x1.4(5x+7)sinx的值 */- 9 -數(shù)值分析實(shí)習(xí)報(bào)告double z;z=pow(3,x)*pow(x,1.4)*(5*x+7)*sin(x*x);r

25、eturn (z);ll-1(l)*/ fa+(2i-1)*(b-a)/2(b-a)/2*求 T1 中的 double s(int l)/*extern a,b; int i,m;double z=0.0;m=pow(2,l-1);for(i=1;i<=m;i+)z+=f(a+1.0*(2*i-1)/m);z*=1.0*(b-a)/m;return (z);main() extern a,b; double T2020; int m,n,l=0;T10=(b-a)/2.0*(f(a)+f(b);*/)算法龍貝格 ( Romberg do/*l+;T1l=0.5*(T1l-1+s(l);n

26、=l-1;(0)*/ 求解Tfor(m=2;n>=0;m+,n-)/*lTmn=(pow(4,m-1)*Tm-1n+1-Tm-1n)/(pow(4,m-1)-1.0);while(fabs(Tl0-Tl-10)>=1e-5);printf(T%d0=%f,l,Tl0);打印結(jié)果: 2T80=440.536017四、問題討論:(k) 外推法,構(gòu)造新序列,計(jì)算新分點(diǎn)的值時(shí),需要復(fù)化梯形公式,還要用到RichardsonT此程序較繁,計(jì)算1(0)(0)時(shí)控制循環(huán)。程序具有廣泛的通用性。|T-T|<這些數(shù)值個(gè)數(shù)成倍增加。應(yīng)用給出所要求的誤差,當(dāng)l+1l上機(jī)實(shí)習(xí)題五一、題目: Rung

27、e-Kutta法求解用定步長四階dy/dt=11dy/dt=y32-10-數(shù)值分析實(shí)習(xí)報(bào)告-100y dy/dt=1000-1000y332(0)=0 y1(0)=0 y2(0)=0y3(0.1),(i=1,2,3)(0.045), y(0.085), yh=0.0005,打印 y(0.025), yiiii二、解題方法及理論依據(jù):Runge-Kutta 解法高階方程組的Y=Y+(1/6)*(K+2K+2K +K)4n+12n31K=h*F(x,Y)n1nK=h*F(x+h/2,Y+K/2)1n2nK=h*F(x+h/2,Y+K/2)23nnK=h*F(x+h,Y+K)3n4n適用條件:使用于

28、那些用普通的積分方法解不了的微分方程組. 只要知道函數(shù)之間的關(guān)系和初值就可以不用解出表達(dá)式而直接求解函數(shù)在要求點(diǎn)的值。三、 1計(jì)算程序:#include <stdio.h>main()double t,h=0.0005,y1=0,y2=0,y3=0,ky15,ky25,ky35; for(t=h;t<=0.1001;t+=h) /*Runge-Kutta算法具體過程 */ ky11=h*1; ky21=h*y3; ky31=h*(1000-1000*y2-100*y3); ky12=h*1; ky22=h*(y3+ky31/2);ky32=h*(1000-1000*(y2+ky21/2)-100*(y3+ky31/2);ky13=h*1; ky23=h*(y3+ky32/2);ky33=h*(1000-1000*(y2+ky22/2)-100*(y3+ky32/2);ky14=h*1; ky24=h*(y3+ky33);ky34=h*(1000-1000*(y2+ky23)-100*(y3+ky33);y1+=(ky11+

溫馨提示

  • 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

提交評論