标题:
请问牛顿迭代法如何求方程的重根?谢谢。
[打印本页]
作者:
阿尔法孝直
时间:
2009-8-13 18:26
标题:
请问牛顿迭代法如何求方程的重根?谢谢。
并求出该重根是几重根。
最近在写用牛顿法解方程的程序,但牛顿法貌似只能求单根。
[
本帖最后由 阿尔法孝直 于 2009-8-13 18:28 编辑
]
作者:
lzy0274
时间:
2009-8-14 21:54
需要对牛顿迭代法进行适当的改变。
迭代格式采用:X(k)=X(k-1)-Mf(X(k-1))/f'(x(k-1));
其中,M为重根的阶次。
作者:
阿尔法孝直
时间:
2009-8-14 22:00
我是说先把所有根(无论单或重)都求出来,然后一个一个判断是几重根。
作者:
lzy0274
时间:
2009-8-15 11:00
感觉有难度,用牛顿法实现这个应该有困难。
作者:
KYOKO
时间:
2009-8-15 12:48
假设知道一个方程所有的根,又其中一个是二重根,如何最简单的方法判断哪个根是重根?
(X-A)(X-B)。。。(X-α)=0同原方程做判断?
作者:
阿尔法孝直
时间:
2009-8-17 01:00
可以对逐个根不断求导,知道导数不为零为止。例如对某个方程F(X)=0的一个根X0求导:假设F'(X0)=0,F''(X0)=0,……,F(n-1阶导)(X0)=0,而F(n阶导)(X0)≠0,那么X0就是方程F(X)=0的n重根。
作者:
天宫公主
时间:
2009-8-17 09:03
假设 F(x) = 0 的解是一个有限集,任何一个根的次数也都是有限的*,且 F 足够光滑(具体条件还没想好),以下步骤可以得出 F(x) = 0 的所有解:
记,N(F, x_0) 为初始值为 x_0 时,用牛顿迭代法对方程 F(x) = 0 找到的那个根。
令 f_0 = F,随便挑一个 x_0,N(f_0, x_0) 是 F(x) = 0 的一个根。
i = 1;
while f_i (x) = 0 仍然有根 {
令 f_i = f_{i-1} (x)/(x - N(f_{i-1}, x_0));
求 N(f_i, x_0);/* 它仍然是 F(x) = 0 的一个根。
如果没有重复根,N(f_i, x_0)
必然不同于以前找到的根。如
果有重复根,f_{i+1} 必然能让
f_i 在 N(f_i, x_0) 这个重复根
上降次。*/
i ++;
}
* 例如,如果 f(x) = e^(1/x),g(x) = f(x) 的 analytic continuation,以上程序对解 g(x) = 0 就会死机。
[
本帖最后由 天宫公主 于 2009-8-17 09:19 编辑
]
作者:
阿尔法孝直
时间:
2009-8-17 14:57
嗯,明白了,谢谢天宫。
作者:
KYOKO
时间:
2009-8-17 23:03
公主的那个只用了牛顿迭代法?
我看光用大学里学的高数都不行啊
作者:
阿尔法孝直
时间:
2009-8-18 01:12
反正我是看懂了,每求出一根,就把当前函数除以(x-当前根)再解,求出一个除一次,就像因式分解那样。
欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/)
Powered by Discuz! 5.0.0