我有一个线性系统,我有 2 个矩阵,和, 和 2 个向量,和,我需要求解向量.是,是, 和向量,, 和, 都是. 我需要解决,这很复杂,您将在下面通过正确的乘法看到。实际系统是:
目前,我不知道如何进行,因为矩阵的维度不同。我很难获得矩阵很容易,并且更容易和更便宜地计算矩阵向量积,如, 为求解过程。
编辑:在我说之前曾是和曾是,我把它换了。
我有一个线性系统,我有 2 个矩阵,和, 和 2 个向量,和,我需要求解向量.是,是, 和向量,, 和, 都是. 我需要解决,这很复杂,您将在下面通过正确的乘法看到。实际系统是:
目前,我不知道如何进行,因为矩阵的维度不同。我很难获得矩阵很容易,并且更容易和更便宜地计算矩阵向量积,如, 为求解过程。
编辑:在我说之前曾是和曾是,我把它换了。
你的第二个任期是线性的, 所以可以改写为在哪里是一个合适的矩阵。你只需要弄清楚它的条目是:为此,您需要一些索引操作,但这应该是线性代数中的一个简单练习。
或者,您可以使用(更好的)符号第二个任期(或,取决于您的“产品”是如何定义的),并使用 Kronecker 产品属性进行操作.
根据 Federico 的回答,我想你可以很容易地弄清楚什么是通过显式编写第二项() 作为:
但:
所以:
所以最后主方程写成:
或者:
现在可以通过使用直接或迭代方法轻松求解上述线性方程。
所以我从 Federico Poloni 和 Alone Programmer 那里得到了两个很好的答案,但有一个问题是他们的所有解决方案都需要访问完整的 B 矩阵。因为在我的例子中,B 矩阵是增强的 hessian 矩阵,或者是 BDF1-PTC 非线性求解器中使用的增强 Jacobian 矩阵的导数,所以这不是一个简单的矩阵,我尝试使用 frechet 导数来获得增强的 Hessian 乘积比增广粗麻布本身。因此,我试图找到一种使用嵌套线性求解的方法,这样我就不必计算完整的 Hessian 矩阵,而是依赖我代码中现有的求解器技术。
解决这个问题的一种方法是使用像 GS 或 Jacobi 这样的平滑器并求解系统:
此迭代大约需要 3 次 GMRES 求解才能完全收敛问题和 6 为. 需要注意的一件事是,早期的猜测不需要太多的精确度。因此,一个理想的实现将在早期使用非常低的收敛 GMRES 调用(或者可能最初只使用一些平滑步骤),然后最终使用更强大的 FGMRES 重新启动和最终迭代的许多向量。