我得到了当前代码:
from math import cos, sin, pi
import numpy as np
import matplotlib.pyplot as plt
def f(x):
values = []
s = 0
for n in range(1, 6, 1):
s += -((2/(n*pi))*(((cos((n*pi)/2))-1)*(sin((n/2)*x))))
values.append(s)
return values
x = np.linspace(-2*pi, 6*pi, 500)
plt.plot(f(x))
我应该绘制f(x),但当我运行代码时,我得到以下错误:
TypeError: only size-1 arrays can be converted to Python scalars
你知道我做错了什么吗
任何帮助都将不胜感激
如果您是编程新手,这可能与您现在所做的有点不同,但是我基本上将函数拆分,以解释每个组件的功能,更重要的是,使用了numpy的内置函数,它将被证明比嵌套循环更有效,尤其是当您的数据变得更大时
为了理解函数
f
发生了什么,请在Python中查找(列表)理解,但它基本上是一个用单行表示的for
循环我认为公式中的
x
值只适用于x
的一个值,并且由于列表中有多个x
,因此必须迭代每个for xval in x:
,执行计算并将计算出的值附加到values
列表中相关问题 更多 >
编程相关推荐