找回密码
 欢迎注册
楼主: factor_hg

[求助] 一道对数题

[复制链接]
发表于 2009-3-30 23:15:22 | 显示全部楼层
一元N次方程,先用牛顿迭代法解出1个根,然后应用因式分解,降次数成一元N-1次方程,
依此不断运用牛顿迭代法,不断降幂,就可解出所有的根,包括重根。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-3-31 07:56:32 | 显示全部楼层
楼上,实际情况很复杂

逐次降级很可能精度越来越低
直到结果完全错误
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-3-31 12:25:04 | 显示全部楼层
用matlab整了一下。


>> f = @(x)10^log10(x)+x^log10(x)-20

f =

    @(x)10^log10(x)+x^log10(x)-20

>> vpa(bisection(f,0,1,1e-10),10)  %二分法

ans =

.7245429227e-1


>> vpa(fzero(f,0.2),10)    % 自带的函数

ans =

.7245429225e-1


>>
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-3-31 14:05:33 | 显示全部楼层
结果完全错误是不可能的,又不是比较两个数的大小。
如果怕精度不过,可以把解出的N个根,当作初始值,再运用牛顿迭代法分别重新解一下就可。
自己没有试过不要乱下判断。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-3-31 17:02:49 | 显示全部楼层
无心人 的意思是说,当误差累积到一定程度,结果就没有意义了。
当然你说的再次迭代可以看作是提升精度的一种方法。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-1 07:48:38 | 显示全部楼层
举个例子

100次方程有两个解1.0000000001E-8, 1.0000000002e-8
当逐次降解到10次时,解出的这两个解很可能成为0
而你用牛顿重新带入0,恐怕也不能迭代到这两个解
因为0到这两个数间也可能有其他解
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-1 07:49:34 | 显示全部楼层
另外,有时候,牛顿迭代的初始解带入后会出现发散的情况
而不是收敛
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-1 09:29:25 | 显示全部楼层
原帖由 LLJ_LLJ 于 2009-3-30 18:45 发表
是不是所有的一元N次方程,都可以用牛顿迭代法来解所有的N个根?
我试了一下,对于实数系数的一元N次方程,引进复数的计算方法,可以解出所有的N个复数根。
你是用什么语言写的程序?可否把程序发给我试试?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-1 10:03:42 | 显示全部楼层
如果是标准的牛顿迭代
可能存在精度问题

当然,用高精度浮点也许可以避免
但速速就慢了

而且工程中的方程,其规模是很大的
不是说10次8次的
很可能是上千变量几百次幂的方程组

所以避免精度损失是第一位的
否则,两个解当做重根的情况很可能发生
更惨的是离得很近的几十个解都当做重根了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-1 10:04:34 | 显示全部楼层
我觉得应该辅助以其他方法

这方面的资料我有本书
回家我去查查
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-30 21:39 , Processed in 0.044756 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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