|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我在用fzero求解一元三次方程时遇到奇怪的问题,望高人指点。程序如下(原来的程序段很长,这里仅截取一部分出问题的程序段):
a=3.8720*1e-1;b=7.7997*1e-5;c=9.8605*1e1;d=1.897*1e-6;
f=@(x)a*x.^3+(b-c^2)*x.^2+2*c*d*x-d^2;
[phi_solution,fval,exitflag]=fzero(f,0);
phi_solution
feval(f,7.0681*1e-10)
上面程序中a,b,c,d本来是中间变量,我在这里把它们的具体值(通过debug的step in求得)写出来当作已知量,方程如上所示,运行
之后phi_solution的值为2.5111e+004,而且不管你把后面的初值改成什么,输出结果都是2.5111e+004(这个很无语啊,这里取0)。
于是我猜想这个方程可能只有一个实根2.5111e+004,对应的多项式在该点处的值为 -3.5321e-004。但是当我把phi_solution=7.0681*1e-10代入方程中时,函数值为-3.3390e-012,明显求解时应该得到这个解才更精确呀。而且fzero不像fsolve那样
可以设TolFun的精度。望高人指点,不胜感激。
ps:这里给出的是我整个程序的一个大循环中的一部分,我希望得到在7.0681*1e-10附近的解,现在得到的2.5111e+004这个解在循环
运行一次之后会很大程度的改变a,b,c,d 的值,fzero 再求解的时候就会出现找不到解或者复数解得情况,再循环回来的时候就肯定出现
了错误信息。
[ 本帖最后由 leshyboy 于 2007-1-5 00:40 编辑 ] |
|