在Python中使用Bisection方法改进Newton方法

时间:2013-05-12 15:50:52

标签: python optimization newtons-method bisection

我编写了一个代码,通过牛顿法(雅可比N + 1 * N + 1)求解高维(i = 0,N)的二阶非线性方程组,具有2个边界条件。

我想问你,如果我可以在这个N维问题中实现二分法。不幸的是,牛顿收敛对我的问题的某些区域不起作用。

根据此来源:http://ursa.as.arizona.edu/~rad/phys305/root_finding/node4.html

” 改进的根发现方案是结合二分法和Newton-Raphson方法。二分法保证根(或奇点),并用于限制线性假设较差时Newton-Raphson方法估计的位置变化。然而,Newton-Raphson步骤采用接近线性的方式来加速收敛。

换句话说,如果我们知道我们的两个边界点之间有一个根,我们首先考虑Newton-Raphson步骤。如果这可以预测下一个超出我们括号范围的点,那么我们会通过选择范围的中点作为下一个点来进行二分步骤。然后,我们在下一个点评估函数,并根据评估的符号,用新点替换其中一个边界点。这使得根部保持在括号内,同时让我们受益于Newton-Raphson的速度。 “

...在N维问题中可以用Python做到这一点吗?

FORDAN的Rtsafe模块在ndimensional可能做到这一点,并且Matlab可能有一个类似的模块......

1 个答案:

答案 0 :(得分:0)

除非是一种功课,否则最好不要使用solvers from scipy。对于多维问题,请查看fsolve(使用修改后的Newton-Raphson方法)。