【问题标题】:Matrix division with constraints带约束的矩阵除法
【发布时间】:2023-03-12 22:43:01
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 一般来说,x,y,z 中只有一个选择满足三个这样的方程。如果它们不满足您的约束,您希望发生什么?一般来说,你的“方程式”和“约束”之间有什么区别,当它们彼此不一致时,你希望发生什么?
  • 同意@Gareth;一般来说,随机选择的系数不会导致奇异矩阵,因此会有一个解决方案。
  • 它构成了流体模型的一部分,其中 x y z 对应于压力,我想将其中一些设置为大气压而不将它们从计算中删除。
  • 注意:简单地添加一个新行是不正确的,因为这将对一个欠约束的问题应用一个等式约束。

标签: matlab matrix division


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-07
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 2014-04-18
      相关资源
      最近更新 更多