Scipy中InverseJacobian与BroydenFirst作为预条件器的底层原理问询
关于scipy.optimize.InverseJacobian与BroydenFirst作为newton_krylov预条件器的底层机制疑问
我正试图精准理解scipy.optimize.InverseJacobian与scipy.optimize.BroydenFirst的底层运作机制,尤其是将它们作为scipy.optimize.newton_krylov的inner_M参数时的具体行为。
举个具体场景:当选择GMRES方法时,newton_krylov需要求解形如$J(xk)\delta_xk=-F(xk)$的等价牛顿问题,但它并非直接计算雅可比矩阵,而是通过近似矩阵向量乘积$J(xk)\delta_x^k$来实现。
我了解到使用(近似)逆雅可比矩阵作为预条件器有助于加速收敛,因此推测scipy.optimize.InverseJacobian会对$J(x^k)$进行某种近似,但有两个核心疑问:
- 这种近似的具体数学方式是什么?
- 该近似是在GMRES的每次外层迭代中更新,还是仅在初始阶段计算一次?
我已成功运行以下代码,但希望从数学层面深入理解其运作逻辑:
jac = BroydenFirst() x0 = scipy.optimize.newton_krylov(fun, x0, # 其他参数省略 inner_M=InverseJacobian(jac))
内容的提问来源于stack exchange,提问作者Sceki
相关产品推荐
相关产品推荐

