matlab-雅克比迭代法


%算法 p188
%例題 p209
clc;
clear;
A=[1 0.4 0.4
0.4 1 0.8
0.4 0.8 1];
b=[ 1
2
3];
%迭代四次
height=size(A,1);
D=diag(diag(A));
L=tril(A,-1);%得到L
U=triu(A,1);%得到U
% x=[1 ;1 ;1]%初始向量x
x=ones(height,1);
k=0;
for i=1:1:length(A)
for j=1:1:length(A)
sum=0;
if j~=i
sum=sum+A(i,j)*x(j);
end
x(i)=(b(i)-sum)/A(i,i);
k=k+1;

end
% %迭代4次
% %迭代矩陣B
% B=inv(D)*(L+U)
% f=inv(D)*b
% x(1)=B*x(1)+f
% x(2)=B*x(2)+f
% x(3)=B*x(3)+f
end
x1=A\b
x


%上面的三行代碼等於下面注釋掉的多行代碼
% d=diag(A)
% D=zeros(height,height);
% for i=1:1:height
% D(i,i)=d(i)
% end
% L=zeros(height,height);
% U=zeros(height,height);
% for i=1:1:height
% for j=1:1:height
% if i<j
% L(i,j)=A(i,j)
% else if i>j
% U(i,j)=A(i,j)
% end
% end
% end
% end
%A=D+L+U
%k表示迭代次數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM