[英]Error trying to plot a simple function in python
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))
问题是您要使用数组作为参数来调用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中的基本类型,这样做会造成很多麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.