Algorithm Gauss-Jordan消元与LU分解

Algorithm Gauss-Jordan消元与LU分解,algorithm,linear-algebra,Algorithm,Linear Algebra,在《黑皮书》第三版《数值配方》中,给出了求解线性方程组的高斯-乔丹算法。紧接着是关于计算LU分解并随后使用该分解求解线性方程组的章节(参见第53页的LUdcmp::solve)。不幸的是,这本书没有解释为什么人们更喜欢一种方法而不是另一种。这两种方法是等效的,还是有理由在特定情况下选择一种方法而不是另一种方法?使用LU分解的优点是可以重用它来计算多个解 例如,如果你想解这个方程 Ax = b 对于常数a和许多不同的bs,只需计算a的LU分解一次,就可以对每个b重复使用。但是,使用Gauss-J

在《黑皮书》第三版《数值配方》中,给出了求解线性方程组的高斯-乔丹算法。紧接着是关于计算LU分解并随后使用该分解求解线性方程组的章节(参见第53页的LUdcmp::solve)。不幸的是,这本书没有解释为什么人们更喜欢一种方法而不是另一种。这两种方法是等效的,还是有理由在特定情况下选择一种方法而不是另一种方法?

使用LU分解的优点是可以重用它来计算多个解

例如,如果你想解这个方程

Ax = b
对于常数
a
和许多不同的
b
s,只需计算
a
的LU分解一次,就可以对每个
b
重复使用。但是,使用Gauss-Jordan消去法,您必须重新执行每个
b


这是因为Gauss-Jordan消元法的标度为O(n^3),而LU分解方法的替换步骤仅标度为O(n^2)。因此,对于LU情况,您只需为每个
b
执行一次昂贵的O(n^3)步骤


关于这一点,可以找到一组合理的注释

实际上,高斯·乔丹比卢快得多。做一些C代码,你就会明白,因为在Gauss Jordan中,你会比LU使用更少的代码和更少的循环。

也许有帮助:我问这个问题纯粹是从算法/编程的角度,而不是从数学的角度。我的经验是,数学家通常不知道为什么一种算法比另一种算法更受欢迎。数值线性代数应该在计算科学上进行更好的讨论。请看一看,你会发现一个非常有知识的数值社区。”因此对于LU的情况,你只需要做昂贵的O(n^3)每b一步一次。”——不是每
A一步一次吗?