这是我的第一个问题。我只是想找人指点我正确的方向。
矩阵分解LU = PA可用于计算A的行列式。我们有
det(L)det(U) = det(P)det(A).
因为L是对角线上的L为三角形,det(L) = 1
。因为U是三角形,det(U) = u 11 u 22 · · · u nn
。因为P是置换,如果交换的数量是偶数,则det(P) = +1
,如果是奇数,则为-1。所以det(A) = ±u 11 u 22 · · · u nn
。
修改lutx函数,使其返回四个输出。
function [L,U,p,sig] = lutx(A)
%LU Triangular factorization
% [L,U,p,sig] = lutx(A) computes a unit lower triangular
% matrix L, an upper triangular matrix U, a permutation
% vector p, and a scalar sig, so that L*U = A(p,:) and
% sig = +1 or -1 if p is an even or odd permutation.
编写一个函数mydet(A),它使用你修改过的lutx来计算A的行列式。在Matlab中,产品u 11 u 22···u nn可以通过表达式prod(diag(U))来计算。
我无法使用该功能显示所有四个输出。我不明白为什么函数不会自动执行。如果有人能指出我正确的方向,那将非常感激。