现代数值计算方法一般都会转化为求解线性方程组. 线性方程组的矩阵形式如下所示:
[A][x]=[b][A][x]=[b][A][x]=[b]
其中 AAA 是 m×nm \times nm×n 矩阵,m≥nm \ge nm≥n, x∈Rnx \in R^{n}x∈Rn, b∈Rmb\in R^{m}b∈Rm. 由于求解线性方程组在数值分析中基础性核心地位, 线性方程组求解算法和技术一直层出不穷: 直接法,迭代法,并行算法,分块技术,超线程技术…
如果矩阵AAA是n×nn \times nn×n阶方阵, 线性方程组的最直接的求解方法是:
[x]=[A]−1[b][x]=[A]^{-1}[b][x]=[A]−1[b]
Calculating the inverse of matrix [A][A][A] is easy to be implemented, however it requires approximately n!n!n! operations. 例如下列4X4矩阵求逆算法[3]:
bool gluInvertMatrix(const double m[16], double invOut[16])
{
double inv[16], det;
int i;
inv[0] = m[5] * m[10] * m[15] -
m[5] * m[11] * m[14] -
m[9] * m[6] * m[15] +
m[9] * m[7] * m[14] +
m[13] * m[6] * m[11] -
m[13] * m[7] * m[10];
inv[4] = -m[4] * m[10] * m[15] +
m[4] * m[11] * m[14] +
m[8] * m[6] * m[15] -
m[8] * m[7] * m[14] -
m[12] * m[