在GNU Octave中是否有类似于Matlab中的伴随矩阵的函数?
x'
将为x
提供它。(非共轭转置是x.'
或transpose(x)
。conj(x)
也适用于矩阵和向量,可以给出复共轭。)det(x)*inv(x)
。如果不能,那就有点复杂了。一般来说,伴随矩阵是余子式矩阵的转置。余子式矩阵用其余子式替换原始矩阵中的每个元素(加上或减去其次数,即没有该行和列的原始矩阵的行列式。对于行列式扩展,加减规则相同--如果行和列的和是偶数,则为正数,如果为奇数,则为负数)。尝试了几次后,我使用以下命令计算了协因子:
det(a)*inv(a).'
请注意命令结尾的点号。
很遗憾,Octave没有内置的adj函数,你可以尝试使用det(A) * inv(A)... 但实际上没有内置的函数,你还可以尝试找到矩阵的余子式然后转置它。另外,它是否说你必须使用matLab?https://www.dcode.fr/adjoint-matrix 对我也起作用....
令矩阵A为n行n列的矩阵。
如果矩阵可逆,则将B定义为A的伴随矩阵: B = inv(A)*det(A)
如果矩阵不可逆,则使用以下代码获取伴随矩阵。 计算矩阵A的余子式,然后转置它们:
function Adjoint_A = adjoint(A)
%Of course it must be nxn matrix
[n,m] = size(A);
if n ~= m
disp('This is not square matrix.')
return
endif
Adjoint_A = zeros(n,m);
% Arlright first we need to find the cofactor then tranpose the whole matrix.
for i = 1:m
for j = 1:n
%Getting minors
minor_A = A;
minor_A(i,:) = [];
minor_A(:,j) = [];
%Filling up the matrix with cofactor
Adjoint_A(i,j) = ((-1)^(i+j))*det(minor_A);
endfor
endfor
Adjoint_A = Adjoint_A';
endfunction