數(shù)值分析上機題目_第1頁
數(shù)值分析上機題目_第2頁
數(shù)值分析上機題目_第3頁
數(shù)值分析上機題目_第4頁
數(shù)值分析上機題目_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗一實驗項目:共軛梯度法求解對稱正定的線性方程組實驗內(nèi)容:用共軛梯度法求解下面方程組(1) 迭代20次或滿足時停止計算。編制程序:儲存m文件function x,k=CGmethod(A,b)n=length(A);x=2*ones(n,1);r=b-A*x;rho=r*r;k=0;while rho10(-11) & k10(-7)&k104 k=k+1; if k=1 p=r; else beta=(r1*r1)/(r*r);p=r1+beta*p; end r=r1; w=A*p; alpha=(r*r)/(p*w); x=x+alpha*p; r1=r-alpha*w;end運行程序

2、:clear,clcn=1000;A=hilb(n);b=sum(A);x,k=CGmethod(A,b)實驗二1、 實驗目的:用復化Simpson方法、自適應復化梯形方法和Romberg方法求數(shù)值積分。實驗內(nèi)容:計算下列定積分(1) (2) (3) 實驗要求:(1)分別用復化Simpson公式、自適應復化梯形公式計算要求絕對誤差限為,輸出每種方法所需的節(jié)點數(shù)和積分近似值,對于自適應方法,顯示實際計算節(jié)點上離散函數(shù)值的分布圖;(2)分析比較計算結(jié)果。程序:syms xf=x6/10-x2+x %定義函數(shù)f(x)n=input(輸入所求導數(shù)階數(shù):) f2=diff(f,x,n) %求f(x)的n

3、階導數(shù)(1)復化梯形clcclearsyms x %定義自變量xf=inline(x6/10-x2+x,x) %定義函數(shù)f(x)=x*exp(x),換函數(shù)時只需換該函數(shù)表達式即可f2=inline(3*x4 - 2,x) %定義f(x)的二階導數(shù),輸入程序1里求出的f2即可。f3=-(3*x4 - 2) %因fminbnd()函數(shù)求的是表達式的最小值,且要求表達式帶引號,故取負號,以便求最大值e=0.5*10(-7) %精度要求值 a=0 %積分下限b=2 %積分上限x1=fminbnd(f3,1,2) %求負的二階導數(shù)的最小值點,也就是求二階導數(shù)的最大值點對應的x值for n=2: %求等分

4、數(shù)n Rn=-(b-a)/12*(b-a)/n)2*f2(x1) %計算余項 if abs(Rn)e %用余項進行判斷 break % 符合要求時結(jié)束 endendh=(b-a)/n %求hTn1=0 for k=1:n-1 %求連加和 xk=a+k*h Tn1=Tn1+f(xk)endTn=h/2*(f(a)+2*Tn1+f(b)z=exp(2)R=Tn-z %求已知值與計算值的差stem(xk,Tn1);fprintf(用復化梯形算法計算的結(jié)果 Tn=)disp(Tn)fprintf(等分數(shù) n=)disp(n) %輸出等分數(shù)fprintf(已知值與計算值的誤差 R=)disp(R)(2)

5、復化Simpsonclcclearsyms x %定義自變量xf=inline(x6/10-x2+x,x) %定義函數(shù)f(x)=x*exp(x),換函數(shù)時只需換該函數(shù)表達式即可f2=inline(36*x2,x) %定義f(x)的四階導數(shù),輸入程序1里求出的f2即可f3=-(36*x2) %因fminbnd()函數(shù)求的是表達式的最小值,且要求表達式帶引號,故取負號,一邊求最大值e=5*10(-8) %精度要求值 a=0 %積分下限b=2 %積分上限x1=fminbnd(f3,1,2) %求負的四階導數(shù)的最小值點,也就是求四階導數(shù)的最大值點對應的x值for n=2: %求等分數(shù)n Rn=-(b-

6、a)/180*(b-a)/(2*n)4*f2(x1) %計算余項 if abs(Rn)e %用余項進行判斷 break % 符合要求時結(jié)束 endendh=(b-a)/n %求hSn1=0 Sn2=0for k=0:n-1 %求兩組連加和 xk=a+k*h xk1=xk+h/2 Sn1=Sn1+f(xk1) Sn2=Sn2+f(xk)end Sn=h/6*(f(a)+4*Sn1+2*(Sn2-f(a)+f(b) %因Sn2多加了k=0時的值,故減去f(a)z=exp(2)R=Sn-z %求已知值與計算值的差fprintf(用Simpson公式計算的結(jié)果 Sn=)disp(Sn)fprintf(

7、等分數(shù) n=)disp(n) fprintf(已知值與計算值的誤差 R=)disp(R)結(jié)果:用復化梯形算法計算的結(jié)果 Tn= 1.6674等分數(shù) n= 24764已知值與計算值的誤差 R= -6.3976用Simpson公式計算的結(jié)果 Sn= 1.0434等分數(shù) n= 76已知值與計算值的誤差 R= -6.0216用復化梯形算法計算的結(jié)果 Tn= 0.8985等分數(shù) n= 1119已知值與計算值的誤差 R= -6.1665用Simpson公式計算的結(jié)果 Sn= 0.9406等分數(shù) n= 8已知值與計算值的誤差 R= -6.1245用復化梯形算法計算的結(jié)果 Tn= 23.2353等分數(shù) n=

8、已知值與計算值的誤差 R= 16.1704用Simpson公式計算的結(jié)果 Sn= 23.2617等分數(shù) n= 10647已知值與計算值的誤差 R= 16.1969分析:在處理問題時,復化Simpson要比復化梯度計算速度要快很多。2、實驗目的:高斯數(shù)值積分方法用于積分方程求解。實驗內(nèi)容:線性的積分方程的數(shù)值求解,可以被轉(zhuǎn)化為線性代數(shù)方程組的求解問題。而線性代數(shù)方程組所含未知數(shù)的個數(shù),與用來離散積分的數(shù)值方法的節(jié)點個數(shù)相同。在節(jié)點數(shù)相同的前提下,高斯數(shù)值積分方法有較高的代數(shù)精度,用它通常會得到較好的結(jié)果。對第二類Fredholm積分方程首先將積分區(qū)間a,b等分成n份,在每個子區(qū)間上離散方程中的積

9、分就得到線性代數(shù)方程組。實驗要求:分別使用如下方法,離散積分方程中的積分1.復化梯形方法;2.復化辛甫森方法;3.復化高斯方法。求解如下的積分方程,方程的準確解為,并比較各算法的優(yōu)劣。程序結(jié)果:當?shù)螖?shù)n=1時精確解1.0000 1.2840 1.6487 2.1170 2.7183 復化梯形方法0.8591 1.1032 1.4165 1.81882.3354復化辛甫森方法0.9993 1.2832 1.6476 2.1156 2.7165復化高斯方法1.0004 1.2846 1.6495 2.1180 2.7195復化梯形方法的平均誤差err=0.247復化辛甫森方法的平均誤差err=

10、0.00116復化高斯方法的平均誤差err=0.0008當?shù)螖?shù)n=5時,精確解1.0000 1.2840 1.6487 2.1170 2.7183 復化梯形方法0.9934 1.2755 1.6378 2.1030 2.7003 復化辛甫森方法1.0000 1.2840 1.6487 2.1170 2.7183復化高斯方法1.0000 1.2840 1.6487 2.1170 2.7183復化梯形方法的平均誤差err=0.00116復化辛甫森方法和復化高斯方法的平均誤差err=0可以看出,復化高斯方法得到的結(jié)果精度最高,復化辛普森方法比復化梯形方法的精度要高,程序:clear,clca=0

11、;b=1;n=5;figurefun1(a,b,n);hold ona=0;b=1;n=5;figurefun2(a,b,n);hold onfigurefun3(a,b,n);編制m函數(shù):function y=Kfun(t,s)y=2/(exp(1)-1)*exp(t);function y=ffun(t)y=-exp(t);function y=Fexc(t)%精確解y=exp(t);function x,w=fhgauss(a,b,n)h=(b-a)/n;x1=a:h:b;x=zeros(1,2*n);w=x;for i=1:nx(2*i-1:2*i),w(2*i-1:2*i)=Gaus

12、sLegendre(x1(i),x1(i+1),2);endfunction x,w=fhsimpson(a,b,n)h=(b-a)/n;x=a:h/2:b;w=x;w(1)=h/6;w(2*n+1)=h/6;for i=1:nw(2*i)=2/3*h;if in w(2*i+1)=h/3;endendfunction x,w=fhtrapz(a,b,n)h=(b-a)/n;x=a:h:b;for i=1:n+1 if i=1|i=n+1 w(i)=h/2; else w(i)=h; endendfunction x,w=GaussLegendre(a,b,n)i=1:n-1;c=i./sqr

13、t(4*i.2-1);CM=diag(c,1) + diag(c,-1);V L=eig(CM);x ind=sort(diag(L);V=V(:,ind);w=2*V(:,1).2;x=x*(b-a)/2+(b+a)/2;w=w*(b-a)/2;function fun1(a,b,n)x1,w1=fhtrapz(a,b,n);n1=4;n=n+1;h=(b-a)/n1;x=a:h:b;y0=Fexc(x);A=zeros(n,n);B=zeros(n,1);for i=1:nB(i)=ffun(x1(i);endfor i=1:nfor j=1:n A(i,j)=w1(j)*Kfun(x1(

14、i),x1(j); endendA=eye(n)-A;y1=(AB);yN=x;for i=1:n1+1yN(i)=ffun(x(i);for j=1:nyN(i)=yN(i)+w1(j)*Kfun(x(i),x1(j)*y1(j);endendfprintf(數(shù)值解:n)yNfprintf(精確解:n)y0plot(x,yN,x,x,y0,.);h=legend(復化值,真實值);function fun2(a,b,n)x1,w1=fhsimpson(a,b,n);n=2*n+1;n1=50;h=(b-a)/n1;x=a:h:b;y0=Fexc(x);A=zeros(n,n);B=zeros

15、(n,1);for i=1:nB(i)=ffun(x1(i);endfor i=1:nfor j=1:n A(i,j)=w1(j)*Kfun(x1(i),x1(j); endendA=eye(n)-A;y1=(AB);yN=x;for i=1:n1+1yN(i)=ffun(x(i);for j=1:nyN(i)=yN(i)+w1(j)*Kfun(x(i),x1(j)*y1(j);endendfprintf(數(shù)值解:n)yNfprintf(精確解:n)y0plot(x,yN,x,x,y0,.);h=legend(復化值,真實值);function fun3(a,b,n)x1,w1=fhgauss

16、(a,b,n);n=2*n;n1=4;h=(b-a)/n1;x=a:h:b;y0=Fexc(x);A=zeros(n,n);B=zeros(n,1);for i=1:nB(i)=ffun(x1(i);endfor i=1:nfor j=1:n A(i,j)=w1(j)*Kfun(x1(i),x1(j); endendA=eye(n)-A;y1=(AB);yN=x;for i=1:n1+1yN(i)=ffun(x(i);for j=1:nyN(i)=yN(i)+w1(j)*Kfun(x(i),x1(j)*y1(j);endendfprintf(數(shù)值解:n)yNfprintf(精確解:n)y0pl

17、ot(x,yN,x,x,y0,.);h=legend(復化值,真實值);圖一圖二圖三實驗三1、對常微分方程初值問題 分別使用Euler顯示方法、改進的Euler方法和經(jīng)典RK法和四階Adams預測-校正算法,求解常微分方程數(shù)值解,并與其精確解進行作圖比較。其中多步法需要的初值由經(jīng)典RK法提供。程序:子程序function E=Euler(fun,x0,y0,h,N)x=zeros(1,N+1);y=zeros(1,N+1);x(1)=x0;y(1)=y0;for n=1:Nx(n+1)=x(n)+h;y(n+1)=y(n)+h*feval(fun,x(n),y(n);endx1=xy1=ypl

18、ot(x1,y1,k)hold onfunction E=Euler_modify(fun,x0,y0,h,N)x=zeros(1,N+1);y=zeros(1,N+1);x(1)=x0;y(1)=y0;for n=1:Nx(n+1)=x(n)+h;z0=y(n)+h*feval(fun,x(n),y(n);y(n+1)=y(n)+h/2*(feval(fun,x(n),y(n)+feval(fun,x(n+1),z0);endx2=xy2=yplot(x2,y2,g)function x,y=Rk_N4(f,x0,y0,h,N) x=zeros(1,N+1);y=zeros(1,N+1);

19、x(1)=x0;y(1)=y0; for n=1:N x(n+1)=x(n)+h; k1=h*feval(f,x(n),y(n); k2=h*feval(f,x(n)+1/2*h,y(n)+1/2*k1); k3=h*feval(f,x(n)+1/2*h,y(n)+1/2*k2); k4=h*feval(f,x(n)+h,y(n)+k3); y(n+1)=y(n)+1/6*(k1+2*k2+2*k3+k4); end 運行以下程序clcclearEuler(fun,0,1,0.1,100)Euler_modify(fun,0,1,0.1,100)x,y=Rk_N4(fun,0,1,0.1,10

20、0)plot(x,y,-*r)hold onx1=0:0.1:pi;y1=cos(x1)+sin(x1)plot(x1,y1,-.b)title(誤差分析);xlabel(x軸);ylabel(y軸);legend(Euler,Euler改進法,R_K法,精確);axis(0 pi -1.5 1.5);grid on畫出圖形進行比較:2、實驗目的:Lorenz問題與混沌實驗內(nèi)容:考慮著名的Lorenz方程 其中s, r, b為變化區(qū)域有一定限制的實參數(shù)。該方程形式簡單,表面上看并無驚人之處,但由該方程揭示出的許多現(xiàn)象,促使“混沌”成為數(shù)學研究的嶄新領(lǐng)域,在實際應用中也產(chǎn)生了巨大的影響。實驗方法:先取定初值Y0=(x, y, z)=(0, 0, 0),參數(shù)s=10, r=28, b=8/3,用MATLAB編程數(shù)值求解,并與MATLAB函數(shù)ods45的計算結(jié)果進行對比。實驗要求:(1)對目前取定的參數(shù)值s, r和b,選取不同的初值Y0進行運算,觀察計算的結(jié)果有什么特點?解的曲線是否有界?解的曲線是不是周期的或趨于某個固定點?(2)在問題允許的范圍內(nèi)適當改變其中的參數(shù)值s, r, b,再選取不同的初始值Y0進行試算,觀察并記錄計算的結(jié)果有什么特點?是否發(fā)現(xiàn)什么不同的現(xiàn)象?

溫馨提示

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

評論

0/150

提交評論