%%%程序编写者 西北工业大学自动化学院 Email: yincwxa2013@mail.nwpu.edu.cn
%% All rights reserved
clear
clc
a=input('输入系数矩阵a=')
b=input('输入自由项b=')
x1=input('输入初始值x1=')
n=length(b);
if sum(abs(x1))>0
x1=x1;
else x1=zeros(1,n);
end
t=2;
%%%%%%%%%%%%%%%%%雅克比迭代法
while (t>0.00001)
for i=1:n
q=0;
for j=1:i-1
q=q+a(i,j)*x1(j);
end
p=0;
for j=i+1:n
p=p+a(i,j)*x1(j);
end
x2(i)=(b(i)-q-p)/a(i,i);
end
t=max(abs(x2-x1));
x1=x2;
end
x2
%%%%%%%%%%%%%%%%%%%%%%%%高斯赛德尔迭代法
while (t>0.00001)
for i=1:n
q=0;
for j=1:i-1
q=q+a(i,j)*x2(j);
end
p=0;
for j=i+1:n
p=p+a(i,j)*x1(j);
end
x2(i)=(b(i)-q-p)/a(i,i);
end
t=max(abs(x2-x1));
x1=x2;
end
x2
%%%%%%%%%%%%%%%%%%%%%%%%%%%超松弛迭代法
w=input('输入松弛因子(0
if w>0 w=w;
else w=0.5
end
while (t>0.00001)
for i=1:n
q=0;
if i>1
for j=1:i-1
q=q+a(i,j)*x2(j);
end
end
p=0;
for j=i:n
p=p+a(i,j)*x1(j);
end
x2(i)=w*(b(i)-q-p)/a(i,i)+x1(i);
end
t=max(abs(x2-x1));
x1=x2;
end
x2
%%%%%%%
%输入系数矩阵a=[-5 1 1 1;1 -5 1 1 ;1 1 -5 1; 1 1 1 -5]
a =
-5 1 1 1
1 -5 1 1
1 1 -5 1
1 1 1 -5
输入自由项b=[1 1 1 1 ]
b =
1 1 1 1
输入初始值x1=[0 0 0 0 ]
x1 =
0 0 0 0
x2 =
-0.5000 -0.5000 -0.5000 -0.5000
x2 =
-0.5000 -0.5000 -0.5000 -0.5000
输入松弛因子(0
w =
1.5000
x2 =
-0.5000 -0.5000 -0.5000 -0.5000
转载本文请联系原作者获取授权,同时请注明本文来自殷春武科学网博客。
链接地址:http://blog.sciencenet.cn/blog-748007-751137.html
上一篇:数值分析--低阶求积公式matlab程序
下一篇:数值分析--多项式拟合程序matlab程序