繁体   English   中英

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM