【问题标题】:Improved Newton method using Bisection method in Python在 Python 中使用二分法改进牛顿法
【发布时间】: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


    【解决方案1】:

    除非这是一种家庭作业,否则最好使用solvers from scipy。对于多维问题,请查看 fsolve(它使用修改后的 Newton-Raphson 方法)。

    【讨论】:

    • 这不是作业,这是我的研究。我不希望有人写我的代码或其他任何东西。我正在寻求建议!我不能使用 scipy 解决:D 因为这段代码更复杂。它使用牛顿多维方法(牛顿方法的推广)对超过 100 个网格点,求解具有 2 个边界条件的 2 阶非线性方程组。我在问是否有人知道在此代码中实现 bidection 方法的方法,最终具有更好的收敛性,或者她或他是否知道我可以使用的其他方法。还是谢谢你...
    • 我想说的很简单:除非绝对必要,否则不要费心实现自己的求解器(阅读:除非可用的解决方案用光了)。
    • Zhenya,代码不工作,因为它不能收敛!仅在具有“正常”计算 u 的特定数据中。但是,对于其他导入的数据,其中末尾的 u 应该是弯曲和平坦的,牛顿 m。不是收敛!我为过度跳过这个问题寻求帮助或建议。如果问题出在 FORTRAN 中,我会在 N 维中使用 mpi-hd.mpg.de/astrophysik/HEA/internal/Numerical_Recipes/… RTSAFE 模块。问题不在于是否有必要这样做。我必须这样做!问题是多维二分法是否可以作为此代码的实现!
    • 如果你只想从你不断链接的数字食谱中实现一些方法,你问的问题到底是什么?
    猜你喜欢
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2018-04-09
    相关资源
    最近更新 更多