我正在尝试求解线性方程组:
min || Ax - B ||^2
for t in [0,1]
such that the coefficients x in this equation satisfy the linear equation:
C x = D
该系统试图拟合一组多项式以在t。
的范围内近似a函数f(t)- a是一个矩阵,代表t值范围内多项式集的图
- x是对应于 中每个多项式的重量的系数的向量(我想要的)
- b是代表f(t)值的向量,
- c是一个矩阵和d vector,它共同表示该系统系数上的边界条件
这是使用普通最小二乘的约束求解线性方程的情况。
虽然有已知的封闭形式解决方案,例如Karush-Kuhn-Tucker我正在寻找可以用来解决此问题的scipy
/numpy
中的路由。
研究显示了scipy.optimize
模块,其中包括以下功能:
scipy.optimize.leastrongquares。
scipy.optimize.nnls。
scipy.optimize.lsq_linear。
从这个问题和这个问题中提出了上述。
但是,这些条件不适合其他线性方程的限制。我可以在scipy
和numpy
中使用什么?
为此,您可以使用scipy.minimize(method='SLSQP')
。文档在这里。
您可以将平等约束定义为具有签名的可呼叫功能:
def cons1(x):
return sum(D - C*x)
slsqp Essential使用约束来驱动优化问题。请注意,这是一个基于梯度的体面,因此您很可能会找到一个局部最小值的高维问题。
另一个选项是scipy.minimize(method=’trust-constr’)
,文档在这里。这些方法是在Python中本地实施的,因此可以通过。
如果您具有平稳的单调或上下文功能,就我的经验而言,SLSQP
就足够了。