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

[求助] 一道对数题

[复制链接]
发表于 2009-4-1 17:19:29 | 显示全部楼层
一元N次方程,用牛顿迭代法不可能解出0的解,若解出0解,说明常数项是0。那么除以自变量后就自动降幂了。当然你一定要说有一个解很小,1e-14,那么它跟0又有什么分别呢。我们解方程,很多情况是用于工程运算的需要,只要解出它的近似值就可以,为什么非要那么精确呢。
还有,工程运算遇到的方程,一般幂到20、30次方就不错了。遇到非常高的次方,几乎不可能。
总之,我觉得用这种方法解N个根,应用于工程运算,精度已经足够了。
我用的是VB6.0,如果大家感兴趣,可以跟我联系,不会有保留的。
其实我说一下原理,大家都可以马上编出代码来,用什么语言都一样。
对于数的乘法、除法、加法、幂的运算,自己设计它们是复数的运算子程序。
运用牛顿迭代法时,也是让它们成为复数的运算。结束程序的条件是前后两个数的差的绝对值等于我们事先设定的极小值。我事先设定的极小值等于1e-14。
初始条件不用设定,就用随机数来确定初始值的实部和虚部。有趣的是,用虚数作初始值,可以解出所有的根,包括实数根,而用实数作初始值,只能解出实数根。
当方程无实数解时,用实数作初始值,会陷入死循环。而用虚数则不会,我没有遇过死循环的,基本上循环10次以内都可以得出解。
当然,可以先用实数作初始值,若循环运行100次(其实 不用100次),还没出结果,说明无实数解,就跳到程序的开始处,用虚数作初始值再运行即可。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-1 19:13:53 | 显示全部楼层
VB我不会,。。。

能问一下吗,你们在讨论的牛顿迭代法包括他的改进版吗?
也就是说有k重根时是不是加了个系数k? 那个割线法算不算牛顿迭代法的离散形式?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-1 20:13:26 | 显示全部楼层
有没有重根没关系,因为牛顿迭代法每次只能解出1个解,解出一个解X1后,用因式分解的方法降幂,降幂后的方程中若还有X1的解,自然在以后会再次解出。当然由于电脑精确度的问题,可能造成原来的重根,在先后解出后数值略有差别,不过没关系,在所有的根都解出后,把它们当做初始值,代入原始方程,每个再运用牛顿迭代法重新解一次,若是重根,重新解后的值肯定相等。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-1 20:51:06 | 显示全部楼层
刚翻了书

书上说的降阶法和LLJ_LLJ的说法是差不多的
但也说了我说的精度降低的缺点

避免的策略是每次求最大绝对值的根
可以保证精度是稳定降低的

另外,牛顿方法似乎很难求复根
有比牛顿法更好的求复根的方法
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-1 20:55:08 | 显示全部楼层
比较有效的方法是首先确定根的范围
这个有很多方法

如果都是实根
拉盖尔方法能确保从任何值收敛到一个根

如果有复根,必须采取纠正措施以避免计算进入一个循环圈
=================================
国内的中文资料是我手里这本
《C语言数值算法程序大全(第二版)》
比较全

网上有电子版,具体的章节内容很多
我这里就不啰嗦了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-1 21:01:24 | 显示全部楼层
另外,31#的说不必须要很高精度的说法我不赞同

有时候不是你必须要这么高精度
而是,计算精度的丢失很可能造成你结果一位精度也没有

假设输入精度是0.0001
牛顿迭代平均是10次收敛
因为涉及到了加法,所以每次精度都会损失0.00005
即每个牛顿迭代损失精度0.0005
求20次方程的根,进行20个牛顿迭代,
则很可能初次解出的根精度是0.01
再进行牛顿迭代,我想收敛后的根其分辨率是不可能大于0.01的
即间隔小于0.01的根无法分辨吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-1 21:18:30 | 显示全部楼层
求20次方程的根,进行20个牛顿迭代,
则很可能初次解出的根精度是0.01
----------------------------------------------
这种担心不用怕。若第一次解出的根的精度是о()。
那么降幂后解第二次解出的根作为原始值马上代入原始方程,重新运用牛顿迭代法来解,这样解得的第二个根的精度照样是
о()。依次类推。
若第一次解出的根的精度就不符合要求,那么,牛顿迭代法就不能用来解1元高次方程的任何一个根了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-2 08:43:45 | 显示全部楼层
老大是从事工程相关的行业么?
好像对工程计算很有经验啊

俺对这方面很感兴趣
当然并不如老大懂的多
只是看过几本歪书
理论上瞎讲还可以
即理论上无限精度的方程的解
实践上并不了解关于有限精度的问题

老大推荐点资料吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-2 08:45:36 | 显示全部楼层
另外,好像有另外一个定理能定界根的范围
在我一本数学小辞典上

谁清楚,在这里贴出来
完善下这个帖子

呵呵
====================================
是否有必要拆帖子
好像偏离题目了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-4-2 13:41:57 | 显示全部楼层
牛顿迭代法的原理是用点的切线与横坐标的交点来逐渐逼近曲线与横轴的交点。
我试了一下,发现用虚数来运用牛顿迭代法也可以来解出方程的解,为什么会如此?我不懂。它的几何原理是什么?
是不是复变理论中有提及这方面的内容?由于我的知识面不广,很多东西不清楚。所以强词夺理之处,还请各位高手们不惜批评指出。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-5-20 01:10 , Processed in 0.045487 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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