手算高斯賽德爾迭代法求解方程?使用者5457906305612392021-07-04 12:51:59

1。 用雅克比迭代法和高斯——賽德爾迭代法求解下列方程組,取迭代初值[0;0;0]。

(1) 程式設計求解,並與用數學軟體求解的結果對比。

(2) 考察迭代法的收斂性,若均收斂,對比兩種方法的收斂速度。

解:源程式:

①雅克比迭代法:建立函式檔案jacobi。m

function [n,x]=jacobi(A,b,X,nm,w)

%用雅克比迭代法求解方程組Ax=b

%輸入:A為方程組的係數矩陣,b為方程組右端的列向量,X為迭代初值構成的列向量,nm為最大迭代次數,w為誤差精度

%輸出:x為求得的方程組的解構成的列向量,n為迭代次數

n=1;

m=length(A);

D=diag(diag(A)); %令A=D-L-U,計算矩陣D

L=tril(-A)+D; %令A=D-L-U,計算矩陣L

U=triu(-A)+D; %令A=D-L-U,計算矩陣U

M=inv(D)*(L+U); %計算迭代矩陣

g=inv(D)*b; %計算迭代格式中的常數項

%下面是迭代過程

while n<=nm

x=M*X+g; %用迭代格式進行迭代

if norm(x-X,2)