| 查看: 2250 | 回复: 0 | |||||
[交流]
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以求得实数部分。其他未曾修改。求大神看一下可以这样修改么?应该没有问题吧 |
» 收录本帖的淘帖专辑推荐
matlab编程绘图 | matlab学习精华 |
» 猜你喜欢
参与限项
已经有3人回复
假如你的研究生提出不合理要求
已经有7人回复
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复












回复此楼