24小时热门版块排行榜    

CyRhmU.jpeg
查看: 428  |  回复: 6
当前主题已经存档。
【有奖交流】积极回复本帖子,参与交流,就有机会分得作者 最爱花诗雨 的 4 个金币

最爱花诗雨

金虫 (正式写手)

穷鬼

[交流] 【求助】MATLAB的求解问题

求助:matlab 中的jacobi程序和松弛迭代的程序

[ Last edited by wuguocheng on 2009-10-21 at 20:20 ]
回复此楼
严于律己,宽以待人
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

最爱花诗雨

金虫 (正式写手)

穷鬼

严于律己,宽以待人
2楼2009-10-22 18:34:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主

不太明白楼主的意思


最爱花诗雨(金币+1,VIP+0):谢谢 10-27 19:14
Matlab里都有这些东西。如果你是要解方程组的话,直接调用就行了。想研读matlab源代码的话,也没有问题的。
3楼2009-10-22 19:31:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

prairie

木虫 (正式写手)

★ ★ ★
nono2009(金币+2,VIP+0):谢谢应助。欢迎常来交流。 10-22 20:07
最爱花诗雨(金币+1,VIP+0):谢谢支持 10-27 19:15
function [x,n]=jacobi(A,b,x0,eps,varargin)
if nargin==3
    eps= 1.0e-6;
    M  = 200;
elseif nargin<3
    error
    return
elseif nargin ==5
    M  = varargin{1};
end  

D=diag(diag(A));    %求A的对角矩阵
L=-tril(A,-1);      %求A的下三角阵
U=-triu(A,1);       %求A的上三角阵
B=D\(L+U);
f=D\b;
x=B*x0+f;
n=1;                  %迭代次数

while norm(x-x0)>=eps
    x0=x;
     x=B*x0+f;
    n=n+1;
    if(n>=M)
        disp('Warning: 迭代次数太多,可能不收敛!');
        return;
    end
end
O(∩_∩)O~
4楼2009-10-22 20:04:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

prairie

木虫 (正式写手)

★ ★ ★
nono2009(金币+1,VIP+0):再奖1个! 10-22 20:08
最爱花诗雨(金币+2,VIP+0):正是我要找的sor迭代,不知道能不能调用? 10-23 18:02
function [x,n]=SOR(A,b,x0,w,eps,M)
if nargin==4
    eps= 1.0e-6;
    M  = 200;
elseif nargin<4
    error
    return
elseif nargin ==5
    M  = 200;
end  

if(w<=0 || w>=2)
    error;
    return;
end

D=diag(diag(A));    %求A的对角矩阵
L=-tril(A,-1);      %求A的下三角阵
U=-triu(A,1);       %求A的上三角阵
B=inv(D-L*w)*((1-w)*D+w*U);
f=w*inv((D-L*w))*b;
x=B*x0+f;
n=1;                  %迭代次数

while norm(x-x0)>=eps
    x0=x;
    x =B*x0+f;
    n=n+1;
    if(n>=M)
        disp('Warning: 迭代次数太多,可能不收敛!');
        return;
    end
end
O(∩_∩)O~
5楼2009-10-22 20:04:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

prairie

木虫 (正式写手)

我有很多,不过不记得名字了。中间的部分是核心程序,开头是比较高级的输入处理。还有个SSOR,不知道是不是superSOR 。下面是。
O(∩_∩)O~
6楼2009-10-22 20:06:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

prairie

木虫 (正式写手)

★ ★ ★ ★
nono2009(金币+2,VIP+0):谢谢分享! 10-22 20:27
最爱花诗雨(金币+1,VIP+0):谢谢~~~ 10-23 18:02
最爱花诗雨(金币+1,VIP+0):3Q 10-27 19:15
function [x,n]=SSOR(A,b,x0,w,eps,M)
if nargin==4
    eps= 1.0e-6;
    M  = 200;
elseif nargin<4
    error
    return
elseif nargin ==5
    M  = 200;
end  

if(w<=0 || w>=2)
    error;
    return;
end

D=diag(diag(A));    %求A的对角矩阵
L=-tril(A,-1);      %求A的下三角阵
U=-triu(A,1);       %求A的上三角阵
B1=inv(D-L*w)*((1-w)*D+w*U);
B2=inv(D-U*w)*((1-w)*D+w*L);
f1=w*inv((D-L*w))*b;
f2=w*inv((D-U*w))*b;

x12=B1*x0+f1;
x  =B2*x12+f2;
n=1;                  %迭代次数

while norm(x-x0)>=eps
    x0=x;
    x12=B1*x0+f1;
    x  =B2*x12+f2;
    n=n+1;
    if(n>=M)
        disp('Warning: 迭代次数太多,可能不收敛!');
        return;
    end
end
O(∩_∩)O~
7楼2009-10-22 20:07:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 最爱花诗雨 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见