在上矩阵上用 1s 对角线进行 LU 分解

LU decomposition with 1s diagonal on upper matrix

我正在寻找一种在 matlab 或 ti inspire cx cas 上进行 LU 分解的方法,其中对角线 1 的行位于上三角矩阵上。我希望矩阵 A 分解为

L2 = [2 0 0; -0.5 3.5 0; 3 1 -3]
 U = [1 1 -3; 0 1 2; 0 0 1] 

但我无法获得仅使用转置即可正确执行此操作的代码。谢谢

代码:

clc

A = [ 2, 2, -6 ; -0.5, 3, 8.5; 3, 4, -10];

[L2,U,P] = lu(A')
L2'
U'

输出:

L2 =[

    1.0000         0         0;
   -0.3333    1.0000         0;
   -0.3333    0.4000    1.0000]


U =[

   -6.0000    8.5000  -10.0000;
         0    5.8333    0.6667;
         0         0   -0.6000]

P =[

     0     0     1;
     0     1     0;
     1     0     0]

ans =[

    1.0000   -0.3333   -0.3333;
         0    1.0000    0.4000;
         0         0    1.0000]


ans =[

   -6.0000         0         0;
    8.5000    5.8333         0;
  -10.0000    0.6667   -0.6000]

>> 

您似乎不希望发生任何旋转。您可以通过使用稀疏矩阵的旋转阈值来实现此目的:

A = [ 2, 2, -6 ; -0.5, 3, 8.5; 3, 4, -10];
L = [2 0 0; -0.5 3.5 0; 3 1 -3]
U = [1 1 -3; 0 1 2; 0 0 1] 

[l,u,p] = lu(sparse(A.'),0);
Lnew = full(u).'
Unew = full(l).'

之后 LnewL 相同(四舍五入),UnewU 也是如此。