尝试在 python 中绘制简单函数时出错
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
是 [=23] 中的基本类型=] 这样做会造成很多麻烦。
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
是 [=23] 中的基本类型=] 这样做会造成很多麻烦。