Как найти решение с тремя неизвестными в Python - PullRequest
2 голосов
/ 11 июля 2020

Как я могу решить эту проблему в Python?

введите описание изображения здесь

Что-то вроде бы al oop или какой-то решатель. Я знаю, что могу решить эту проблему методом проб и ошибок, но дело не в этом.

Ответы [ 2 ]

2 голосов
/ 11 июля 2020

Существует бесконечное количество решений, так что пока у вас есть два значения x, вы можете найти третье, необходимое для достижения 1200.

Допустим, у вас есть X1 и X2, некоторая простая алгебра сообщает нам:

5*X3 = 1200 - X1 - 3*X2

, а затем

X3 = (1200 - X1 - 3*X2) / 5

, поэтому вы нашли X3 со значениями для X1 и X2. Чтобы найти множество решений, вы можете заполнить X1 и X2 случайными числами, а затем получить совпадение третьего X3.

0 голосов
/ 11 июля 2020

Как упоминал @dantechguy, ответов бесконечное множество, но это не значит, что мы не можем заставить python сказать нам это наверняка. Лучший маршрут для решения систем уравнений - sympy. Проверьте это здесь: Sympy

Следующая команда решит вашу систему уравнений и расскажет вам для каждой переменной и сообщит вам границы каждой.

from sympy.solvers import solve
from sympy import S

x1,x2,x3 = S('x1 x2 x3'.split())
Eq = [1*x1 + 3*x2 + 5*x3-1200, x1>0, x2>0,x3>0]
sol = solve(Eq, x1),solve(Eq, x2),solve(Eq, x3)
display(sol)

Это выводит:

((0 < x1) & (0 < x2) & (0 < x3) & (x1 < oo) & (x2 < oo) & (x3 < oo) & Eq(x1, -3*x2 - 5*x3 + 1200),
 (0 < x1) & (0 < x2) & (0 < x3) & (x1 < oo) & (x2 < oo) & (x3 < oo) & Eq(x2, -x1/3 - 5*x3/3 + 400),
 (0 < x1) & (0 < x2) & (0 < x3) & (x1 < oo) & (x2 < oo) & (x3 < oo) & Eq(x3, -x1/5 - 3*x2/5 + 240))

Если вы работаете в jupyter, используйте следующее, чтобы все выглядело красиво набранным с помощью LATEX:

display(solve(Eq, x1))
display(solve(Eq, x2))
display(solve(Eq, x3))

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...