用于LU分解的Gilbert-Peierls算法

时间:2014-03-24 08:34:20

标签: algorithm matlab matrix

我搜索了Gilbert-Peierls算法,但是我没有找到任何有用的东西(好吧,我找到了this,但是它不能正常工作)。我认为问题是第二部分,也是那些问题:

U(1:k, k) = x(1:k);
L(k:N, k) = x(k:N)/U(k, k);

实际应该是(根据this示例):

U(1:N, k) = x(1:N);
L(k:N, k) = x(k:N)/U(k, k);

另外,在那个例子中,L是单位矩阵,我觉得有点奇怪。有人可以描述算法吗? (有或没有代码)

2 个答案:

答案 0 :(得分:1)

我是Gilbert-Peierls算法的作者之一。这是我们原始技术报告的链接:

https://ecommons.cornell.edu/bitstream/handle/1813/6623/86-783.pdf

它详细描述了算法,但不是用Matlab术语。

然而,自从我们写这篇文章以来,现有技术发展很快。本文可能是一个有用的起点:

http://epubs.siam.org/doi/abs/10.1137/S0895479895291765

不幸的是,我找不到这篇文章的公开副本。

答案 1 :(得分:0)

首先,Gilbert-Peierls的算法是左看分解,并在每次迭代中循环一列。因此,“k”表示循环该列。注意,U是上三角矩阵,因此每列中k以下的条目为零。这就是它的原因。

其次,Gilbert-Peierls的算法以身份L矩阵开始,是一种计算其对角线条目的方法。它帮助用户首先轻松计算U的对角线条目,然后处理U的其余条目。这就是Gilbert-Peierls算法的作用。