python dblquad неверный вызываемый - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь приблизить интеграл Гаусса Линкинга для двух прямых в 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

Есть идеи, где я ошибаюсь?

Приветствия.

...