【发布时间】:2020-05-18 16:33:57
【问题描述】:
我想在 scipy 中使用积分命令,并有一个函数可以乘以数组中的每个元素一次。
import math
import matplotlib.pyplot as plt
import numpy as np
import scipy.integrate as integrate
from scipy.integrate import quad, romberg
import scipy.special as special
from numpy import sqrt
yes = np.array([0,1])
def integrate(x,yes):
return x+yes
result = quad(integrate,0,1,args=(yes))
print(result)
当我这样做时,我得到了错误 只有 size-1 的数组可以转换为 Python 标量
但如果我这样做
import math
import matplotlib.pyplot as plt
import numpy as np
import scipy.integrate as integrate
from scipy.integrate import quad, romberg
import scipy.special as special
from numpy import sqrt
yes = np.array([0])
def integrate(x,yes):
return x+yes
result = quad(integrate,0,1,args=(yes))
print(result)
它给了我这个 (0.5, 5.551115123125783e-15) 这正是我想要的,但我想要数组中的每个元素。
有没有办法写一个 for 循环? 我也听说过 scipy.integrate.quad_vec,但那不起作用。提前谢谢你
【问题讨论】:
-
args应该得到一个元组。(yes)不是元组,它只是yes。args=(yes,)是将变量yes传递给您的函数的正确方法。也就是说,quad只能整合一个值;你的函数需要返回一个标量。 -
我如何让我的函数返回一个标量?
标签: python arrays numpy scipy numerical-integration