非线性方程的牛顿法java_MATLAB牛顿法解非线性方程

function root=NewtonRootReal(f,a,b,eps)

f1=real(subs(sym(f),findsym(sym(f)),a));

f2=real(subs(sym(f),findsym(sym(f)),b));

if(f1==0)

root=f1;

end

if(f2==0)

root=f2;

end

if(f1*f2>0)

disp('>0')

return;

else

tol=1;

fun=diff(sym(f));

fa=real(subs(sym(f),findsym(sym(f)),a));

fb=real(subs(sym(f),findsym(sym(f)),b));

dfa=real(subs(sym(fun),findsym(sym(fun)),a));

dfb=real(subs(sym(fun),findsym(sym(fun)),b));

if(dfa>dfb)

root=a-fa/dfa;

else

root=b-fb/dfb;

end

while(tol>eps)

r1=root;

fx=real(subs(sym(f),findsym(sym(f)),r1));

dfx=real(subs(sym(fun),findsym(sym(fun)),r1));

root=r1-fx/dfx;

tol=abs(root-r1);

end

end

函数f既有实数部分,又有虚数部分,我把牛顿法修改了只求函数f实数部分为零的解。基于原始的NewtonRoot法,增加了real以求得实数部分。其他未曾修改。求大神看一下可以这样修改么?应该没有问题吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值