MATLAB实现雅克比迭代
- 格式:docx
- 大小:11.85 KB
- 文档页数:2
clear all;
close all;
clc;
tic;
format longe
disp('请输入参数');
K=input('维数K=');
tic
A=100*rand(K);% A元素是0-100
for i=1:K
A(i,i)=sum(abs(A(i,:)))+25*rand(1); %对角占优的量为0~25 end
b=zeros(K,1);
for i=1:K;
x=0;
for r=1:K;
x=x+A(i,r);
end
b(i,1)=x;
end%产生b矩阵,b中的元素为A中对应行的和,目的是使方程解全为 1 jd=input('控制精度jd=');
I=eye(K); %单位阵
L=-tril(A,-1);%下三角
U=-triu(A,1);%上三角
D=diag(diag(A));%对角矩阵
B=D\(L+U); %迭代矩阵或B=I-D\A;
f=D\b;%f
x0=zeros(K,1); %初始迭代矩阵
y=B*x0+f; %迭代公式
s=1; %迭代次数
while norm(y-x0)>=jd&&s<3000; %迭代条件
x0=y;
y=B*x0+f; %迭代公式
s=s+1;
end
y
s
toc
t=1:K;
yy=abs(y'-1)/1;
title('绝对误差图')