Я пытаюсь решить систему многомерных уравнений, которые являются результатом некоторого кода Java. Перед запуском не известно ни форма, ни число переменных. Примером может бытьКак решить многомерные системы уравнений программно?
(I) (e-a*d*e-b*d*e+2*b*d*f+2*b*d*e*g)/(-1+a*d+b*d)+f == 0
(II) e*g+((f+e*g)*a*d)/(-1+a*d+b*d)==0
(III) -e*h+((-f-e*g)*d)/(-1+a*d+b*d)==0
(IV) -e*j+((-f-e*g)*c)/(-1+a*d+b*d)==0
Я попытался с помощью Symja, который просто возвращает входные данные, и SymPy, который выдает ошибку
ZeroDivisionError: polynomial division
Переменные все из интервала [0,1], а также Мне нужны все решения. Mathematica может решить это, но, поскольку это коммерческое программное обеспечение, к сожалению, я не могу использовать его в этом проекте.
Буду благодарен за любые рекомендации по использованию программного обеспечения. Мне действительно хотелось бы, чтобы SymPy работал, и я не понимаю, почему это порождает эту ошибку, идеи оцениваются. Ниже MWE к ошибке SymPy:
from sympy.solvers import solve
from sympy.abc import a,b,c,d,e,f,g,h,j
lst = a,b,c,d,e,f,g,h,j
sys = [(e-a*d*e-b*d*e+2*b*d*f+2*b*d*e*g)/(-1+a*d+b*d)+f,e*g+((f+e*g)*a*d)/(-1+a*d+b*d),-e*h+((-f-e*g)*d)/(-1+a*d+b*d),-e*j+((-f-e*g)*c)/(-1+a*d+b*d)]
solution = solve(sys, lst)
print solution
версия Mathematica является:
eqn = {(e - a*d*e - b*d*e + 2*b*d*f + 2*b*d*e*g)/(-1 + a*d + b*d) + f == 0, e*g + ((f + e*g)*a*d)/(-1 + a*d + b*d) == 0, -e*h + ((-f - e*g)*d)/(-1 + a*d + b*d) == 0, -e*j + ((-f - e*g)*c)/(-1 + a*d + b*d) == 0};
Simplify[Solve[eqn, {a, b, c, d, e, f, g, h, j}]]
Выход:
{{e -> 0, f -> 0},
{c -> (1 - 2 a d - 3 b d) j, f -> ((-1 + 2 a d + b d) e)/(-1 + 2 a d + 3 b d), g -> (a d)/(1 - 2 a d - 3 b d), h -> d/(1 - 2 a d - 3 b d)},
{a -> 0, c -> j - 3 b d j, f -> ((-1 + b d) e)/(-1 + 3 b d), g -> 0, h -> d/(1 - 3 b d)},
{a -> (1 - b d)/(2 d), c -> -2 b d j, f -> 0, g -> 1/4 - 1/(4 b d), h -> -(1/(2 b))}}
Можете ли вы опубликовать выражение и решение Mathematica? –
Вы пытались умножить общий знаменатель? Я бы предположил, что эти инструменты дают способы автоматизировать это, но вы можете сделать это вручную, чтобы проверить, могут ли они решить результат. – agentp
@agentp Да, я пробовал это, и это не помогает, SymPy по-прежнему бросает ту же ошибку – berndibus