首页 > 解决方案 > python dblquad 无效的可调用

问题描述

我正在尝试使用 dblquad 逼近 R^3 中两条直线的高斯链接积分。我已经将这对线创建为一个对象。

我有一个函数生成的参数化变量 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

知道我哪里出错了吗?

干杯。

标签: pythonscipyintegral

解决方案


推荐阅读