2

如果我有一组线性方程(生成随机矩阵):

2x + 4y + 6z = 4
5x + 3y + 7z = 1
9x + 7y + 3z = 6

我想解决x,我只是yz一个矩阵除法。但是如果我想在这个矩阵上设置一个约束,比如x > 0or x = 4,有没有办法做到这一点?

添加另一行是否正确,例如:

2x + 4y + 6z = 4
5x + 3y + 7z = 1
9x + 7y + 3z = 6
1x + 0y + 0z = 1 <---

有没有一种通用的方法来应用这些具有更大矩阵和更复杂系数的约束?

4

2 回答 2

1

在 MATLAB 中,将 lsqnonneg 用于非负约束(在所有变量上)。如果您有优化工具箱,那么您将使用 lsqlin 来解决具有不等式约束的问题,或者只有某些变量受到约束的问题。

你当然可以使用像 linprog 这样的 LP 求解器,但是如果你有 linprog,那么你也有 lsqlin!我想你甚至可以使用 quadprog 求解器,但何必呢?使用正确的工具解决问题。

至于像 fmincon 那样使用显式迭代求解器来求解它的想法,是的,你可以这样做,但你会得到一个不太精确的结果,需要更多时间来求解。

于 2012-05-01T16:59:40.937 回答
0

是的,您应该研究拉格朗日乘数或单纯形法,看看它是如何完成的。

于 2012-05-01T12:55:11.040 回答