我有一个线性方程组
我需要找到最小化最小二乘误差的x
x 中元素增加正值的约束;
使用 np.linalg.lstsq 函数(numpy 版本“1.14.2”,python“3.6.5”)我无法对系数设置任何约束,即。 e.
>>> A = np.array([[4.737, 4.673, 4.664, 4.614, 4.614],
[4.491, 4.377, 4.38 , 4.401, 4.406],
[2.496, 1.689, 1.68 , 1.62 , 1.64 ],
[3.461, 3.136, 2.816, 2.723, 2.551],
[2.814, 2.4 , 2.444, 2.423, 2.436]])
>>> y = np.array([4.90909091, 4.86363636, 1.86363636, 2.63636364, 3.63636364])
>>> x = np.linalg.lstsq(A, y)
>>> x[0]
array([ 1.27108078, -22.41177441, 20.48017772, 37.03891117,
-35.2836762 ])
虽然我希望 c[0] 的值不断增加
我知道我也可以使用 scipy.optimize.nnls 来获得正系数,但这不会处理“递增系数”约束。
您可以在不执行任何特殊操作的情况下获得所获得的结果,然后对系统的列进行重新排序,以便新的解决方案实际上与第一个解决方案相同,以递增的顺序显示系数。