这里是MIT 18.085 computational science and engineering的学习笔记
LEC 3 介绍了解方程中的unknowns的三种方法:
Matlab中的backlash
针对sparse matrix, reorder rows, and do elimination. 变成对角阵或者三角阵之后,就变得简单了。
针对大规模的对称矩阵,使用conjugate gradient方法,也称作multigrid(多重网格),incomplete LU。 不了解
下面重点讲Matlab中的backlash算力: 实际问题中,经常会遇到需要解,,甚至更多的情况,例如设计问题中,尝试给不同的设计参数后的系统响应如何?
如果使用消元法,意味着每一个方程都需要做一遍消元,效率太低了
如果使用的方法,会有以下问题
不容易获得,例如当A的size是矩形的时候
可能A本身是稀疏矩阵或者对角阵,A的逆矩阵却是dense
A的逆矩阵是dense的时候,的乘法操作takes long
Matlab的实现方式是: 将右侧的看作是系统的输入/激励,未知量看作是系统的响应。由于A矩阵是constant,意味着系统是线性时不变的。假设我们可以获得每个独立impulse输入对应的响应,当输入是多个impulse的线性组合,那么也是每个独立impulse产生的响应的线性组合。 假设是一个3x3矩阵,对应有3个独立的impulses,分别是,,,它们对应的系统响应为、、. 由于,和组成的block matrix 是单位矩阵,那么、、组成的block matrix 应当是. 如何获得?对block matrix [A, I]做消元,当A矩阵消元变成I的时候,对应地,右侧由I变成。