Реализация аналитической интеграции для расширения серии в Python

Очень хотелось бы реализовать аналитическую интеграцию в своем калькуляторе. Я использовал численное интегрирование до этой попытки с успехом. Однако я не могу заставить свой код работать. Я использую модуль scipy.integrate и получаю код ошибки TypeError: can't convert expression to float

Мой код:

from sympy.functions import sin,cos,tan
from sympy.abc import x
from sympy import series
import scipy.integrate as integrate
import scipy.special as special

function1   = str(input("The function that should be expanded: "))
x0          = float(input("Point of developement: "))
n           = 1 + int(input("Grade of polynomial: "))
# input 0 -> n=1 -> konstant  (1 term, konstant)
# input 1 -> n=2 -> lineær    (2 termer, konstant + linear)
# input 2 -> n=3 -> kvadratisk (3 termer, konstant + linear + kvadratisk)
# ...

function2 = series(function1, x, x0, n)
print(function2)

a = float(input("Integrate from: "))
b = float(input("Integrate to: "))

def f(x):
    return function2.removeO()

x = Symbol('x')
result = integrate.quad(lambda x: f(x), a, b)

print("...................")
print("Here is your answer: ")
print(result)

Я полагаю, что это может быть связано с тем, что код использует разные модули (sympy и scipy), или мне просто нужно каким-то образом преобразовать выражение. Я пытался использовать lambdify, но безуспешно.

def f(x):
    return function2.removeO()
lam_f = lambdify(x, f(x))
result = integrate.quad(lambda x: lam_f, a, b)

И получил еще одну TypeError, так как lambdify вместо этого превращает выражение в функцию.

Кто-нибудь может помочь?


person Nikolai    schedule 21.09.2020    source источник
comment
Некоторая форма этого вопроса задавалась здесь, в StackOverflow, более одного раза. Например, посмотрите, если stackoverflow.com/questions/48519770/ или stackoverflow.com/questions/40193323/ ответьте на ваш вопрос.   -  person Warren Weckesser    schedule 21.09.2020
comment
result = intregrate.quad(lam_f, a,b) - поскольку для интеграции.quad нужна функция, которая возвращает что-то, что можно преобразовать в число с плавающей запятой.   -  person Iñigo    schedule 21.09.2020
comment
Я понятия не имею, почему я не попробовал этот @Iñigo, он прекрасно работает! Благодарю вас!   -  person Nikolai    schedule 21.09.2020
comment
Для аналитической интеграции вы должны использовать интеграцию sympy, а не scipy.   -  person Oscar Benjamin    schedule 21.09.2020
comment
@OscarBenjamin, спасибо, я только что исправил это, и, кроме того, это означает, что мне не нужно использовать lambdify. Эффективность для победы!   -  person Nikolai    schedule 21.09.2020