У меня есть массивы x и y точек данных, которые я использовал для создания интерполирующей функции func_spline
, как показано ниже.
import numpy
from numpy import loadtxt
from scipy.interpolate import *
x_given = numpy.arange(1,21400,21400/25000)
y_given = loadtxt("Yvalues.txt", comments="#", delimiter=",", unpack=False)
func_spline = interp1d(x_given,y_given, kind='cubic')
y_is = func_spline(x_given)
def alphasinterp(ktsq):
return func_spline(ktsq)
import sympy as sp
import scipy.integrate.quadrature as sciquad
result = sciquad(alphasinterp,0,21400)
print(result)
Код успешно выполняет интеграцию, однако я хотел бы изменить код, чтобы разрешить интеграцию формы
result = sciquad(alphasinterp*f1,0,21400)
где f1
— любая функция (функция ktsq
и других переменных, которые не участвуют в интегрировании), которую я сворачиваю с alphasinterp
в интегрировании. Например, для определенного f1
я получаю сообщение об ошибке
TypeError: unsupported operand type(s) for *: 'function' and 'FunctionClass'
Как решить? Спасибо! (как видно из кода, массив y содержит около 21000 точек, поэтому копирование и вставка моих данных здесь, вероятно, недопустимо или нежелательно. Я рад загрузить текстовый файл «Yvalues.txt», содержащий данные, но я пока не вижу способа сделать это)