如何修复类型 'int' 没有 len()?

How to fix type 'int' has no len()?

我不明白这段代码有什么问题。有人能帮助我吗? 这是从 1 到无穷大的 Pareto II 型被积函数,a 和 b 是分布的参数。 TypeError: object of type 'int' has no len() -> 这是我尝试计算 E

时的错误
import numpy as np
from scipy.integrate import quad
from mpmath import *

def integrand(a, b, x):
    return x*a(b**a)/((x+1)**a)

a = 3                                                                                     
b = 2

E = quad(integrand, 1, np.inf, args=(a, b))
E

删除行

from mpmath import *

来自您的代码。

mpmath has a quad 函数,所以当您执行 from mpmath import * 时,您将覆盖从 SciPy 导入的名称。你收到错误 TypeError: object of type 'int' has no len() 因为 mpmath 版本的 quad 期望第二个参数具有 [a, b] 的形式,但你传入了 1.

这对我来说似乎是导入错误,scipy 和 mpmath 都有 quad 方法的实现,因此要使代码正常工作,必须删除 mpmath 导入语句。 我可以 运行 下面的代码.. 上限的大值会溢出

import numpy as np
from scipy import integrate
#from scipy.integrate import quad
from mpmath import *

def intergrand(a, b, x):
    return x*a*(b**a)/((x+b)**a)
a = 3                                                                                     
b = 2

E = integrate.quad(intergrand,1, 100, args=(a, b))
print(E)