📄 mysor.m
字号:
function mySOR(A,b,w,e)
%结果写入并保存在mySOR_result.txt
[n,n]=size(A);
x=zeros(1,n);
x0=zeros(1,n);
N=2000; % 给定最大迭代次数
k=1;
while k<=N
x(1)=(b(1)-A(1,2:n)*x0(2:n)')/A(1,1);
for i=2:n
s=0;
for j=1:i-1
s=s+A(i,j)*x(j)';
end
for j=i+1:n
s=s+A(i,j)*x0(j)';
end
x(i)=(1-w)*x0(i)+w*(b(i)-s)/A(i,i);
end
p=wuqiongfanshu(x,x0);
if p<=e
txt = fopen('mySOR_result.txt', 'wt');
fprintf(txt,'用SOR迭代求解线性方程组的输出结果:\n\n');
fprintf(txt,'迭代次数: %d次\n\n',k);
fprintf(txt,'迭代因子: %f\n\n',w);
fprintf(txt,'x的值:\n\n');
for i=1:n
fprintf(txt, 'x(%d)=%f\n\n',i,x(i));
end
fclose(txt);
break;
end
k=k+1;
x0=x;
end
if k==N+1
fid = fopen('mySOR_result.txt', 'wt');
fprintf(txt,'\n用SOR迭代求解线性方程组的输出结果:\n\n');
fprintf(txt,'迭代次数: %d次\n\n',k);
fprintf(txt,'超过最大迭代次数,求解失败!');
fclose(txt);
end
function p=wuqiongfanshu(x,x0)
y=x-x0;
y=abs(y);
p=max(y);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -