声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 974|回复: 1

[编程技巧] 求助,fzero求解方程时碰到问题

[复制链接]
发表于 2007-1-5 00:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-1-5 10:41 | 显示全部楼层

回复

这种问题至少有5种方法可以用来分析.
如果你画一下图形, 不用猜测, 你就会发现函数有两个零点.
接下来, 我想你应该会分析了.
提示: 你可以取 x=-10:30000; 以便显示出函数的整体特征.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-24 21:21 , Processed in 0.058797 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表