Разложение LU с диагональю 1s на верхней матрице

Я ищу способ сделать разложение LU на Matlab или ti inspire 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]

>> 

person user9546999    schedule 25.03.2018    source источник


Ответы (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).'

После этого Lnew совпадает с L (с точностью до округления) и то же самое верно для Unew и U.

person flawr    schedule 25.03.2018
comment
Благодарность! это работает на Matlab очень хорошо. Знаете ли вы, есть ли разреженная команда на TI inspire cx cas? - person user9546999; 26.03.2018
comment
Возможно нет. И нет причин ожидать, что lu-функция TI будет вести себя так же, как MATLAB. Но вы можете ознакомиться с руководством по ваш калькулятор. Если я правильно понимаю, кажется, что ваш калькулятор всегда использует частичный поворот. - person flawr; 26.03.2018