我正在尝试找到一种解决线性不等式系统的方法,例如:
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 的求解功能解决此类系统,但没有运气。任何有关此事的帮助将不胜感激。
我正在尝试找到一种解决线性不等式系统的方法,例如:
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 的求解功能解决此类系统,但没有运气。任何有关此事的帮助将不胜感激。
一般来说,一个欠定系统有无限的解决方案。但是,您可以搜索适应问题的最小解决方案。在这种情况下,您可以按以下方式进行:
你首先矢量化你的问题
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 空间(但您应该对其进行分析计算)。