




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗報告一、求方程f(x)=x3-sinx-12x+1的全部根, =1e-61、 用一般迭代法; 2、 用牛頓迭代法; 并比較兩種迭代的收斂速度。一、 首先,由題可求得:.其次,分析得到其根所在的區間。 令,可得到. 用一階導數分析得到和兩個函數的增減區間;再用二階導數分析得到兩個函數的拐點以及凹凸區間. 在直角坐標軸上描摹出和的圖,在圖上可以看到他們的交點,然后估計交點所在的區間,即是所要求的根的區間。經過估計,得到根所在的區間為,和.1、 一般迭代法 (1)算法步驟:設為給定的允許精度,迭代法的計算步驟為: 選定初值.由確定函數,得等價形式. 計算.由迭代公式得. 如果,則迭代結束,取為解
2、的近似值;否則,用代替,重復步驟和步驟.(2)程序代碼: 在區間內,代碼: clcx0=-3.5; %初值iter_max=100; %迭代的最大次數ep=1e-6; %允許精度 k=0;while k<=iter_max %k從0開始到iter_max循環 x1=(sin(x0)+12*x0-1).(1/3); %代入,算出的值 if abs(x1-x0)<ep %與允許精度作比較 break; %條件成立,跳出循環 end x0=x1; %條件不成立,用代替 k=k+1; %k加1endx_star=x1, iter=k %為解的近似值,iter為迭代次數運行結果:x_star
3、 = -3.4101 ;iter =14在區間內, 代碼:clcx0=0.5; %初值iter_max=100; %迭代的最大次數ep=1e-6; %允許精度k=0;while k<=iter_max %k從0開始到iter_max循環x1=(1/12)*(x0.3-sin(x0)+1); %代入,算出的值 if abs(x1-x0)<ep %與允許精度作比較 break; %條件成立,跳出循環 end x0=x1; %條件不成立,用代替 k=k+1; %k加1endx_star=x1, iter=k %為解的近似值,iter為迭代次數結果:x_star = 0.07696;ite
4、r =6在區間內,代碼:clcx0=3.5; %初值iter_max=100; %迭代的最大次數ep=1e-6; %允許精度k=0;while k<=iter_max %k從0開始到iter_max循環x1=(sin(x0)+12*x0-1).(1/3); %代入,算出的值 if abs(x1-x0)<ep %與允許精度作比較 break; %條件成立,跳出循環 end x0=x1; %條件不成立,用代替 k=k+1; %k加1endx_star=x1, iter=k %為解的近似值,iter為迭代次數運行結果:x_star = 3.4101 ;iter =102、 牛頓迭代法(1
5、)算法步驟: 選定初值,計算,. 按公式迭代,得新的近似值,并計算,. 對于給定的允許精度,如果,則終止迭代,取;否則,在轉回步驟計算.(2)程序代碼:在區間內,clcx1=-3.5; %初值k=0;while k<=100 %k從0開始到100循環x0=x1; %將初值賦給 f0=x0.3-sin(x0)-12*x0+1; %計算f1=3*x0.2-cos(x0)-12; %計算x1=x0-f0/f1; %計算得到新的近似值if abs(x1-x0)< 1.0e-6 %與允許精度作比較break; %條件成立,跳出循環endk=k+1; %條件不成立,k加1end x_star=
6、x1, iter=k %為解的近似值,iter為迭代次數運行結果:x_star = -3.4911;iter =2在區間內,clcx1=0.5; %初值k=0;while k<=100 %k從0開始到100循環x0=x1; %將初值賦給f0=x0.3-sin(x0)-12*x0+1; %計算f1=3*x0.2-cos(x0)-12; %計算x1=x0-f0/f1; %計算得到新的近似值 if abs(x1-x0)< 1.0e-6 %與允許精度作比較break; %條件成立,跳出循環endk=k+1; %條件不成立,k加1end x_star=x1, iter=k %為解的近似值,i
7、ter為迭代次數運行結果:x_star =0.07696 ;iter =3在區間內,clcx1=3.5; %初值k=0; while k<=100 %k從0開始到100循環x0=x1; %將初值賦給f0=x0.3-sin(x0)-12*x0+1; %計算f1=3*x0.2-cos(x0)-12; %計算 x1=x0-f0/f1; %計算得到新的近似值if abs(x1-x0)< 1.0e-6 %與允許精度作比較break; %條件成立,跳出循環endk=k+1; %條件不成立,k加1end x_star=x1, iter=k %為解的近似值,iter為迭代次數運行結果:x_star
8、 =3.4101;iter =33、運行結果:x_stariterx_stariterx_stariter一般迭代3.4101140.769663.410110牛頓法3.491120.7069633.410134、結果分析: 從這題的結果可以看出,牛頓迭代法的迭代速度比一般迭代法的速度要快,牛頓法的迭代次數比較少。例如,求在的根時,一般迭代法迭代了14次(iter =14),而牛頓法只用了2次(iter =2)??偠灾?,一般迭代法是一種逐次逼近的方法,具有原理簡單、編制程序方便等優點,但存在是否收斂和收斂速度的快慢等問題。牛頓迭代法是一種特殊的迭代法,用于求方程的單根時具有2階收斂。因此是一
9、種求非線性方程解的好方法,還可以用于求重根和復根,而且可以推廣到求非線性方程組的解.二、解方程組直接法1、已知對矩陣A做LU分解。2、用追趕法解下述方程組,并給出n=10的結果,其中,1、杜利特爾分解法(直接三角分解法):設方程組的系數矩陣的各階主子式,則可知該方程組存在唯一的杜利特爾分解:,其中,.我們記矩陣的第行第列元素為,則矩陣的第一行和的第一列可由公式(1.1)求出: (2.1)再由公式(2.2)求出的第行、的第列元素: (2.2)(1)算法步驟: 由于系數矩陣的各階主子式,則可知該方程組存在唯一的杜利特爾分解:。 利用公式(2.1)和(2.2)求出和的元素和。 求解單位下三角形方程組
10、,即按公式 (2.3) 求出。 求解上三角形方程組,即按公式 (2.4) 可求得方程組的解:。(2)程序代碼:function L,U=LU(A)An,n=size(A); %定義為階矩陣L=zeros(n,n); %矩陣初始化U=zeros(n,n); %矩陣初始化for i=1:n L(i,i)=1; %矩陣的對角線元素為1endfor k=1:n for j=k:n U(k,j)=A(k,j)-sum(L(k,1:k-1).*U(1:k-1,j)');%求出元素 end for i=k+1:n L(i,k)=(A(i,k)-sum(L(i,1:k-1).*U(1:k-1,k)
11、39;)/U(k,k); %求出的元素 endendA=4 2 1 5;8 7 2 10;4 8 3 6;12 6 11 20; %矩陣L,U=LU(A) %2、追趕法 設所求方程組為, (2.5)(1)算法步驟: 由方程組的第1個方程,將未知元用表示為 記,得。 以此類推,用表示, 用表示。我們可以得到一般式(其中記): (2.6) (2.7) 將代入方程組(2.5)的第n個方程,并解出得, 上式右端恰好是式(2.6)的。于是,可由式(2.7)求出三對角方程組的解,即, (2.8)(2)程序代碼:clca=0 1 1 1 1 1 1 1 1 1;b=2 2 2 2 2 2 2 2 2 2;c
12、=1 1 1 1 1 1 1 1 1 0;r=-7 -5 -5 -5 -5 -5 -5 -5 -5 -5;u=0 0 0 0 0 0 0 0 0 0;v=0 0 0 0 0 0 0 0 0 0;x=0 0 0 0 0 0 0 0 0 0;u(1)=r(1)/b(1); %計算v(1)=c(1)/b(1); %計算for k=2:10 u(k)=(r(k)-u(k-1)*a(k)/(b(k)-v(k-1)*a(k); %計算 v(k)=c(k)/(b(k)-v(k-1)*a(k); %計算endx(10)=u(10); for k=1:9 x(k)=u(k)-v(k)*x(k+1); %由,解出
13、end x運行結果:x=-3.5000 -1.0000 -3.0000 -1.6000 -2.8333 -1.8571 -2.7500 -2.0000 -0.8182 -2.09093、運行結果:(1)杜利特爾分解法:(2)追趕法: 。4、結果分析:(1)杜利特爾分解法:在實現分解后,解具有相同系數矩陣的方程組,非常方便,每解一個方程只需用式(2.3)和式(2.4)解兩個三角形方程組即可,大大減少了運算工作量。另外,矩陣和的元素可采用緊湊格式存放在系數矩陣的相應元素位置上,節省了存儲單元。(2)追趕法:追趕法僅適用于三對角方程組的求解。我們由式(2.6)和式(2.8)可以算出,追趕法的乘、除運
14、算次數僅為,加、減運算次數僅為。故追趕法具有運算量小和存儲量小的優勢。三、解方程組迭代法1、用迭代法解Ax=b,其中b=(5,5,5)T,給定誤差,用Jacobi和SOR兩種迭代法計算,并給出n=10的結果。對于階方程組,假定系數矩陣的對角元時,可得雅可比迭代格式為:, (3.1)記為方程組的系數矩陣的對角元組成的對角陣,和分別為由的元素組成的嚴格下三角陣和上三角陣,則系數矩陣可分解為:.1、Jacobi(雅可比)迭代法:(1)算法步驟: 根據矩陣,算出矩陣、和,即,。 計算雅可比迭代矩陣:. 計算矩陣:. 代入給出的初值,得到雅可比迭代公式(3.1)的矩陣形式:. (3.2)由式(3.2)就
15、可以得到向量序列:.(2)程序代碼: clcA=3 -1/2 -1/4 0 0 0 0 0 0 0;-1/2 3 -1/2 -1/4 0 0 0 0 0 0; -1/4 -1/2 3 -1/2 -1/4 0 0 0 0 0;0 -1/4 -1/2 3 -1/2 -1/4 0 0 0 0; 0 0 -1/4 -1/2 3 -1/2 -1/4 0 0 0;0 0 0 -1/4 -1/2 3 -1/2 -1/4 0 0; 0 0 0 0 -1/4 -1/2 3 -1/2 -1/4 0;0 0 0 0 0 -1/4 -1/2 3 -1/2 -1/4; 0 0 0 0 0 0 -1/4 -1/2 3 -
16、1/2;0 0 0 0 0 0 0 -1/4 -1/2 3;x0=0 0 0 0 0 0 0 0 0 0' %初值 b=5 5 5 5 5 5 5 5 5 5'L= 0 0 0 0 0 0 0 0 0 0;1/2 0 0 0 0 0 0 0 0 0; 1/4 1/2 0 0 0 0 0 0 0 0;0 1/4 1/2 0 0 0 0 0 0 0; 0 0 1/4 1/2 0 0 0 0 0 0;0 0 0 1/4 1/2 0 0 0 0 0; 0 0 0 0 1/4 1/2 0 0 0 0;0 0 0 0 0 1/4 1/2 0 0 0; 0 0 0 0 0 0 1/4 1/2
17、 0 0;0 0 0 0 0 0 0 1/4 1/2 0;U= 0 1/2 1/4 0 0 0 0 0 0 0;0 0 1/2 1/4 0 0 0 0 0 0; 0 0 0 1/2 1/4 0 0 0 0 0;0 0 0 0 1/2 1/4 0 0 0 0; 0 0 0 0 0 1/2 1/4 0 0 0;0 0 0 0 0 0 1/2 1/4 0 0; 0 0 0 0 0 0 0 1/2 1/4 0;0 0 0 0 0 0 0 0 1/2 1/4; 0 0 0 0 0 0 0 0 0 1/2;0 0 0 0 0 0 0 0 0 0;D=3 0 0 0 0 0 0 0 0 0; 0 3 0 0
18、 0 0 0 0 0 0; 0 0 3 0 0 0 0 0 0 0; 0 0 0 3 0 0 0 0 0 0; 0 0 0 0 3 0 0 0 0 0; 0 0 0 0 0 3 0 0 0 0; 0 0 0 0 0 0 3 0 0 0; 0 0 0 0 0 0 0 3 0 0; 0 0 0 0 0 0 0 0 3 0; 0 0 0 0 0 0 0 0 0 3;BJ=inv(D)*(L+U); %計算雅可比迭代矩陣FJ=inv(D)*b; %計算矩陣N=1000;ep=1e-10; % 誤差 k=0;while k<=iter_max %k從0開始到iter_max循環x1=BJ*x0+f
19、J; %計算if norm(x1-x0),'inf')<ep %與誤差做比較break; %滿足,跳出循環endx0=x1; %不滿足,將賦給k=k+1; %k加1endx_star=x1, iter=k 2、SOR(超松弛)迭代法:(1)算法步驟: 根據矩陣,算出矩陣、和,即,。 計算超松弛迭代矩陣:. 其中,為松弛因子,。 計算矩陣:. 其中,為松弛因子,。 代入給出的初值,得到超松弛迭代公式的矩陣形式:. 由式(3.2)就可以得到向量序列:.(2)程序代碼:clcA=3 -1/2 -1/4 0 0 0 0 0 0 0;-1/2 3 -1/2 -1/4 0 0 0 0
20、 0 0; -1/4 -1/2 3 -1/2 -1/4 0 0 0 0 0;0 -1/4 -1/2 3 -1/2 -1/4 0 0 0 0; 0 0 -1/4 -1/2 3 -1/2 -1/4 0 0 0;0 0 0 -1/4 -1/2 3 -1/2 -1/4 0 0; 0 0 0 0 -1/4 -1/2 3 -1/2 -1/4 0;0 0 0 0 0 -1/4 -1/2 3 -1/2 -1/4; 0 0 0 0 0 0 -1/4 -1/2 3 -1/2;0 0 0 0 0 0 0 -1/4 -1/2 3;x0=0 0 0 0 0 0 0 0 0 0' b=5 5 5 5 5 5 5
21、5 5 5'L= 0 0 0 0 0 0 0 0 0 0;1/2 0 0 0 0 0 0 0 0 0; 1/4 1/2 0 0 0 0 0 0 0 0;0 1/4 1/2 0 0 0 0 0 0 0; 0 0 1/4 1/2 0 0 0 0 0 0;0 0 0 1/4 1/2 0 0 0 0 0; 0 0 0 0 1/4 1/2 0 0 0 0;0 0 0 0 0 1/4 1/2 0 0 0; 0 0 0 0 0 0 1/4 1/2 0 0;0 0 0 0 0 0 0 1/4 1/2 0;U= 0 1/2 1/4 0 0 0 0 0 0 0; 0 0 1/2 1/4 0 0 0 0 0
22、 0; 0 0 0 1/2 1/4 0 0 0 0 0; 0 0 0 0 1/2 1/4 0 0 0 0; 0 0 0 0 0 1/2 1/4 0 0 0; 0 0 0 0 0 0 1/2 1/4 0 0; 0 0 0 0 0 0 0 1/2 1/4 0; 0 0 0 0 0 0 0 0 1/2 1/4; 0 0 0 0 0 0 0 0 0 1/2; 0 0 0 0 0 0 0 0 0 0;D=3 0 0 0 0 0 0 0 0 0; 0 3 0 0 0 0 0 0 0 0; 0 0 3 0 0 0 0 0 0 0; 0 0 0 3 0 0 0 0 0 0; 0 0 0 0 3 0 0 0 0
23、 0; 0 0 0 0 0 3 0 0 0 0; 0 0 0 0 0 0 3 0 0 0; 0 0 0 0 0 0 0 3 0 0; 0 0 0 0 0 0 0 0 3 0; 0 0 0 0 0 0 0 0 0 3;w=1.3; %超松弛因子Bw=(inv(D-w*L)*(1-w)*D+w*U); %計算超松弛迭代矩陣Fw=w*(inv(D-w*L)*b; %計算矩陣iter_max=1000;ep=1e-10; %誤差k=0;while k<=iter_maxx1=Bw*x0+fw; %if norm(x1-x0),'inf')<ep %與誤差做比較break;e
24、ndx0=x1; k=k+1;endx_star=x1, iter=k3、運行結果:(1)雅可比迭代法:迭代次數:iter =31(2)超松弛迭代法:迭代次數:iter =254、結果分析:雅可比迭代法和超松弛迭代法從迭代次數上比較,可以看出超松弛迭代比雅可比迭代的次數少,表明超松弛迭代法比雅可比迭代法的收斂速度快。四、插值逼近題目: ,將10等分,作Lagrange插值,將插值函數的圖形與的圖形比較,并給出結論。1、算法步驟: 已知, 求出各個節點的拉格朗日插值基函數多項式:, 就稱為以為節點的拉格朗日插值基多項式。 利用基函數的線性組合得到插值多項式:。2、程序代碼:function y=
25、lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j=k p=p*(z-x0(j)/(x0(k)-x0(j); %求出,p即為 end end s=p*y0(k)+s; %計算,s即為 end y(i)=s;endx=-5:1:5;y=1./(1+x.2); %插值函數x0=-5:0.1:5;y0=lagrange(x,y,x0);y1=1./(1+x0.2); %繪制圖形plot(x0,y0,'-r') %插值曲線hold onplot(x0,y1,'-b') %原曲線 3、 運行結果:插值曲線為紅色,原曲線為藍色:4、結果分析:當很大時,在內能很好的逼近,而在這個區間外,誤差反而很大。由圖像我們可以看出,在內部,與偏差??;而在端點附近,偏差大。這就是龍格現象。五、復化求積題目: 分別用復化梯形公式、復化辛卜生公式計算,其中. (用區間逐步分半遞推算法) 1、復化梯形公式:(1)算法步驟: 將區間分成等分,步長為,分點為.其中,我們又題意已知:。 建立與的遞推公式:。 給定誤差,當時,停止計算,取為所給積分的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論