1

我正在尝试找到一种解决线性不等式系统的方法,例如:

c>0
y+c<0
x+c>0
x+y+c<0
w+c>0
w+y+c>0
w+x+c>0
w+x+y+c<0

我没有找到一种快速的计算方法来解决它们。我尝试过使用 wolfram alpha。它适用于某些套装,但不适用于其他套装。此外,我还尝试使用 matlab 的求解功能解决此类系统,但没有运气。任何有关此事的帮助将不胜感激。

4

1 回答 1

1

一般来说,一个欠定系统有无限的解决方案。但是,您可以搜索适应问题的最小解决方案。在这种情况下,您可以按以下方式进行:

你首先矢量化你的问题

x = [c y x w].';
M = [1 0 0 0
     1 1 0 0
     1 1 1 0
     1 0 0 1
     1 1 0 1
     1 0 1 1
     1 1 1 1];
y = [ 1 -1 1 -1 1 1 1 -1].';

你可以设置y你想要的值。它们只需要满足您的不等式的条件(即y(1)>0, y(2)<0,...)。现在您解决了未确定的系统Mx=y

使用M的伪逆可以找到该系统的最小解。

x = M.'(M*M.')^(-1)*y;

如果您y根据自己的限制进行了选择,那么这个问题的解决方案也是您问题的解决方案。

如果您想要解决问题的最小解决方案,只需提供y一个 epsilon 空间(但您应该对其进行分析计算)。

于 2016-09-25T07:01:28.890 回答