如何用多重变量求解欠定系统的不等式

时间:2016-09-25 04:49:16

标签: matlab inequalities

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

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的求解函数来解决这些系统,但没有运气。对此事有任何帮助将非常感激。

1 个答案:

答案 0 :(得分: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)>0y(2)<0,......)。 现在解决欠定系统 Mx = y

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

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

如果您根据自己的限制选择了y,则此问题的解决方案也是您问题的解决方案。

如果您想要解决问题的最小解决方案,只需给y一个epsilon房间(但是你应该计算它是分析性的。)