如果这是一个幼稚的问题,我深表歉意。我正在尝试为稳态下的线性常微分方程系统创建一些自举数据。
由于方程代表化学物质的浓度,X 必须为正。此外,为了使方程的依赖图尽可能小,我试图找到 A 的最稀疏矩阵。
使用 MATLAB 中的 cvx 工具箱,我将问题如下:
clear
% the threshold value below which we consider an element to be zero
delta = 1e-8;
% problem dimensions (m inequalities in n-dimensional space)
n = 25;
X = rand(n, 1)
b = zeros(n, 1);
c = zeros(n, n) + delta^2
alpha = 0.1
% l1-norm heuristic for finding a sparse solution
fprintf(1, 'Finding a sparse feasible point using l1-norm heuristic ...')
cvx_begin
variable A(n,n)
%minimize(nnz(A))
minimize(alpha * nnz( A ) + (1-alpha) * norm(A*X - b, 2) )
cvx_end
% number of nonzero elements in the solution (its cardinality or diversity)
nonzero = length(find( abs(A) > delta ));
fprintf(1,['\nFound a feasible A in R^%d that has %d nonzeros ' ...
'using the l1-norm heuristic.\n'],n,nonzero);
这往往会找到 A 的矩阵,其中填充了非常小的接近零的值。有没有人建议启发式方法来找到满足我上面描述的约束的 X 和 A 的组合?它们不需要特别快或内存效率特别高,我正在使用相对较小的矩阵。
需要明确的是 - 我不是试图解决特定的 A 或 X。我试图找到满足我描述的约束的 A 和 X 的组合。