Я пытаюсь сделать относительно простой предел использования SymPy:Limit не оценивает степенной функции
from sympy import *
f,k,b = symbols('f k b')
test = f**b - k**b
limit(test,k,f)
Я ожидающей 0, но я получаю:
>>> limit(test,k,f)
f**b - exp(b*log(f))
Математически это правильно (и ноль), но почему он не оценивает ноль?
Примечание, если я определяю:
from sympy import *
f,k,b = symbols('f k b')
test = exp(b*log(f)) - exp(b*log(k))
limit(test,k,f)
тогда я получить ноль.
Счастлив принять ответ, как он решает мою проблему. Спасибо, что нашли время ответить. Хотя я немного не уверен в объяснении. В моем втором примере, когда я пишу test = exp (blog (f)) - exp (blog (k)), sympy оценивает предел до нуля. Но вопрос об отключении ветвей, похоже, применим и здесь. Например. b = 1/2, f = -1 и k = -1-I * eps, где eps вещественно положительно и стремится к нулю. Тогда, из-за ветвления разреза логарифма, терм1 = + I и терм2 -> - I? Таким образом, предел не всегда равен нулю (в зависимости от направления в комплексной плоскости k подходов f), но sympy дает нуль. – pyguy
Да, возврат 0 для предела exp (b * log (f)) является неверным результатом вообще, так как точка, в которой выполняется предел, может быть точкой разреза ветви. По-видимому, алгоритм SymPy, используемый для оценки пределов, не полностью осознает разветвление ветвей. – FTP
Обратите внимание, что 'limit' вычисляет реальный предел (приближающийся справа по умолчанию). Сложные лимиты не реализованы. – asmeurer