Решение простого символического уравнения в python - PullRequest
0 голосов
/ 04 мая 2018

Я использую sympy для символического решения очень простого уравнения, но решение для переменной - пустая матрица! Вот код:

from sympy import *

x = Symbol('x')
l_x = Symbol('l_x')

x_min = -6
x_max = 6

precision_x = 10**8 

solve(((x_max-x_min)/((2**l_x)-1))/precision_x, l_x)

print(l_x)

Я пробовал некоторые другие простые уравнения, такие как:

solve(x**2 = 4, x)

И последний работает отлично; Я просто не понимаю, почему не работает первый!

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Это просто: у вашего уравнения нет результата.

Уравнение 12/((2**l_x)-1))/1e8 = 0, и оно не имеет решения.

Посмотрите, как выглядит y = 12/((2**x)-1))/1e8 ( скопировано с wolframalpha ):

y = 12/((2**x)-1))/1e8

Для сравнения попробуйте решить, например, 12/((2**l_x)-1))/1e8 = 1 вместо:

>>> solve(((x_max-x_min)/((2**l_x)-1))/precision_x - 1, l_x)
[(-log(25000000) + log(25000003))/log(2)]

Работает как шарм!

0 голосов
/ 04 мая 2018

Выражение, данное для решения, имеет предполагаемое rhs 0, которое не может удовлетворить никакое значение l_x. Попробуйте что-то вроде этого:

from sympy import *
q, r, s, t = symbols("q r s t")
eq = (q-r)/(2**s-1)/t
solve(eq-1,s)

Вывод:

[log((q - r + t)/t)/log(2)]

для явного создания объекта уравнения с ненулевыми правами вы можете сделать что-то вроде:

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