MATLAB实现高斯赛德尔迭代

  • 格式:docx
  • 大小:11.87 KB
  • 文档页数:2

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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=I-(D-L)\A;%迭代矩阵 %或B=(D-L)\U;

f=(D-L)\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; %迭代次数+1

end

y

s

toc

t=1:K;

yy=abs(y'-1)/1;

plot(t,yy);

title('绝对误差图')