| 查看: 2442 | 回复: 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学习精华 |
» 猜你喜欢
浙江师范大学是怎么坑我的
已经有15人回复
浙江师范大学是怎么坑我的
已经有4人回复
求教各位大神:2026教育部人文社科青年基金项目何时公示呀?
已经有6人回复
面上有专家说实验设备不是我们单位的
已经有8人回复
科研求助
已经有4人回复









回复此楼