Решение простого символического уравнения в python

Я использую 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 ответа

Решение

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

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

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

у = 12 / ((2 ** х) -1)) / 1е8

Чтобы сравнить, попробуйте решить, например, 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)]

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

Выражение, данное для решения, имеет предполагаемую 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)]

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

solve(Eq(eq,1),s)
Другие вопросы по тегам