MATLAB实现雅克比迭代
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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('绝对误差图')