找回密码
 欢迎注册
楼主: 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-12-28 19:14 , Processed in 0.023620 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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