ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()
我根据集成方法得到了不同的错误。给定单个值时,该函数可正常工作。
import matplotlib.pyplot as plt
import scipy as sp
import numpy as np
def mass_enc(R):
def int(r): return r**2 * r
return sp.integrate.quad(int, 0, R)
print(mass_enc(10))
t1 = np.arange(0.1, 5.0, 0.1)
plt.plot(t1, mass_enc(t1))
答案 0 :(得分:1)
问题是您使用数组作为参数调用sp.integrate.quad
。虽然有些功能实际允许,但quad
却没有。因此,您需要单独提供R
的每个值。这可以通过map(function, iterable)
来完成。所以这就是你如何做到的。
import matplotlib.pyplot as plt
import scipy as sp
import numpy as np
def inte(r):
return r**2 * r
def mass_enc(R):
return sp.integrate.quad(inte, 0, R)[0]
print(mass_enc(10))
t1 = np.arange(0.1, 5.0, 0.1)
m = map( mass_enc, t1)
plt.plot(t1, m)
plt.show()
请注意,你应该从不调用python int
中的任何对象,因为int
是python中的基本类型,这样做会导致很多麻烦。 / p>