我想绘制一个其中有integrate.quad
的函数。该函数在间隔中具有真实的浮点值。
import matplotlib.pyplot as plt
import numpy as np
import scipy.integrate as integrate
def S(M):
s = integrate.quad(lambda k: np.exp(-k) * np.sin(2 * M), 0, 5)[0]
return s
M = np.arange(10, 20, 1)
plot = plt.plot(M, S(M))
plt.show()
但是我收到此错误:
错误:提供的函数未返回有效的浮点数。
我不知道函数具有正确的浮点值的原因,我用[0]
指定了quad输出的第一项。
答案 0 :(得分:2)
S()
无法处理向量输入。尝试通过以下方式将行替换为plot()
:
plot = plt.plot(M, np.vectorize(S)(M))