我必须反演一个大型稀疏矩阵(50000 X 12000)。它最初以numpy.ndarray的形式存储,矩阵的大小约为3.5GB。我已经尝试过使用numpy.linalg.pinv来转换这个矩阵,但是它崩溃了jupyter笔记本内核。将此numpy.ndarray转换为scipy.sparse.csr_matrix (稀疏矩阵格式)是可行的,但我不知道有任何函数可以计算csr_matrix的伪逆。
如何求大型稀疏矩阵的伪逆?
我试图用Gauss迭代法求解一个系统.但我也想作为一个答案,得到所使用的迭代矩阵。我有这个方法
function [x0,iter] = gaussSeidel(A,b,iterMax,tol)
D = diag(diag(A));
Lower = -tril(A,-1);
Upper = -triu(A,1);
M = D - Lower;
N = Upper;
n = size(A);
n = n(1);
x0 = ones(n,1);
iter = 1;
for i = 1:1:iterMax
iter = i;
x = M\(N*x0+b);
normC =
我需要对一个p x p对称带状hessian矩阵H求逆,它有7条对角线,p可能非常高(=1000或10000)。
H^{-1}可以被认为是带状的,因此,我不需要计算完整的逆矩阵,而是计算它的近似值。(例如,可以假设有11或13条对角线。)我正在寻找一种不意味着并行化的方法。
有没有可能在线性时间内用R来构建这样的算法?
我需要在一个列表中solve超过上千个矩阵。但是,我得到了错误Lapack routine dgesv: system is exactly singular。我的问题是,我的输入数据是非奇异矩阵,但是在对这些矩阵进行计算之后,其中一些得到了奇异。但是,一个包含数据子集的可重复的示例是不可能的,因为它会很长(我已经尝试过了)。这里是我问题的一个基本例子(A是经过一些计算后的矩阵,R是我需要做的下一个计算):
A=matrix(c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1), nrow=4)
R = solve(diag(4)-A)
你有什么想法如何“解决”这个问题,也许其
下面的动态数组包含一个非对称的n*n矩阵(n个<=100):
int **matrix;
matrix = new int*[n];
for (int i = 0; i < n; i++)
matrix[i] = new int[n];
有没有一种非常简单的方法来反转它?理想情况下,我将只使用STL中的内容或下载单个头文件。