MATLAB关于sor超松弛算法function [ y,n ] = sor( w,x )a=-12*eye(10)+ones(10);n=0;d=-11*eye(10);b=ones(10,1);l=tril(a,-1);u=triu(a,1);bw=(d+w*l)\(d-w*d-w*u);dw=w*(d+w*l)\b;y=bw*x+dw;while norm(y-x)>0.00001x=y;y=bw*x+dw;n=n+1;endend以上是我的
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/24 10:47:44
MATLAB关于sor超松弛算法function [ y,n ] = sor( w,x )a=-12*eye(10)+ones(10);n=0;d=-11*eye(10);b=ones(10,1);l=tril(a,-1);u=triu(a,1);bw=(d+w*l)\(d-w*d-w*u);dw=w*(d+w*l)\b;y=bw*x+dw;while norm(y-x)>0.00001x=y;y=bw*x+dw;n=n+1;endend以上是我的
MATLAB关于sor超松弛算法
function [ y,n ] = sor( w,x )
a=-12*eye(10)+ones(10);n=0;
d=-11*eye(10);b=ones(10,1);
l=tril(a,-1);u=triu(a,1);
bw=(d+w*l)\(d-w*d-w*u);
dw=w*(d+w*l)\b;
y=bw*x+dw;
while norm(y-x)>0.00001
x=y;
y=bw*x+dw;n=n+1;
end
end
以上是我的function函数.
x=zeros(10,1)
[y,n]=sor(1.1,x)
计算出来结果不对.
w=1时候,结果与seidel的结果一样.
w不为1时候,为什么结果不一样了.按理说应该一样才对
MATLAB关于sor超松弛算法function [ y,n ] = sor( w,x )a=-12*eye(10)+ones(10);n=0;d=-11*eye(10);b=ones(10,1);l=tril(a,-1);u=triu(a,1);bw=(d+w*l)\(d-w*d-w*u);dw=w*(d+w*l)\b;y=bw*x+dw;while norm(y-x)>0.00001x=y;y=bw*x+dw;n=n+1;endend以上是我的
哈哈,我刚才也弄了半天.
dw=w*(d+w*l)\b;
最好改为:
dw=(d+w*l)\b*w;
可能效果会好一些.