столкновение sympy Numpy

#python #numpy #sympy

#python #numpy #sympy

Вопрос:

в этом ПРОСТОМ коде я получал ОШИБКУ АТРИБУТА, возможно, из-за np, sym, столкновения, помогите мне решить ее.

 import sympy as sym
x=sym.Symbol('x')
def f(x):
    return (x**2*np.exp(x))/((np.exp(x)-1)**2)
sym.integrate(f(x),x)
 

 AttributeError                            Traceback (most recent call last)
<ipython-input-48-574a1c7346b8> in <module>
      3 def f(x):
      4     return (x**2*np.exp(x))/((np.exp(x)-1)**2)
----> 5 sym.integrate(f(x),x)

<ipython-input-48-574a1c7346b8> in f(x)
      2 x=sym.Symbol('x')
      3 def f(x):
----> 4     return (x**2*np.exp(x))/((np.exp(x)-1)**2)
      5 sym.integrate(f(x),x)

AttributeError: 'Symbol' object has no attribute 'exp'
 

Комментарии:

1. пожалуйста, правильно отформатируйте свой код, а также обратную трассировку, meta.stackexchange.com/questions/22186

2. np.exp при задании нечислового объекта, такого как a sympy Symbol , пытается передать задачу методу с тем же именем. Отсюда и ошибка. Есть sym.exp , но x.exp() не работает. В качестве общего sympy кода используйте Symbols .

Ответ №1:

Да, я полагаю, вы не можете использовать np-функции. Это работает:

 x = sym.Symbol('x')

def f(x):
    return (x**2*sym.exp(x))/((sym.exp(x)-1)**2)

print(sym.integrate(f(x),x))
 

Комментарии:

1. Спасибо, чувак, это помогло, в любом случае, не могли бы вы поделиться со мной, как закодировать этот же интеграл с ограничениями от 0 до inf, когда я попробовал, он снова показал ошибку «из-за переполнения потока из-за двойного масштабирования»

2. Я сделал sym.integrate(f(x),(x,0,sym.oo)) , здесь много документов docs.sympy.org/latest/modules/integrals/integrals.html

3. from scipy.integrate import quad import numpy as np def f(x): return (x**2*np.exp(x))/((np.exp(x)-1)**2) print(quad(f,0,np.inf)) ответ: (nan, nan) C:UsersSubhamAnaconda3libsite-packagesipykernel_launcher.py:7 : Предупреждение о времени выполнения: переполнение, обнаруженное в системе импорта double_scalars C:UsersSubhamAnaconda3libsite-packagesipykernel_launcher.py:7 : Предупреждение о времени выполнения: недопустимое значение, встречающееся в системе импорта double_scalars

4. @Subham, почему ты используешь scipy.integrate функцию для sympy функции? Вы только что обнаружили, что np.exp это не работает sympy . scipy является расширением numpy .