數值分析 線性方程組的迭代法

2021-10-07 12:36:24 字數 3516 閱讀 5409

**:實驗結果

**:實驗結果

實驗報告

function

[x,k]

=jacobimethod(a

,b,x0,

n,emg)

n=length(a

);x1=zeros

(n,1);

x2=zeros

(n,1);

x1=x0;k=0;

r=max

(abs

(b-a

*x1));

while r>emg

for i=1:n

sum=0;

for j=1:n

if i~

=j sum=sum+

a(i,j)*x1

(j);

endend

x2(i)=(b

(i)-sum)/a

(i,i)

; end

r=max(

abs(x2-x1));

x1=x2;

k=k+1;

if k>

ndisp

('µü´ú꧰ü£¬•µ»ø');

return

; end

endx=x1;

kx

a=[-4,1,1,1;1,-4,1,1;1,1,-4,1;1,1,1,-4];

b=[1,1,1,1]』;

x0=[0,0,0,0]』;

[x,k]=jacobimethod(a,b,x0,100,10^-5);

k =37

x =-1.0000

-1.0000

-1.0000

-1.0000

function

[x,k]

=gaussmethod(a

,b,x0,

n,emg)

n=length(a

);x1=zeros

(n,1);

x2=zeros

(n,1);

x1=x0;

r=max

(abs

(b-a

*x1));

k=0;while r>emg

for i=1:n

sum=0;

for j=1:n

if j>i

sum=sum+

a(i,j)*x1

(j);

elseif jsum=sum+

a(i,j)*x2

(j);

endend

x2(i)=(b

(i)-sum)/a

(i,i)

;end

r=max

(abs

(x2-x1));

x1=x2;

k=k+1;

if k>

ndisp

('µü´ú꧰ü£¬•µ»ø');

return

;end

endx=x1;

kx

a=[-4,1,1,1;1,-4,1,1;1,1,-4,1;1,1,1,-4];

b=[1,1,1,1]』;

x0=[0,0,0,0]』;

[x,k]=gaussmethod(a,b,x0,100,10^-5);

k =21

x =-1.0000

-1.0000

-1.0000

-1.0000

實驗7 線性方程組的迭代法

【實驗目的】

用jacobi迭代法、gauss-seidel迭代法求解線性方程組

【實驗內容】

了解matlab語言的用法

用jacobi迭代法、gauss-seidel迭代法求解線性方程組

【實驗所使用的儀器裝置與軟體平台】

計算機,matlab r2018a

【實驗方法與步驟】

1、function [x,k]=jacobimethod(a,b,x0,n,emg)

2、function [x,k]=gaussmethod(a,b,x0,n,emg)

3、用jacobi迭代法、gauss-seidel迭代法求解線性方程組

一、jacobi迭代法

【實驗結果】

( % a是線性方程組的左端矩陣

% b是右端向量

% x0是迭代初值

% n表迭代次數上限,若迭代次數大於n,則迭代失敗

% emg是控制精度

%用jacobi迭代法求線性方程組ax=b的解

% k表示迭代次數

% x表示用迭代法求得的線性方程組的近似解

)定義函式

function [x,k]=jacobimethod(a,b,x0,n,emg)

n=length(a);

x1=zeros(n,1);

x2=zeros(n,1);

x1=x0;k=0;

r=max(abs(b-a*x1));

while r>emg

for i=1:n

sum=0;

for j=1:n

if i~=j

sum=sum+a(i,j)*x1(j);

endend

x2(i)=(b(i)-sum)/a(i,i);

endr=max(abs(x2-x1));

x1=x2;

k=k+1;

if k>n

disp(『µü´ú꧰ü£¬•µ»ø』);

return;

endend

x=x1;kx

二、gauss-seidel迭代法

【實驗結果】

( % a是線性方程組的左端矩陣

% b是右端向量

% x0是迭代初值

% n表迭代次數上限,若迭代次數大於n,則迭代失敗

% emg是控制精度

%用gauss-seidel迭代法求線性方程組ax=b的解

% k表示迭代次數

% x表示用迭代法求得的線性方程組的近似解

)定義函式

function [x,k]=gaussmethod(a,b,x0,n,emg)

n=length(a);

x1=zeros(n,1);

x2=zeros(n,1);

x1=x0;

r=max(abs(b-a*x1));

k=0;

while r>emg

for i=1:n

sum=0;

for j=1:n

if j>i

sum=sum+a(i,j)*x1(j);

elseif jn

disp(『µü´ú꧰ü£¬•µ»ø』);

return;

endend

x=x1;kx

【結果分析與討論】

求解線性方程組 Jacobi迭代法

求解線性方程組 jacobi迭代法 求解線性方程組 jacobi迭代法 include include using namespace std 二維陣列動態分配模板 template t allocation2d int m,int n return a 一維陣列動態分配模板 template t ...

jacobi迭代法求解線性方程組

首先將 方程組中的 係數矩陣 a分解成三部分,即 a l d u,如圖1所示,其中 d為對角陣,l為下三角矩陣,u為上三角矩陣。之後確定迭代格式,x k 1 b x k f 這裡 表示的是上標,括號內數字即迭代次數 如圖2所示,其中 b稱為迭代矩陣,雅克比迭代法中一般記為 j。k 0,1,再選取初始...

線性方程組之迭代法篇

不管哪一種數值演算法,其設計原理都是將複雜轉化為簡單的重複,或者說,通過簡單的重複生成複雜,在演算法設計和演算法實現過程中,重複就是力量 1 題記 一般地,線性方程組可以表達為 ax b 其中,a稱為係數矩陣,b稱為右端項,x為待求的未知數向量。迭代法的適用場合。如果未知數個數不多的話,用消去法 包...