import math
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-4,5,1)
y=(math.sqrt(math.cos(x)))*(math.cos(300*x))+(math.sqrt(abs(x))-0.7*(4-x*x)**0.1)
plt.plot(x,y)
plt.show()
我想绘制这个功能。这很简单,但我遇到了麻烦。当我运行该程序时,它说:
File "funct.py", line 7, in <module>
y=(math.sqrt(math.cos(x)))*(math.cos(300*x))+(math.sqrt(abs(x))-0.7*(4-x*x)**0.1)
TypeError: only length-1 arrays can be converted to Python scalar
答案 0 :(得分:0)
只有numpy
版本的函数,而不是来自math
或builtins
的函数,可以广播而不是处理标量参数。你想要这个:
y = (np.sqrt(np.cos(x)))*(np.cos(300*x))+(np.sqrt(np.abs(x))-0.7*(4-x*x)**0.1)
当然,这有其自身的问题:np.cos(x)
给出了一些负值,您尝试使用平方根。