这个伟大的SO答案指向一个好的稀疏求解器Ax=b,但是我已经有了约束,x因此每个元素x都是>=0一个<=N.
此外,A是巨大的(约2e6x2e6),但<=4每行元素非常稀疏.
有什么想法/建议吗?我正在寻找像MATLAB这样的东西,lsqlin但是有很大的稀疏矩阵.
我基本上试图解决稀疏矩阵上的大规模有界变量最小二乘问题:

编辑: 在CVX中:
cvx_begin
variable x(n)
minimize( norm(A*x-b) );
subject to
x <= N;
x >= 0;
cvx_end
Run Code Online (Sandbox Code Playgroud) 我有一个形式为的方程组,A*x = B其中[A]是三对角系数矩阵。使用 Numpy 求解器,numpy.linalg.solve我可以求解 x 的方程组。
请参阅下面的示例,了解我如何开发三对角[A]矩阵。向量{B},并求解x:
# Solve system of equations with a tridiagonal coefficient matrix
# uses numpy.linalg.solve
# use Python 3 print function
from __future__ import print_function
from __future__ import division
# modules
import numpy as np
import time
ti = time.clock()
#---- Build [A] array and {B} column vector
m = 1000 # size of array, make this 8000 to see time benefits …Run Code Online (Sandbox Code Playgroud) 我在数字代码中使用Boost的uBLAS,并且有一个"重"解算器:
http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?LU_Matrix_Inversion
代码工作得很好,然而,它很慢.经过一些研究,我找到了UMFPACK,它是一个稀疏矩阵求解器(除此之外).我的代码生成大型稀疏矩阵,我需要非常频繁地反转(更正确地解决,逆矩阵的值是无关紧要的),因此UMFPACk和BOOST的Sparse_Matrix类似乎是一个幸福的婚姻.
UMFPACK请求由三个向量指定的稀疏矩阵:条目计数,行索引和条目.(见例).
我的问题归结为,我可以从BOOST的Sparse Matrix类中有效地获得这三个向量吗?