我有一些表格
的数据 x1[i], x2[i], x3[i], z[i]
,
其中z[i]
是x1[i], x2[i], and x3[i]
的未知确定性函数。我想找到一个能够覆盖数据的二次函数u(x1, x2, x3)= a11*x1^2 + a22*x2^2 + a33*x3^2 + a12*x1*x2 + ... + a0
,即所有u(x1[i], x2[i], x3[i]) >= z[i]
的{{1}},并最大限度地减少受约束影响的平方误差之和。
Python或Matlab中是否存在计算效率高的解决方案?
答案 0 :(得分:2)
您的问题听起来像带有线性约束的quadratic programming problem。有很多有效的算法可以解决这些问题,它们也可以在Matlab和Python中实现;分别见quadprog
和CVXOPT。
答案 1 :(得分:1)
有一个非常简单的解决方案。只需在Mathlab中使用多项式回归(http://www.matrixlab-examples.com/polynomial-regression.html)。 您将获得某个函数P(x1 [i],x2 [i],x3 [i])。 然后,对于每个i计算表达式Diff [i] = P(x1 [i],x2 [i],x3 [i]) - z [i]。 你会得到一些数组Diff。 2.选择所有负值。 3.在Diff中找到最小值:M = Min(Diff)。 4.期望的函数是F(x1 [i],x2 [i],x3 [i])= P(x1 [i],x2 [i],x3 [i])+ Abs(M),其中Abs( M) - 它的值不包括M的符号。
但如果你不仅限于二次函数,你可以改变多项式的次数,最终得到更精确的解。