【问题标题】:LU decomposition with 1s diagonal on upper matrix上矩阵上 1s 对角线的 LU 分解
【发布时间】:2018-09-03 22:32:54
【问题描述】:

我正在寻找一种在 matlab 上进行 LU 分解的方法,或者寻找对角线 1 的行位于上三角矩阵上的 cx cas。我希望矩阵 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]

>> 

【问题讨论】:

    标签: matlab linear-algebra decomposition


    【解决方案1】:

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

    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 也是如此。

    【讨论】:

    • 谢谢!这在matlab上工作得很好。你知道TI的inspire cx cas上是否有sparse命令吗?
    • 可能不会。并且没有理由期望 TI lu-函数的行为与 MATLAB 相同。但是您可以查看计算器的manual。如果我理解正确,您的计算器似乎总是使用部分旋转。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2016-06-02
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    相关资源
    最近更新 更多