声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2846|回复: 6

[编程技巧] 关于一元高次方程的求解

[复制链接]
发表于 2008-4-3 15:34 | 显示全部楼层 |阅读模式

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

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

x
方程的形式如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 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-4-7 10:23 | 显示全部楼层
个人拙见, 实在不知如何试作!
是否应该将问题给齐些, 才浅需试试!
如a系数为何?或你的测试程序?
 楼主| 发表于 2008-4-8 09:02 | 显示全部楼层
我把同样的问题通过化简,比如可以把一个200次幂的降到15次幂,同样用fsolve求解,指数低的得到的解就是显示exitflag=1,fval是一个接近于零的数,说明求解是正常的,而用高次幂的方程求解得到的根(和低次幂的解是一样的)就显示exitflag=-2,fval是一个很大得数,太困惑了,这是怎么回事呢?请高手明示!
发表于 2008-4-8 14:47 | 显示全部楼层

回复 楼主 的帖子

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

  ans =
     1
说明:你的方程没有0解
 楼主| 发表于 2008-4-9 08:46 | 显示全部楼层
我大体上画了一下图形,看到在零点附近(未知数精确到小数点后4位),曲线振荡的比较大,能从负几百变化到正几百,对于这种振荡的比较剧烈的方程,应该用什么方法能解决?
发表于 2008-4-9 16:53 | 显示全部楼层
help fzero;
里面有个功能:
y = fzero(funhandle,[x1 x2]);找出x1~x2间的0根。
fun(x1)和fun(x2)必须异号!
 楼主| 发表于 2008-4-10 09:01 | 显示全部楼层
一般很难判断出fun(x1)和fun(x2)是否异号,除非画图来看,对于这样振荡的比较严重的方程应该怎么处理呢?请高手明示!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-28 05:00 , Processed in 0.055392 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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