|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
上个月小弟在这里请教过一次,感谢大家给予的指导。现在又遇到一个问题,我用matlab写了个割线法迭代求解非线性方程,但是结果却不令人满意,经常会出来复数解,请问高手如何解决?是方程本身的问题还是算法的问题?或者是初值给的不好,小弟最近就要交论文,而这个问题还没有解决,很着急,请大家不吝赐教!我在这里先行谢过!!!<BR><BR>非线性方程:y2./D-dp./(2*D)-(b*(1-2*a)*(8-12*y2./(a.^2*D)).^(1/3))./((1-a.^2*(8-12*y2./(a.^2*D)).^(2/3)).^(1/2))=0,未知数为y2。其他已知,对于这个方程,我想变化D,对于不同的D求出不同的y2,再得出D与y2的关系。<BR><BR>我编了一个函数:<BR>function y=fun2(y2,D,dp,b,a)<BR>y=y2./D-dp./(2*D)-(b*(1-2*a)*(8-12*y2./(a.^2*D)).^(1/3))./((1-a.^2*(8-12*y2./(a.^2*D)).^(2/3)).^(1/2));<BR><BR>割线法程序:<BR>y20=0;<BR>y21=0.0001;<BR>y22=y21-(fun2(y21,D,dp,b,a))*(y21-y20)./((fun2(y21,D,dp,b,a))-(fun2(y20,D,dp,b,a)));<BR>n=1;<BR>while(abs(y21-y20)>=1e-12)&(n<=10000)<BR> y20=y21;y21=y22;<BR> y22=y21-(fun2(y21,D,dp,b,a))*(y21-y20)./((fun2(y21,D,dp,b,a))-(fun2(y20,D,dp,b,a)));<BR> n=n+1;<BR>end<BR> |
|