Я пытаюсь приблизить интеграл Гаусса Линкинга для двух прямых в R ^ 3, используя dblquad. Я создал эту пару линий как объект.
У меня есть форма для подынтегрального выражения в параметризационных переменных s и t, сгенерированного функцией gaussint(self,s,t)
, и это работает. Затем я просто пытаюсь определить функцию, которая возвращает двойной интеграл по двум интервалам [0,1].
Редактировать - код функции выглядит следующим образом:
def gaussint(self,s,t):
formnum = self.newlens()[0]*self.newlens()[1]*np.sin(test.angle())*np.cos(test.angle())
formdenone = (np.cos(test.angle())**2)*(t*(self.newlens()[0]) - s*(self.newlens()[1]) + self.adists()[0] - self.adists()[1])**2
formdentwo = (np.sin(test.angle())**2)*(t*(self.newlens()[0]) + s*(self.newlens()[1]) + self.adists()[0] + self.adists()[1])**2
fullden = (4 + formdenone + formdentwo)**(3/2)
fullform = formnum/fullden
return fullform
Различные другие вызовы функций здесь - это просто биты линейной алгебры - длины линий, угол между ними и так далее. s и t были определены как символы в восходящем направлении, если они должны быть.
Тогда код для интеграции выглядит следующим образом (я выделил его просто для того, чтобы попытаться выяснить, что происходит:
def approxint(self, s, t):
from scipy.integrate import dblquad
return dblquad(self.gaussint(s,t),0,1, lambda t:0,lambda t:1)
Запуск этого кода заставляет меня долго ждать несколько непроходимых сообщений процесса, за которыми следуют
ValueError: invalid callable given
Есть идеи, где я ошибаюсь?
Приветствия.