我试图解决一个样本非线性问题,我想建立一个预条件的牛顿库洛夫解算器科学优化. 你知道吗
我通过lineroperator使用spilu设置预条件器。矩阵是随自变量变化的,即矩阵M(x),在每次非线性迭代中,M(x)需要像F(x)一样更新,即残差。你知道吗
似乎newton\u krylov中的“inner\M”选项只在过程开始时被线性化器调用一次。如何设置“inner\M”预条件器选项以在每次牛顿迭代中执行M(x)更新?你知道吗
具体来说,我无法理解中的描述 https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.optimize.newton_krylov.html 对于“内部”设置:
“…如果预条件器有一个名为‘update’的方法,则在每个非线性步骤之后,它将被称为update(x,f),其中x表示当前点,f表示当前函数值。”
非常感谢。你知道吗
遵循下面的示例 doc/scipy/ ... still-too-slow-precondition, 将
M.update
设置为将x
复制到全局的函数,这里是xglo
。 或者,用self.xupdate
创建一个类。你知道吗(我不知道这是否真的是个好主意,这取决于你的前提条件。
scicomp.堆栈也许是一个更好的提问的地方。 when-is-newton-krylov-not-an-appropriate-solver ()
相关问题 更多 >
编程相关推荐