數值分析報告

2021-03-04 00:17:20 字數 3059 閱讀 1361

姓名:***

學號:***

任課教師:***

實驗一第1章.線性方程組的數值實驗第一題

一、問題

對從2到9的每乙個n值,解n階方程組 。在這裡和如下定義

,其中解釋發生的現象。

2、實驗原理

gauss消去法:

設矩陣,向量,把方程組寫成

(1)順序消去過程

假設,令

做運算將變換為

=,其中

這樣就得到與等價的方程組.其中第一行與第一行相同,而其第一列對角線以下元素已經消為0。

假設有≠0,k=1,2,…,n-1,則經n-1步消元後得到

[|]=

對應等價方程組=。

由於上述初等變換係數矩陣行列式的值不變,有,所以。

(2)回代過程

解=從最後乙個方程開始,用逐次向後代入的方法,這稱為「回代過程」,計算公式是:

,如上述過程,由順序消去過程和回代過程合起來解方程組ax=b的方法,就是gauss消去法。

三、實驗步驟

1、 定義題目中的函式p(x);

2、 按照題目要求初始化係數矩陣;

3、 實現gauss消去法順序消元過程;

4、 實現gauss消去法回代過程;

5、 輸出不同的n值的情況下得到的線性方程組的解向量;

6、在求出乙個解後,設,令,輸出向量 ,可以觀察從2到9的每乙個n值,用gauss消去法解方程的誤差。

四、資料流向圖

五.模組關係圖

六.符號引用表

7.源程式**

#include

#include

#include

using namespace std;

#include

#define n 9 // 矩陣的最大階數

double p(double x, int n定義p(x)

double z1 = 14+n*(12+3*n);

double z2 = -7+(n*n)*z1;

double z3 = 2+x*x*z2;

double z4 = x*x/24*z3;

return z4;

}double a[n+1][n+1係數矩陣a

double b[n+1常數b

double c[n+1][n+1解x

double d[n+1];

double x[n+1];

double y[n+1];

void matrix(int n對於不同的值,初始化係數矩陣

}}void gauss(int n高斯消去法

}}void reback(int n回代求解x

cout<<"當n="< cout< for(i=1;i<=n;i++)

cout<<<}

void wucha(int n誤差 y陣列用於存放解的誤差

; for(i=1;i<=n;i++)

y[i]-=d[i];

}cout<<"當n="< cout< for(i=1;i<=n;i++)

cout<<<}

void main()

system("pause");

}八.程式執行截圖

九.實驗結果分析

由所得的結果可以看出,自5階之後,解向量變化較大,甚至符號也會發

生變化。具體值更是變化甚大,可是找不到規律。

從實驗原理中我們可以看到gauss消去法中消去和回代過程能夠實現的條件是≠0(k=1,2,…,n).但這不是容易預先檢驗的條件。該程式具有侷限性,不能充分反映n從2到9時發生變化的現象。

在本題目中我們也只能確定k=1時條件成立,但經變換後的情況就不得而知了。我們也可以實現列主元或者全主元消去法。

實驗二. 第三章非線性方程求解數值實驗第三題

1.問題

選取乙個函式,證明數值驗證迭代公式

n=0, 1, ...

在單根處是立方收斂的,但在多重根處則是線性收斂的。

2.實驗原理

(1)為了求解方程的根。設已有乙個近似值,如果存在且連續,由展開式得

其中在和之間。因為,如果,可得

如果把上式右端含的項略去,剩下的兩項就作為新的乙個近似值,記為,即

這就是,又稱。

(2) 設序列收斂到, 記誤差。

若存在實數及非零實數,使 , 則稱為階收斂,

為漸進誤差常數。

(3) 對於一般的方程,如果,,且有,其中為正整數,函式滿足,則稱是的

重零點。

(4).迭代公式

我們選取 ,

3.資料流向圖

4.模組關係圖

改變x(0)的值

5.符號引用表

6.源程式**

#include

#include

#define n 15n為最大迭代次數

using namespace std;

double f0(double x定義函式y=x*x*x*x-10*x*x+25,在主函式中對其進行迭代,根號5是其二重根

double f1(double x)

double f2(double x)

double f(double x)

long double g0(long double x定義函式y=sin(x),在主函式中對其進行迭代,3.141592653是其單重根

long double g1(long double x)

long double g2(long double x)

long double g(long double x)

void newtondiedai(long double a,long double b,long double a[n+1],long double b[n+1],long double c[n+1],long double d[n+1]) //迭代過程

}void main()

{ long double a[n+1],b[n+1],c[n+1],d[n+1分別存放兩個函式各次的迭代值、迭代誤差

cout<<"接下來對 f(x)=x*x*x*x-10*x*x+25 進行迭代"<

數值分析上機報告

數學與計算科學學院 實驗報告 實驗專案名稱迭代法求線性方程組 所屬課程名稱數值方法a 實驗型別驗證型 實驗日期2011.11.03 班級學號 姓名成績 附錄1 源程式 附錄2 實驗報告填寫說明 1 實驗專案名稱 要求與實驗教學大綱一致。2 實驗目的 目的要明確,要抓住重點,符合實驗教學大綱要求。3 ...

數值分析實驗報告

實驗一題目一 已知函式表如下 試用三次lagrange插值多項式求x 0.5635時的函式值。解 lagrange插值法公式 程式框圖如下 本題中n 4 分析設計思想 設計思路如上面的流程圖所示,用我們學過的c語言程式設計實現。程式清單 include include include float l...

數值分析實驗報告

數值分析 課程設計實驗報告模板 常微分方程資料值解 用龍格 庫塔法分析lorenz方程的特性 一 考慮著名的lorenz方程 其中s,r,b為變化區域內有一定限制的實引數,該方程形式簡單,表面上看並無驚人之處,但由該方程揭示出的許多現象,促使 混沌 成為數學研究的嶄新領域,在實際應用中產生了巨大的影...