为什么 Newton-Krylov 迭代在这个问题上停滞不前?

计算科学 参考请求 scipy 牛顿法
2021-12-24 19:35:15

考虑取自SciPy 文档页面的积分微分热方程:

2P=α(Ωcosh(P)dxdy)2

这个问题中找到了。

在考虑的 Python 代码中,应用了 Newton-Krylov 迭代,并且对于α=10执行得非常好。α从 10 更改为 15 或更多时,此方法会失败。这种行为可能是什么原因,是否有可能改善这种情况?

感谢任何参考,谢谢。


编辑:在问题的第一部分,我询问了这个问题背后可能的物理背景。几天后,我决定向 scipy-dev 新闻组发表讲话,几乎立即收到了 Pauli Virtanen 的回复:

这只是一些随机方程。它没有物理或其他背景。

这些信息使对该问题的进一步讨论变得不那么有趣,所以我相当接近这个问题。

2个回答

我不确定这是否是答案,但将这种情况视为在这种情况下,您正在尝试解决α

Ωcosh(P)dxdy=0

由于 cosh 看起来像这样:

您可以看到,在任何域上集成它永远不会给您零。 ( )的扩散不足以抵消这个限制,那么你可能会遇到问题。P2P

一般来说,求解线性代数方程组的迭代方法收敛性差(或根本不收敛)归因于相应矩阵是病态的。在机械问题中,如果模型是“松散的”(没有应用足够的边界条件,或者模型由弹性特性非常不同的材料组成,例如钢和泡沫),则可能会观察到这一点。对于传热问题,这可能对应于物理模型由具有极大不同传热系数的不同材料组成的情况。