| 查看: 2306 | 回复: 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学习精华 |
» 猜你喜欢
河北省自然科学基金
已经有8人回复
西安交大新媒学院副院长用撤稿论文结题
已经有5人回复
论文撤稿了
已经有5人回复
某211大学教师把个人教师官方主页改成:我跑了我跑了我跑了!官宣跑路!
已经有5人回复
26/27申博自荐
已经有9人回复
售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急
已经有3人回复
售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急
已经有7人回复
揭秘青基评审内幕:几个A才能顺利中标
已经有4人回复
青B发送上会通知了吗
已经有7人回复
博士申请
已经有3人回复












回复此楼
10