《數值分析》課程設計報告

2021-08-06 03:45:50 字數 3120 閱讀 8449

課程設計報告

課程設計題目:

牛頓迭代法求解非線性方程組

學生姓名:

專業:班級:

指導教師:

題目:在化學工程中常常研究在乙個封閉系統中同時進行的兩種可逆反應

其中a,b,c和d代表不同的物質。反應達到平衡是有如下的平衡關係:

其中稱為平衡常數,代表平衡狀態時該物質的濃度。假定反應開始時各種物質的濃度為:

而且反應達到平衡時,由第一和第二種反應生成的c物質濃度分別為,於是平衡時滿足的方程為:

用數值方法求解上述方程。

所涉及的知識——非線性方程組解法。

一、摘要

在matlab環境下運用程式語言通過牛頓迭代法求解非線性方程組的理論基礎對非線性方程組求根,編寫牛頓迭代法的程式,在執行完程式後對執行結果做出各方面的分析和比較,最後對此方法做出評估。

二、設計目的

用matlab7.1軟體求出二元非線性方程組;了解如何用牛頓迭代法求解非線性方程組;掌握牛頓迭代法求解非線性方程組的原理;提高我們運用數學軟體程式設計解決問題的能力。

三、理論基礎

牛頓迭代法:

非線性方程組寫成向量形式f(x)=0,這裡,。求解問題,即是求,使滿足f()=0,為了求f(x)=0的解,等價形式為,其中,的不動點,就是f(x)=0的解。適當選取初始向量,作迭代,若的每個分量對變數是連續的,則當{}收斂時,其極限就是的不動點。

取,那麼當為非奇異矩陣,則與f(x)=0等價。當取a(x)=a,deta0時,迭代。若充分接近,則迭代收斂於。

取,其中為f(x)的jacobi矩陣。此時,f(x)=0的等價形式為,而在f(x)=0的解x=處,有=0,只要充分接近,迭代收斂於,上述迭代式稱為牛頓迭代法。

四、程式**及運算結果

程式**:

jacobi矩陣:

syms x1 x2;

y1=0.0004*(50-2*x1)^2*(20-x1)-5-x1-x2;

y2=0.037*(50-x2)*(10-x2)-5-x2-x1;

y=[diff(y1,x1) diff(y1,x2);diff(y2,x1) diff(y2,x2)]

執行結果:

y= [-1/625*(50-2*x1)*(20-x1)-1/2500*(50-2*x1)^2-11]

[ -1161/50+37/500*x2]

主程式**:

function y=fc(x)

y(1)=0.0004*(50-2*x(1))^2*(20-x(1))-5-x(1)-x(2);

y(2)=0.037*(50-x(2))*(10-x(2))-5-x(2)-x(1);

y=[y(1) y(2)];

function y=df2(x)

y=[-1/625*(50-2*x(1))*(20-x(1))-1/2500*(50-2*x(1))^2-1 -1;-1 -161/50+37/500*x(2)];

syms x1;

x0=[1 2]

x1=x0-fc(x0)*inv(df2(x0));

n=1;

while(norm(x1-x0)>=1.0e-4)&&(n<=1000)

x0=x1;

x1=x0-fc(x0)*inv(df2(x0));

n=n+1;

endx1

n執行結果:

x1 =

3.6897 3.1615

n = 1

x0 =

3 3

x1 =

3.6897 3.1615

n = 3

x0 =

1 2

x1 =

3.6897 3.1615

n = 4

用matlab內部函式編寫程式:

function f=group(x)

f=[0.0016*x(1)^3-0.112*x(1)^2+3.6*x(1)+x(2)-15;0.037*x(2)^2-3.22*x(2)-x(1)+13.5];

[x,fval]=fsolve('group',[2 2])

執行結果:

x = 3.6897 3.1615

fval =

1.0e-009 *

-0.1219

0.0045

用matlab畫出非線性方程組解的圖形:

ezplot('0.0004*(50-2*x1)^2*(20-x1)-5-x1-x2')

hold on

ezplot('0.037*(50-x2)*(10-x2)-5-x2-x1')

text(0,-2,'0.0004*(50-2*x1)^2*(20-x1)-5-x1-x2')

text(-4,4,'0.037*(50-x2)*(10-x2)-5-x2-x1')

title('非線性方程組的解')

執行結果:

圖 1 非線性方程組解的圖形

五、結果分析

根據牛頓迭代法求非線性方程組的原理將所求的非線性方程組先化為一般的標準形式,求出它的jacobi矩陣,然後再用牛頓迭代公式計算出我們所要求的函式值。牛頓迭代法是求解非線性方程組的乙個重要的方法之一,其最大的有點是收斂速度快,具有平方收斂,常常能快速的求出其他方法求不出或很難求出的解。根據本文的分析,利用牛頓迭代法求解非線性方程組,代入接近精確解的初值,其每次收斂到精確解的次數都很少,可見其收斂速度較快。

使用牛頓迭代法時要計算它的jacobi矩陣,顯然有時候工作量會很大,並且要求它的jacobi矩陣非奇異,如果奇異或者病態,會導致解非線性方程組失敗或產生的數值不穩定。對於本文用的牛頓迭代法求解非線性方程組的過程,其迭代次數少,所求出的結果誤差也比較小。

六、設計心得

七、參考文獻

[1]孫祥,徐流美,吳清.matlabl 7.0基礎教程[m].北京:清華大學出版社,2005.

[2]奚梅成.數值分析方法.合肥:中國科學技術大學,2003.

[3]丁麗娟,程杞元.數值計算方法[m].北京:北京理工大學出版社,2005.

[4]肖偉,劉忠,曾新勇,等.matlabl程式設計與應用[m].北京:清華大學出版社,2005.

[5]李慶揚,易大義,王能超.現代數值分析.北京:高等教育出版社,1995.

[6]朱旭,李換琴,籍萬新.西安:西安交通大學,2009.

數值分析課程設計實驗報告

姓名 陳浩 學號 081002102 班級 091002 指導老師 任林源 完成日期 2011 7 目錄一丶概述 二丶設計內容 三丶設計過程 四丶主要 五丶結果顯示 六丶結果驗證 七丶設計總結 實驗一 gauss消去法和gauss選列主元消去法 一丶概述 1.1 設計名稱 gauss消去法和gaus...

數值方法課程設計

第1節經典四階龍格庫塔法解一階微分方程組3 1.1 演算法概要3 1.2 演算法流程圖3 1.3 程式除錯4 1.4 程式 4 第2節高斯列主元法解線性方程組6 2.1 演算法概要6 2.2 演算法流程圖6 2.3 程式除錯7 2.4 程式 8 第3節牛頓法解非線性方程組11 3.1 演算法概要11...

數值計算方法課程設計

1 方法一 2 方法二 3.程式設計 1 演算法設計一 含流程圖 2 程式設計一 3 演算法設計二 含流程圖 4 程式設計二 4.程式實現 1 程式實現一 2 程式實現二 二 執行環境 1 c語言 或c 執行環境 2 matlab執行環境 三 執行結果分析及應用 四 實驗心得 五 參考文獻 六 附錄...