**:實驗結果
**:實驗結果
實驗報告
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];實驗7 線性方程組的迭代法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
【實驗目的】
用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為待求的未知數向量。迭代法的適用場合。如果未知數個數不多的話,用消去法 包...