Matlab 上三角矩阵求逆算法

Matlab 上三角矩阵求逆算法,matlab,matrix,Matlab,Matrix,我有计算下三角矩阵逆的代码。如何从下面的代码计算上三角矩阵的逆,只需稍加修改即可 function L = L_inv(A) [n,n] = size(A); L = zeros(n); for i=1:n L(i,i) = 1/A(i,i); for j=i+1:n L(j,i)=-A(j, i:j-1)*L(i:j-

我有计算下三角矩阵逆的代码。如何从下面的代码计算上三角矩阵的逆,只需稍加修改即可

function L = L_inv(A)
            [n,n] = size(A);
            L = zeros(n); 
            for i=1:n
                L(i,i) = 1/A(i,i);
                for j=i+1:n
                    L(j,i)=-A(j, i:j-1)*L(i:j-1,i)/A(j,j);
                end
            end
        end

矩阵转置的逆等于其逆的转置。 因此,由于上三角矩阵只是下三角矩阵的转置,要找到上三角矩阵的逆矩阵,只需将函数应用于其转置,然后再次转置结果

n = 10; % dimensions of your matrix
U = triu(rand(n, n)); % create a random upper triangular matrix
Uinv1 = L_inv(U')'; % using your function
Uinv2 = inv(U); % using the built-in function
Uinv1 - Uinv2

打印两个结果之间的差异,您可以看到它们(几乎)完全相同。例如,在我的例子中,
norm(Uinv1-Uinv2)=5.64226607527982e-15

矩阵转置的逆等于其逆的转置。 因此,由于上三角矩阵只是下三角矩阵的转置,要找到上三角矩阵的逆矩阵,只需将函数应用于其转置,然后再次转置结果

n = 10; % dimensions of your matrix
U = triu(rand(n, n)); % create a random upper triangular matrix
Uinv1 = L_inv(U')'; % using your function
Uinv2 = inv(U); % using the built-in function
Uinv1 - Uinv2

打印两个结果之间的差异,您可以看到它们(几乎)完全相同。例如,在我的例子中,
norm(Uinv1-Uinv2)=5.64226607527982e-15

我的线性代数非常生疏,但如果我没记错的话,上三角矩阵只是下三角矩阵的转置,矩阵转置的逆矩阵等于逆矩阵的转置。如果这是真的,只需将你的函数应用于上三角矩阵的转置,然后将结果转置回去。@MatteoV你确定吗,我也想到了同样的事情。我的线性代数很生疏,但如果我没记错的话,上三角矩阵只是下三角矩阵的转置,矩阵转置的逆等于逆的转置。如果这是真的,只需将函数应用于上三角矩阵的转置,然后将结果转置回去。@MatteoV你确定吗,我也想到了同样的事情。