Решение простого символического уравнения в 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**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)