如果我有一组线性方程式(生成随机矩阵):
2x + 4y + 6z = 4
5x + 3y + 7z = 1
9x + 7y + 3z = 6
我希望解决x
,y
和z
我只是进行矩阵划分。但是,如果我想在此矩阵上设置约束,例如x > 0
或x = 4
,是否有办法执行此操作?
添加另一行是否正确,例如:
2x + 4y + 6z = 4
5x + 3y + 7z = 1
9x + 7y + 3z = 6
1x + 0y + 0z = 1 <---
是否有一种通用的方法将这些约束应用于更大的矩阵和更复杂的系数?
答案 0 :(得分:0)
是的,您应该调查拉格朗日乘数或单纯形法,看看它是如何完成的。
答案 1 :(得分:0)
在MATLAB中,使用lsqnonneg进行非负性约束(对所有变量。)如果你有优化工具箱,那么你可以使用lsqlin来解决不等式约束的问题,或者只约束某些变量的约束。
你当然可以使用像linprog这样的LP求解器,但如果你有linprog,那么你也有lsqlin!我想你甚至可以使用quadprog求解器,但为什么要这么麻烦?使用正确的工具解决问题。
至于使用显式迭代求解器来解决它的想法,就像fmincon一样,是的,你可以这样做,但是你会得到一个不太精确的结果,需要更多的时间来解决。