Алгоритм нахождения символических решений в неполной системе линейных уравнений - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь написать функцию solve e k expr, где e - это набор линейных уравнений, составляющих часть линейной системы, k - это набор переменных, используемых в e. Функция должна по возможности решать для expr, используя только переменные, присутствующие в k.

Цель состоит в том, чтобы решить некоторые проблемы сетевого потока. Например, учитывая эту сеть , назовем ее электрической цепью и применим закон тока Кирхгофа (сумма токов, протекающих в узел, равна тем, которые истекают). В этом случае e является

[ 'x1 - x2 + x5 = 0' , 'x2 - x3 - x4 - x5 = 0' ]

и скажем, мы можем измерить ток на k = [x2, x5]

Тогда случайные случаи будут

solve e k 'x2' => Just 'x2'

solve e k 'x5' => Just 'x5'

чуть сложнее было бы

solve e k 'x1' => Just 'x2 - x5'

solve e k 'x3 + x4' => Just 'x2 - x5'

solve e k 'x1 - x2 + x5' => Just '0'

Некоторые выражения, очевидно, было бы невозможно найти для:

solve e k 'x3' => Nothing

Хотя псевдокод похож на ML, я работаю на виртуальной машине Java, но применяемые алгоритмы и стратегии должны быть одинаковыми.

...