非线性方程求解!论文急用,大家救命!
上个月小弟在这里请教过一次,感谢大家给予的指导。现在又遇到一个问题,我用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>回复:(herotears)非线性方程求解!论文急用,大家救...
x0=input('input the initial value: x0=')<BR>%x0=10;<BR>%x1=2;<BR>x1=x0-f(x0)/g(x0);<BR>ge=1;<BR>flag=0;<BR>S=10^3;<BR>gmax=100;<BR>EPS=0.00001;<BR><BR>while 1<BR>y0=f(x0); y1=f(x1);<BR>k=1;<BR>while y0==y1;<BR>x0=x0+k*EPS;<BR>y0=f(x0);<BR>k=5*k;<BR>if k>s<BR>flag=1;<BR>break;<BR>end<BR>end<BR><BR>if flag==1<BR>disp('can not find the needed initial value x0');<BR>break;<BR>end<BR><BR>x=x1-(x1-x0)*f(x1)/(f(x1)-f(x0));<BR><BR>if abs(x-x1)<EPS<BR>x1=x;<BR>break;<BR>end<BR><BR>x0=x1; <BR>x1=x;<BR>ge=ge+1;<BR><BR>if ge>gmax<BR>disp('发散或在给定次数内无法求解')<BR>break;<BR>end<BR><BR>end<BR>ge<BR>x1<BR><BR><BR>试一下这个割线法程序 多谢拉,好像很复杂啊,偶是采鸟,回头我好好研究研究,现在没有时间搞这个了,我找到一个曲线救国的方法,不解它了先!
页:
[1]