Решение уравнения с четырьмя root в симптах - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь решить следующее уравнение.

(x * x) - 1 = 0

Результат должен быть +1 или -1. Но когда я пытаюсь решить ее с помощью sympy, результатом является пустой вывод.

import sympy as sy

x = sy.Symbol('x')

sy.solve((x**2)-1, 0)

# sy.solve((x * x)-1, 0) and sy.solve((x * x), 1) returns the same result

>>> []

Что я здесь не так делаю?

Ответы [ 4 ]

1 голос
/ 03 февраля 2020

Вы должны использовать

sy.solve((x**2)-1,x)

Вместо

sy.solve((x**2)-1,0)

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

Внимательно прочитайте документацию в будущем:)

0 голосов
/ 03 февраля 2020

В nsolve вторым аргументом является начальное предположение для значения переменной, которое сделает одномерное выражение равным нулю:

>>> nsolve(x**2-1, 0)
1.00000000000000
>>> nsolve(x**2-1, -3)
-1.00000000000000

В solve, однако первоначальное предположение не требуется, поскольку уравнение будет решаться символически:

>>> nsolve(x**2-1)
[-1, 1]

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

>>> solve(x**2-c)
[{c: x**2}]
 >>> solve(x**2-c, x)
[-sqrt(c), sqrt(c)]

Но вы можете решить для все, что * * в выражении, даже числа. Вот почему ошибка не возникает в вашем случае (хотя, возможно, ноль должен вызвать ошибку). Вот примеры решения для числа:

>>> solve(3*x**2-c, 3)
[c/x**2]
>>> solve(3*x**4-c, 4)
[log(c/3)/log(x)]
>>> solve(2*x**2-c, 2)
[LambertW(c*log(x))/log(x)]
0 голосов
/ 03 февраля 2020

Либо сделать

sp.solve((x**2)-1, x)

или

sp.solve((x**2) - 1)

Для получения дополнительной информации, вы можете проверить https://docs.sympy.org/latest/modules/solvers/solvers.html

0 голосов
/ 03 февраля 2020

Предполагается, что

>>> from sympy.solvers import solve
>>> from sympy import Symbol
>>> x = Symbol('x')
>>> solve(x**2 - 1, x)

Прочитайте документацию по функции здесь

...