Python; Решение уравнения, равного нулю - PullRequest
0 голосов
/ 24 февраля 2020

Как я могу приравнять уравнение к нулю, а затем решить его (цель состоит в том, чтобы устранить знаменатель).

y=(x**2-2)/3*x

В Matlab это работает:

solution= solve(y==0,x)

но не в python.

Ответы [ 2 ]

1 голос
/ 24 февраля 2020
from sympy import *

x, y = symbols('x y') 

y=(x**2-2)/3*x

# set the expression, y, equal to 0 and solve
result = solve(Eq(y, 0))

print(result)

Другое решение:

from sympy import *

x, y = symbols('x y')

equation = Eq(y, (x**2-2)/3*x)

# Use sympy.subs() method
result = solve(equation.subs(y, 0))

print(result)

Редактировать (еще проще):

from sympy import *

x, y = symbols('x y') 

y=(x**2-2)/3*x

# solve the expression y (by default set equal to 0)
result = solve(y)

print(result)
0 голосов
/ 24 февраля 2020

Если вы хотите исключить только знаменатель, вы можете разделить его на числитель и знаменатель. Если уравнение уже представлено в виде дроби и вам нужен числитель, то

>>> y=(x**2-2)/(3*x); y  # note parentheses around denom, is that what you meant?
(x**2 - 2)/(3*x)
>>> numer(_)
x**2 - 2

Но если уравнение появляется в виде суммы, вы можете поместить его в знаменатель и, возможно, в коэффициент, чтобы определить факторы числителя, которые должны быть ноль, чтобы решить уравнение:

>>> y + x/(x**2+2)
x/(x**2 + 2) + (x**2 - 2)/(3*x)
>>> n, d = _.as_numer_denom(); (n, d)
(3*x**2 + (x**2 - 2)*(x**2 + 2), 3*x*(x**2 + 2))
>>> factor(n)
(x - 1)*(x + 1)*(x**2 + 4)
>>> solve(_)
[-1, 1, -2*I, 2*I]

Однако вам не нужно разлагать числитель, прежде чем пытаться решить. Но я иногда нахожу это полезным при работе с конкретным c уравнением.

Если у вас есть пример уравнения, которое быстро решается в другом месте, но не в SymPy, пожалуйста, опубликуйте его.

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