在“黑皮书”,Numerical Recipes第3版中,给出了求解线性方程组的Gauss-Jordan算法。之后直接是关于计算LU分解然后使用它来解决线性方程组的部分(参见第53页的LUdcmp :: solve)。不幸的是,这本书没有解释为什么人们更喜欢一种方法而另一种方法。这两种方法是否相同,或者是否有理由在特定情况下更喜欢一种方法?
答案 0 :(得分:7)
使用LU分解的优点是可以重复使用它来计算多个解决方案。
例如,如果你想解决方程式
Ax = b
对于常量A
和许多不同的b
s,您只需计算一次A
的LU分解,并且可以为每个b
重复使用它。但是,如果消除Gauss-Jordan,则必须为每个b
这更快的原因是因为高斯 - 乔丹消除量级为O(n ^ 3),但LU分解方法的替换步骤仅缩放为O(n ^ 2)。因此,对于LU案例,您只需为每个b
执行一次昂贵的O(n ^ 3)步骤。
可以在here
找到一套合理的注释答案 1 :(得分:1)
实际上,高斯·乔丹比LU快得多。执行一些C代码,您将无法理解,因为与LU相比,在Gauss-Jordan中使用的代码更少,for循环更少。