| 查看: 2277 | 回复: 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学习精华 |
» 猜你喜欢
289求调剂
已经有5人回复
一志愿 南京航空航天大学大学 ,080500材料科学与工程学硕
已经有5人回复
一志愿西安交通大学 学硕 354求调剂
已经有3人回复
317求调剂
已经有11人回复
287求调剂
已经有6人回复
一志愿南昌大学,327分,材料与化工085600
已经有7人回复
材料080500调剂求收留
已经有8人回复
353求调剂
已经有3人回复
北科281学硕材料求调剂
已经有3人回复
A区线材料学调剂
已经有3人回复













回复此楼
40