尝试在 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] 中的基本类型=] 这样做会造成很多麻烦。