用numpython绘图

用numpython绘图,python,numpy,Python,Numpy,好的,我试着用一个e到某个表达式来绘制一个函数,但是我一直在错误信息所在的(##)行中得到一个错误 TypeError:不支持*:'numpy.ufunc'和'float'的操作数类型 #!C:\Users\msawe\Anaconda3 or C:\Anaconda3\python import numpy as np import matplotlib.pyplot as plt plt.figure (figsize=(10,10), dpi=100) ax = plt.subplo

好的,我试着用一个e到某个表达式来绘制一个函数,但是我一直在错误信息所在的(##)行中得到一个错误

TypeError:不支持*:'numpy.ufunc'和'float'的操作数类型

#!C:\Users\msawe\Anaconda3 or C:\Anaconda3\python

import numpy as np
import matplotlib.pyplot as plt

plt.figure (figsize=(10,10), dpi=100)

ax = plt.subplot(111)

plt.title('Projectile Motion: Goround given by h(x) ', size=24)

ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

def h(x):
"This function will return the y-coordinate for a given x-coordinate launch."
##return 1 - np.exp(-1* x/1000) + 0.28 *( 1 - np.exp(-0.038*x**2))*(1 - np.cos*(20*x**0.2))

X = np.linspace(0, 10, 101, endpoint=True)  

##plt.plot(X, h(X), color="black", linewidth=3, linestyle="-", label="h(x)")

plt.xlim(0,10)
plt.xticks(np.linspace(0,10,11,endpoint=True))

plt.ylim(0,20.0)
plt.yticks(np.linspace(0,20,11,endpoint=True))

plt.legend(loc='upper left', frameon=False)
plt.savefig("Ch5_P4_lowRes.png",dpi=60)
plt.savefig("Ch5_P4_hiRes.png",dpi=200)
plt.savefig("Ch5_P4_plotting.pdf",dpi=72)

plt.show()

如果我能对如何使它工作有一个大致的想法,那就太好了。

假设我正确地解释了你的等式,那么在你对h(x)的定义中,
np.cos()
的实现中有一个错误:你编写了
np.cos*(…)
而不是
np.cos(…)
。修复后,代码能够绘图-希望它给出正确的结果

这将使您对h(x)的定义从:

进入:

def h(x):
    return 1 - np.exp(-1* x/1000) + 0.28 *( 1 - np.exp(-0.038*x**2))*(1 - np.cos(20*x**0.2))

差别很微妙,但很重要!通过连续运行较小的代码段来查看哪个操作抛出了错误,您可以很容易地检查类似这样的错误-这让我可以快速深入了解
np.cos*(…)
打字错误。

matplotlib可能希望第二个参数以值数组的形式绘制,而不是函数/ufunc。内部操作可能需要在这个like*上定义一些运算符,它可以在数组上工作,但不能在自定义函数上工作。从函数中预先生成一个数组,然后再试一次(也许使用该函数也能工作)!您有一个输入错误:“np.cos*(”应该是“np.cos”(“回溯总是包括行号)错误发生在。您需要做的只是查看回溯底部的行,仔细检查上面的代码,您就会发现错误。下次,请包含回溯的全文。回溯始终包含错误的行号。OP需要做的只是阅读完整的错误消息并小心全面检查列出的行以及它们前面的行。
def h(x):
    return 1 - np.exp(-1* x/1000) + 0.28 *( 1 - np.exp(-0.038*x**2))*(1 - np.cos(20*x**0.2))