首页 文章

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

提问于
浏览
1

我已经编写了一个代码,该代码通过牛顿法(雅可比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

    除非's a sort of homework, you'更好地使用solvers from scipy . 对于多维问题,请查看 fsolve (使用修改过的Newton-Raphson方法) .

相关问题