从 scipy 返回的大数组集成四边形
Large array returned from scipy integrate quad
各位。我正在尝试使用 scipy.quad 以数值方式计算积分。但是,它 returns 是一个非常大的数组,没有其他错误。任何人都可以看到问题吗?该代码非常适合简单的积分,例如
四边形(λx:x**2,0,4)
但对于下面的代码
尝试 a=20,b=20,c=20,j=1 你会得到一个非常庞大的结果列表,其中包含重复的数字
def Lj(a,b,c,j):
R1=a
R2=b
R3=c
if j==1:
Rj=a
elif j==2:
Rj=b
elif j==3:
Rj=c
else:
raise ValueError('j needs to be an integer between 1 and 3')
result = (R1*R2*R3)*quad(lambda s: 1/((s+Rj**2)*sqrt(((s+R1**2)*(s+R2**2)*(s+R3**2))))/2, 0, inf)
return result
quad
returns 包含积分和误差估计的元组。您将此元组乘以 R1*R2*R3
,这会将元组复制 R1*R2*R3
次。
要解决此问题,请仅使用 quad
返回的第一个值。即,替换为:
result = (R1*R2*R3)*quad(lambda s: 1/((s+Rj**2)*sqrt(((s+R1**2)*(s+R2**2)*(s+R3**2))))/2, 0, inf)
像这样:
intgrl, err = quad(lambda s: 1/((s+Rj**2)*sqrt(((s+R1**2)*(s+R2**2)*(s+R3**2))))/2, 0, inf)
result = (R1*R2*R3)*intgrl
各位。我正在尝试使用 scipy.quad 以数值方式计算积分。但是,它 returns 是一个非常大的数组,没有其他错误。任何人都可以看到问题吗?该代码非常适合简单的积分,例如 四边形(λx:x**2,0,4) 但对于下面的代码 尝试 a=20,b=20,c=20,j=1 你会得到一个非常庞大的结果列表,其中包含重复的数字
def Lj(a,b,c,j):
R1=a
R2=b
R3=c
if j==1:
Rj=a
elif j==2:
Rj=b
elif j==3:
Rj=c
else:
raise ValueError('j needs to be an integer between 1 and 3')
result = (R1*R2*R3)*quad(lambda s: 1/((s+Rj**2)*sqrt(((s+R1**2)*(s+R2**2)*(s+R3**2))))/2, 0, inf)
return result
quad
returns 包含积分和误差估计的元组。您将此元组乘以 R1*R2*R3
,这会将元组复制 R1*R2*R3
次。
要解决此问题,请仅使用 quad
返回的第一个值。即,替换为:
result = (R1*R2*R3)*quad(lambda s: 1/((s+Rj**2)*sqrt(((s+R1**2)*(s+R2**2)*(s+R3**2))))/2, 0, inf)
像这样:
intgrl, err = quad(lambda s: 1/((s+Rj**2)*sqrt(((s+R1**2)*(s+R2**2)*(s+R3**2))))/2, 0, inf)
result = (R1*R2*R3)*intgrl