2016-09-25 2 views
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 

Я не имел никакой удачи в поиске быстрый вычислительный метод для решить их. Я пробовал использовать вольфрам альфа. Он работает для некоторых наборов, но не для других. Более того, я также пробовал решать такие системы, используя функцию решения Matlab, но не повезло. Любая помощь в этом вопросе была бы очень оценена.

ответ

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.

Наималейшее решения этой системы можно найти, используя псевдообратной М.

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

Если вы выбрали y соответственно к вашим ограничениям, то решение этой проблемы также является решение вашей проблемы.

Если вы хотите получить наименьшее решение своей проблемы, просто дайте y только номер epsilon (но тогда вы должны вычислить его аналитическим).

+0

Спасибо за ответ. Я не знаком с этим методом, решая систему неравенств. Я ржавый по своим навыкам математики. У вас есть какой-либо онлайн-ресурс, чтобы узнать больше об этом методе? – Hisenbeeeerg

+0

Объясняет использование псевдо-обратного: http://people.csail.mit.edu/bkph/articles/Pseudo_Inverse.pdf (Возможно, вам понадобится https://en.wikipedia.org/wiki/Underdetermined_system и https://en.wikipedia.org/wiki/Lagrange_multiplier) – StefanM

+0

Для дальнейшего чтения вы можете взглянуть на это: https://arxiv.org/pdf/cs/0702105 – StefanM