我有计算下三角矩阵求逆的代码。如何通过对下面的代码稍加修改来计算上三角矩阵的求逆? 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
我有很多需要在Matlab中求逆的大矩阵(大约5000 x 5000)。我实际上需要反转,所以我不能使用mldivide,这对于求解一个b的Ax=b来说要快得多。
我的矩阵来自一个问题,这意味着它们有一些很好的性质。首先,它们的行列式是1,所以它们绝对是可逆的。但是,它们是不可对角化的,或者我会尝试将它们对角化,颠倒它们,然后再将它们放回原处。它们的条目都是实数(实际上是有理的)。
我使用Matlab来获得这些矩阵,对于这些东西,我需要对它们的求逆进行处理,所以我更喜欢一种加速Matlab的方法。但是,如果我可以使用另一种更快的语言,请让我知道。我不知道很多其他的语言(只懂一点C和一点不懂Ja
我必须反演一个大型稀疏矩阵(50000 X 12000)。它最初以numpy.ndarray的形式存储,矩阵的大小约为3.5GB。我已经尝试过使用numpy.linalg.pinv来转换这个矩阵,但是它崩溃了jupyter笔记本内核。将此numpy.ndarray转换为scipy.sparse.csr_matrix (稀疏矩阵格式)是可行的,但我不知道有任何函数可以计算csr_matrix的伪逆。
如何求大型稀疏矩阵的伪逆?
我正在尝试用MatLab写一个算法,它接受一个下三角矩阵作为输入。输出应该是这个矩阵的逆(也应该是下三角形式)。我几乎已经解决了这个问题,但我的算法中有一部分仍然让我摸不着头脑。到目前为止,我有:
function AI = inverse(A)
n = length(A);
I = eye(n);
AI = zeros(n);
for k = 1:n
AI(k,k) = (I(k,k) - A(k,1:(k-1))*AI(1:(k-1),k))/A(k,k);
for i = k+1:n
AI(i,k) = (I(i,k) - (??????????????)
从数学上讲,通过Cholesky分解求正定矩阵的逆矩阵比仅使用np.linalg.inv(X)更快。然而,当我同时尝试这两种方法时,发现Cholesky分解的性能更差!
# Inversion through Cholesky
p = X.shape[0]
Ip = np.eye(p)
%timeit scipy.linalg.cho_solve(scipy.linalg.cho_factor(X,lower=True), Ip)
The slowest run took 17.96 times longer than the fastest. This could mean that an
大家好,我正在编写程序来计算行列式(这部分我已经做了)和用GEPP逆矩阵。这里出现了一个问题,因为我完全不知道如何用GEPP逆矩阵,我知道如何用高斯消除(A|I=>I|B)逆矩阵。我已经在网上搜索过了,但还是没有线索,你能解释一下吗?
下面是我的matlab代码(也许有人会发现它很有用),现在它解决了AX=b并计算了行列式:
function [det1,X ] = gauss_czesciowy( A, b )
%GEPP
perm=0;
n = length(b);
if n~=m
error('vector has wrong size');
end
for j
我正在寻找计算矩阵求逆的最有效的方法。我知道这与LU分解有关,或者是把它分成两个矩阵,上三角和下三角矩阵,以及这两个系统的求解,但我不能用MATLAB写出代码。我甚至不知道从哪里开始,也不知道如何在我的问题中使用系统的结果。我真的需要它,因为我必须求解一个10.000 x 10.000的矩阵,而这个简单的方法永远需要花费很长时间。