宇宇 发表于 2009-5-5 09:13

牛顿法求解非线性方程

我编的这个程序运行不出来,老有错!
初值x0=

ChaChing 发表于 2009-5-5 10:17

建议直接使用编辑贴出代码!
并看下本版规则! 给齐完整格式:出错代码和出错提示!

宇宇 发表于 2009-5-14 17:30

回牛顿法求解非线性方程复 楼主 宇宇 牛

function =mulsimNewton(F,x0,eps)
if nargin==2, eps=10^-6; end
x0=transpose(x0); Fx=subs(F,findsym(F),x0);
dF=Jacobian(F); c=subs(dF,findsym(dF),x0);
inv(c)
y=x0-Fx*inv(c); n=1; tol=1;
while tol>eps
    x0=y; Fx=subs(F,findsym(F),x0);
    y=x0-inv(c)*Fx; tol=norm(y-x0); n=n+1;
    if (n>10^10), disp('迭代次数大于最大值,可能不收敛'); return; end
end

function y=F(x)
y=;
y=;

这是错误提示
Warning: Function call F invokes inexact match D:\work\f.m.
??? Input argument "x" is undefined.
Error in ==> f at 2
y=;

[ 本帖最后由 ChaChing 于 2009-5-14 21:00 编辑 ]

ChaChing 发表于 2009-5-14 20:58

个人水平专业有限, 建议楼主先看下
newton raphson算法
http://forum.vibunion.com/forum/viewthread.php?tid=41020&highlight=Newton%2BRaphson

宇宇 发表于 2009-5-17 19:34

回复 地板 ChaChing 的帖子

还是谢谢哦

绿茶咖啡 发表于 2009-5-17 20:55

可作下修改

function =mulsimNewton(x0,eps)
if nargin==1
    eps=10^-6;
end
x0=transpose(x0);
Fx=subs(F,findsym(F),x0);
dF=Jacobian(F);
c=subs(dF,findsym(dF),x0);
y=x0-inv(c)*Fx; n=1; tol=1;
while tol>eps
    x0=y; Fx=subs(F,findsym(F),x0);
    y=x0-inv(c)*Fx; tol=norm(y-x0); n=n+1;
    if (n>10^10), disp('迭代次数大于最大值,可能不收敛'); return; end
end

function y=F(t,s)
syms t s;
y=;
页: [1]
查看完整版本: 牛顿法求解非线性方程