问题描述
我有一个密集的超定矩阵。我可以通过 np.linalg.lstsq
找到解决方案。我想得到大部分为 0 的答案。
import numpy as np
# Build matrix and vector
M = np.array([[2.71*i,3.14*i,4*i,5.99*i,6*i] for i in range(1,1000) ])
v = np.array([[i] for i in range(1,1000)])
solution,_,_ = np.linalg.lstsq(M,v)
print("solution",solution)
# print("error",np.linalg.norm(v - np.dot(M,solution)))
我得到了许多小的非零项的解决方案。
solution [[ 0.06342455]
[ 0.1076765 ]
[ 0.12445127]
[-0.00251504]
[ 0.00121254]]
解决方案不是唯一的,我还希望 solution
大部分为 0。像 [0,-.5,.5]
或 [1/2.71,0]
。有没有简单的方法可以做到这一点?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)