尝试在python中绘制一个简单的函数时出错

时间:2016-11-10 00:06:44

标签: python function numpy plot integration

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))

1 个答案:

答案 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>