【发布时间】:2013-05-06 17:24:18
【问题描述】:
我编写了一个代码,该代码通过牛顿法 (Jacobian 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 的速度。 "
... 可以在 Python 中解决 N 维问题吗?
n维中FORTRAN的Rtsafe模块可以做到这一点,可能Matlab也有类似的模块...
【问题讨论】:
标签: python optimization newtons-method bisection