您好,欢迎来到纷纭教育。
搜索
您的当前位置:首页MATLAB实现高斯赛德尔迭代

MATLAB实现高斯赛德尔迭代

来源:纷纭教育


%高斯赛德尔迭代

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('绝对误差图')

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务