小妮妮 发表于 2008-4-3 15:34

关于一元高次方程的求解

方程的形式如a_1*x^n+a_2*x^(n-1)+......+a_n*x+a_n+1=0 ,未知数的最高次幂n=500,对于这样的非线性方程该如何求解?我用fsolve和fzero都求解过,即便初值设置在方程根的附近,用fsovle求解exitflag<0,提示得到的解不是方程的根;用fzero求解,初值同样设在根的附近,exitflag=1 但是fval(把得到的解带入方程后的值)=-1.27944646e^128,实际上fval应该是一个接近与0的数才对。对于这样的方程到底该如何处理呢?

补充一点,这个一元方程是一个超越方程,含有双曲函数的。

[ 本帖最后由 eight 于 2008-4-7 16:12 编辑 ]

ChaChing 发表于 2008-4-7 10:23

个人拙见, 实在不知如何试作!
是否应该将问题给齐些, 才浅需试试!
如a系数为何?或你的测试程序?

小妮妮 发表于 2008-4-8 09:02

我把同样的问题通过化简,比如可以把一个200次幂的降到15次幂,同样用fsolve求解,指数低的得到的解就是显示exitflag=1,fval是一个接近于零的数,说明求解是正常的,而用高次幂的方程求解得到的根(和低次幂的解是一样的)就显示exitflag=-2,fval是一个很大得数,太困惑了,这是怎么回事呢?请高手明示!

donkeyxu 发表于 2008-4-8 14:47

回复 楼主 的帖子

例子:
fun=@(x) x^500-x^30;
fzero(fun,2)

ans =
   1
说明:你的方程没有0解

小妮妮 发表于 2008-4-9 08:46

我大体上画了一下图形,看到在零点附近(未知数精确到小数点后4位),曲线振荡的比较大,能从负几百变化到正几百,对于这种振荡的比较剧烈的方程,应该用什么方法能解决?

donkeyxu 发表于 2008-4-9 16:53

help fzero;
里面有个功能:
y = fzero(funhandle,);找出x1~x2间的0根。
fun(x1)和fun(x2)必须异号!

小妮妮 发表于 2008-4-10 09:01

一般很难判断出fun(x1)和fun(x2)是否异号,除非画图来看,对于这样振荡的比较严重的方程应该怎么处理呢?请高手明示!
页: [1]
查看完整版本: 关于一元高次方程的求解