24小时热门版块排行榜    

查看: 2844  |  回复: 2

njutsjh

木虫 (小有名气)

[求助] 关于用Broyden法解非线性方程组的问题已有1人参与

我用Broyden法解非线性方程组的时候,Matlab需要计算很长时间才能出结果,是不是代码有不合理的地方,该怎么修改,谢谢大家!
代码如下:
function =Broyden(func,u,TOL,m)
% 应用Broyden方法求非线性方程组法f(x)=0。
% func为待求解的非线性方程组。
% u为初始近似向量。
% TOL为误差容限。
% m为最大迭代次数。
N=size(func);
n=N(1);
var=findsym(func);
A=subs(jacobian(func),var,u);
v=subs(func,var,u);
H=inv(A);
s=-H*v;
u=u+s;
for k=1:m
    w=v;
    v=subs(func,var,u);
    y=v-w;
    z=-H*y;
    p=-s'*z;
    if(p==0)
        disp('Method failed!');
        return;
    end
    C=p*eye(n)+(s+z)*s';
    H=C*H/p;
    s=-H*v;
    u=u+s;
    disp(vpa(u',6));
    if(max(abs(s))<TOL)
        break;
    end
end
u=vpa(u,6);
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

修改初始值?
2楼2015-01-08 09:43:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mathstudy

金虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
试试这个,你源程序里面太多符号运算,还有就是你的Jacobi矩阵是调用http://www.pcs.cnu.edu/~bbradie/matlab/systems/broyden.m
3楼2015-01-08 10:52:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 njutsjh 的主题更新
信息提示
请填处理意见