計算方法實驗報告

2022-09-05 02:33:04 字數 1955 閱讀 5339

實驗報告3:解線性方程組的迭代法

姓名:杜娟學號:08012324 班級:勘查08-3班

一. 上機題目

用jacobi迭代法和高斯—賽德爾迭代法解線性方程組

二. 目的要求

掌握用jacobi迭代法和高斯—賽德爾迭代法設計程式,從而實現解線性方程組。

三.方法原理

解線性方程組的迭代法是將線性方程組 ax=b 化為等價線性方程組

x=bx+f

再由矩陣迭代格式

x(k+1)=bx (k)+f

構造向量序列來求線性方程組解的。如果得出的向量序列收斂至某個向量x*,則可得該向量x*就是所求方程組 ax=b 的準確解.

四.演算法步驟

jacobi迭代演算法

1.輸入變數個數n、初值向量x(0)、迭代精度eps、係數矩陣a、常數項b 和迭代最大次數nmax

2 for i=1,2,…,n

2.1 如果|aii|3. bj e-d-1a

4. gj d-1b

k=1,2,…,nmax

5.1 x gj

5.2 如果||x-x0||6. 如果||x-x0||>eps ,輸出迭代失敗,終止。

高斯—賽德爾迭代法

1.輸入變數個數n、初值向量x(0)、迭代精度eps、係數矩陣a、常數項b 和迭代最大次數nmax

2. for i=1,2,…,n

2.1 如果|aii| i=1,2,…,nmax

3.1 for i=1,2,…,n

3.2 如果||x(k+1)-x(k)||4. 如果||x-x0||五.c語言程式及變數說明

//jacobi迭代法演算法

#include <>

#include <>

#define row 3

void read_a(float a[row])

}void read_b(float b)

void read_x0(float x0)

float max_e(float x0,float x1)

return e;

}void print_x1(float x,int k)

void main()

print_x1(x1,k);

e1=max_e(x1,x0);

for(i=0;i x0[i]=x1[i];

k++;

}while(e1>e&&k if(k>=n)

cout<<"迭代失敗!"<}

// 高斯—賽德爾迭代法

#include<>

#include<>

double f(double a[20],double x,int i,int n)

return sum;

}double max(double norm,double y,double x)

void main()

do}while(norm>e);

printf("迭代次數是%d \n",k);

printf("方程組的解是\n");

for(i=0;iprintf("%lf ",x[i]);

}六.執行結果及分析

說明本程式用於求線性方程組ax=b的解。程式執行後,先通過鍵盤輸入線性方程組階數n、係數矩陣a、常數項b、迭代初值向量x0和輸入精度控制eps,程式即可給出每次迭代的次數和對應的迭代向量序列x(k),其中最後輸出的結果即為所求的根。如果迭代超出20次還沒有求出滿足精度的根則輸出迭代失敗提示,如果出現主對角線元素aii=0給出jacobi迭代法失效提示。

說明本程式用於求線性方程組ax=b的解。程式執行後,先通過鍵盤輸入線性方程組階數n、係數矩陣a、常數項b和輸入精度控制eps,最後輸出的結果即為所求的根。如果迭代超出20次還沒有求出滿足精度的根則輸出迭代失敗提示.

七.程式分析

高斯—賽德爾迭代法迭代次數是7次,jacobi迭代法迭代次數是11次,這說明高斯—賽德爾迭代法計算量要比jacobi迭代法少。

《計算方法》實驗報告

專業及班級姓名 學號日期 請務必將結果寫在答題區域 一 方程求根 15分 1.用牛頓迭代法求解下列方程的正根 2.先用 法確定初始點,然後再求方程的所有根。求得的根的結果 二 線性方程組 15分 1 計算下列矩陣的逆矩陣,並驗證之。2.用兩種方法求解下列線性方程組 1 呼叫 x a b 命令 2 利...

計算方法上機實驗報告

數值計算上機實驗 設計題一 實驗名稱 euler方法與改進的euler方法 小組成員及題號 1.洪媛媛2.陳昌利3.梁靜 4.王鑫 5.萬小倩6.沈杰 7.歐榮軍 8.蔣文燕 實驗報告 一 實驗問題 求初值問題的數值解。要求 1 用euler方法和改進的euler方法求常微分方程數值解,取h 0.0...

數值計算方法實驗報告jrh

一 實驗的性質 目的和任務 本實驗是與本專業基礎課 數值計算方法 相配套的,旨在鞏固專業課內容和學生程式設計的能力。通過實驗加強對數值方法的理解和掌握,編制出適用的程式。同時,在理論教學的基礎上,注意方法處理的技巧及其與計算機的結合,其次要通過例子,學習使用各種數值方法解決實際計算問題。要求學生應用...