| 查看: 2412 | 回复: 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学习精华 |
» 猜你喜欢
什么时候开奖?
已经有4人回复
咱们一起用铁证分析2026国家社科基金中标与否
已经有27人回复
为什么余额宝的年化利率越来越低?主要原因有哪些?
已经有3人回复
2027广东省杰青
已经有9人回复
朋友圈看到的
已经有5人回复
欢迎发来filecode的Mz6后的代码验证其规律
已经有110人回复
明天放榜?
已经有5人回复
时间戳变了,能看出什么问题?
已经有11人回复
重要消息,中午系统在维护
已经有10人回复
投稿咨询
已经有6人回复










回复此楼