在上矩阵上用 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).'
之后 Lnew
与 L
相同(四舍五入),Unew
和 U
也是如此。
我正在寻找一种在 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).'
之后 Lnew
与 L
相同(四舍五入),Unew
和 U
也是如此。