計算實習報告

2021-09-27 03:57:23 字數 3960 閱讀 2420

2023年6月23號

一、 專題實習名稱:

迭代方法對未知量近似求解中收斂速度的比較。

二、 專題實習目的:

對數值分析課程中的迭代法進行思考、實驗、**、觀察、分析、總結等,包括資料準備、理論基礎、實驗內容及方法,最終對實驗結果進行分析,通過分析,來比較迭代法對未知量近似求解的收斂速度。從而達到對理論知識的感性認識,進一步加深對迭代法相關演算法的理解。

三、 專題實習內容:

迭代法也稱輾轉法,是一種不斷用變數的舊值遞推新值的過程,跟迭代法相對應的是直接法(或者稱為一次解法),即一次性解決問題。迭代法又分為精確迭代和近似迭代。「二分法」和「牛頓迭代法」屬於近似迭代法。

迭代演算法是用計算機解決問題的一種基本方法。它利用計算機運算速度快、適合做重複性操作的特點,讓計算機對一組指令(或一定步驟)進行重複執行,在每次執行這組指令(或這些步驟)時,都從變數的原值推出它的乙個新值。

迭代是數值分析中通過從乙個初始估計出發尋找一系列近似解來解決問題(一般是解方程或者方程組)的過程,為實現這一過程所使用的方法統稱為迭代法。

當遇到複雜問題時,特別是在未知量很多,方程為非線性時,我們無法找到直接解法(例如五次以及更高次的代數方程沒有解析解,參見阿貝耳定理),這時候或許可以通過迭代法尋求方程(組)的近似解。

最常見的迭代法是牛頓法。其他還包括最速下降法、共軛迭代法、變尺度迭代法、最小二乘法、線性規劃、非線性規劃等。那麼對於一些迭代法,它們近似求解時的收斂速度如何呢?

讓我們看看幾個常用迭代法的原理、收斂速度及例子。

1.迭代法(一般的)

基本思想:設方程f(x)=0,將其改寫成,選取適當的初值x0進行迭代

。,且(x)連續,對(1)式兩邊取極限,則有

,,這表明 x*就是 f (x)=0的乙個解

若 x*滿足 x*= (x*) ,亦稱x* 為(x*)的乙個不動點。

下面我們來看乙個例子:

設方程 f (x)=x2+x-14=0 改寫為。

(1) x=1(x)=14-x2,迭代公式為:

(2) x=2(x)=14/(x+1),迭代公式為:

,迭代公式為:

,迭代公式為:

迭代計算結果如下(程式語言):

function r=didai(f,x0,n)

k=1while k<=n

x1=f(x0);

r(k)=x1;

x0=x1;

k=k+1;

endr

f1=inline('14-x^2')

f2=inline('14/(x+1)')

f3=inline('sqrt(x+15)-1')

f4=inline('14/x-1')

方程的解為 x1=3.2749, x2=-4.2749. 顯然由上表知:1根本不收斂;2呈收斂的趨勢,但很慢;3收斂的速度很快;4收斂的速度很慢。

那麼導致這些結果的內在機制是什麼呢?

由上圖可以看出:,就取決於的斜率了。曲線(x)越平,收斂越快,越陡,收斂越慢,直到不收斂。亦即|'(x)|越小,收斂越快,越大,收斂越慢,大於1時,不收斂。

設y=(x)在axb連續,且ayb,若存在l<1,使|'(x)| l,則x= (x)在[a,b]內有唯一解x*,且:1) x0(a,b),迭代公式 xk+1= (xk),(k=1,2,···)產生的列收斂於x*。2) |xk+1-x*| 收斂速度:

為p階收斂,顯然p越大,收斂越快。+…

, 知2. 構造快速收斂迭代函式(x)

設 x =(x) 改寫為x =(x)+(1-) x,記:h(x) = (x)+(1-) x,選擇使|h(x)|在解附近盡可能的小。h'(x)='(x)+(1-)=0,解得:

,此能加速收斂迭代公式,顯然,這樣選取的迭代函式至少2階收斂

使用該方法將前面構造的三個迭代函式加速:

1),加速迭代函式為:,迭代公式為:

2),加速迭代函式為:,迭代公式為:

3),加速迭代函式為:,迭代公式為:

4),加速迭代函式為:,迭代公式為:

求解的程式語言:

g1=inline('x+(14-x-x*x)/(2*x+1)')

g2=inline('x+(x+1)*(14-x-x*x)/(x*x+2*x+15)')

g3=inline('(x-2*sqrt(x+15)+30)/(2*sqrt(x+15)-1)')

g4=inline('x+x*(14-x-x*x)/(x*x+14)')

由上表可發現:

3.特例——牛頓法

把非線性函式f(x)在處展開成泰勒級數 ,去掉2階及2階以上項(即線性化)後得到.

設f』()不等於0,令上面的f(x)=0,用代替右端的x,就得到了迭代公式:

,所以迭代函式為。

其幾何意義如下圖所示

方程f(x)=0的根就是曲線y=f(x)與x軸交點的橫座標x*,當初始近似值x0選取後,過( x0,f(x0))作切線,其切線方程為:y- f(x0)=f′(x0)(x-x0)

它與x軸交點的橫座標為x

一般地,設是x*的第n次近似值,過( x,f(x))作y=f(x)的切線,其切線與x軸交點的橫座標為:x =,即用切線與x軸交點的橫座標近似代替所要求的值。此法一般稱為牛頓切線法

收斂速度:,若x*為單根,f (x*)=0, f '(x*)≠0 , f ''(x*) ≠ 0,由此得到:。所以,牛頓切線法二階收斂。

若x*為m重根,即f (x*)=0, f '(x*)=0 ,···, f (m)(x*) =0,f (m+1)(x)≠ 0,令f (x)=(x-x*)mg(x),g(x*) ≠0,由改寫為,因為| '(x*) |<1,所以,牛頓切線法一階收斂。因此根重數m越高, | '(x*) |就越接近於1,迭代收斂速度就越慢。

由於函式f (x)未必可導,常用差商代替導數:即:

該法亦稱為牛頓割線法,由下圖可以解釋。

注:收斂速度:牛頓割線法收斂速度比切線法收斂速度稍慢,x*為單根時,收斂階為1.618。

下面給出牛頓割線法的程式語言:

function [k,r]=gex(f,x0,x1)

k=1;

while abs(x1-x0)>eps*abs(x1)

x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));

r(k)=x2;

x0=x1;

x1=x2;

k=k+1;

end同理,對於非線性方程組,牛頓法依然可以使用:

,式中得所有量均為矩陣迭代方法為:

下面我們給出乙個例子,求解方程組:。

解:,。

取初值,最大迭代次數n=10,相對誤差限tol=,編寫程式:

x0=1;y0=1;n=10;tol=1e-6;

x(1)=x0;y(1)=y0;

i=1;u=[1 1];k(1)=1;

while (norm(u)>tol*norm([x(i),y(i)]』))

a=2*[x(i),y(i);x(i),-y(i)];

b=[4-x(i)^2-y(i)^2,1- x(i)^2+y(i)^2]』;

u=a\b;

x(i+1)=x(i)+u(1);

y(i+1)=y(i)+u(1);

i=i+1;k(i)=i;

if(i>n)error(『n is full』);

endend

[k』,x』,y』]

迭代結果:

顯然:(=)與精確值的誤差不超過tol。

專題分析和總結

綜上所述,我們可以發現,在迭代方法對未知量近似求解中,各種迭代法的斂散性各有不同,同時,各方法的收斂速度也不盡相同。比如,切線法要比一般的迭代法收斂速度快的多,它能很快的收斂到所要求的值對應的點的座標。但是切線法需要去求各方程的切線,當方程只是簡單的一元或者二元方程,切線很容易求,但是,若是複雜的函式以及多元函式方程組的話,那麼切線就很難求出。

所以割線法就應運而生了,雖然沒有切線法快,但是,可以避免去求複雜的切線方程,加上計算機的運用,我們完全可以用計算機來代替人腦計算。

因此,在用迭代法求解方程組的時候,我們應當尋找適合的迭代法,能收斂的,加快收斂速度的迭代法。

計算實習報告

數值分析 b 大作業 二 姓名學號 1 演算法設計 矩陣的擬上三角化 對實矩陣a進行相似變換化為擬上三角矩陣,其變換矩陣採用householder矩陣,變換過程如下 若,則 否則,當時,得,令又是對稱正交矩陣,於是成立,因而與相似。矩陣的qr分解 矩陣的qr分解過程與擬上三角化過程相似,在這裡不再重...

實習報告 計算機實習報告總結

一實習目的理論聯絡實際,鞏固所學知識,提高處理實際問題的能力。為自己能順利與社會環境接軌做準備。二實習任務計算機基礎理論在實踐中的應用 三實習內容 資料庫的安裝。配置和使用 基礎,j a網路程式設計 3.linux基礎命令,linux bash shell程式設計,linux伺服器的配置,linux...

計算機實習周實習報告

實習報告 一.實習目的 通過理論聯絡實際,鞏固所學的知識.加強對計算機軟硬體的了解,可以對計算機進行簡單的維護和修復,對以後的工作學習提供專業紮實的計算機基礎知識.提高我們的動手能力.二.實習時間 201x年x月x日 201x年x月x日 三.實習地點 學院四.實習主要內容 星期一 上午.硬體介紹1....