Очень хотелось бы реализовать аналитическую интеграцию в своем калькуляторе. Я использовал численное интегрирование до этой попытки с успехом. Однако я не могу заставить свой код работать. Я использую модуль 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 вместо этого превращает выражение в функцию.
Кто-нибудь может помочь?