我需要绘制函数'h',只有当n是奇数时。我读到我需要使用"vectorize"函数,但当我在条件中编写它时,它不起作用。如果我在条件之外添加代码,那就不起作用了。我该如何解决这个问题?
from math import *
import matplotlib.pyplot as plt
import numpy as np
j = 0
h = 0
x = np.arange(-pi, pi, 0.01)
for n in range(1, 21):
if n % 2 == 0:
h = 0
else:
h = (4/(n*pi))*sin(n*x)
j = h + j
plt.plot(x, j)
plt.show()
如果我在Matlab中编写这段代码,它就可以工作了。输出如下:"TypeError:只有size-1数组才能转换为Python标量"。
正如@fgacon所建议的,我使用了np.sin()
,另一个问题是j=h+j
在循环之外。下面的代码应该可以正常工作。
from math import *
import matplotlib.pyplot as plt
import numpy as np
j = 0
h = 0
x = np.arange(-pi, pi, 0.01)
for n in range(1, 21):
if n % 2 == 0:
h = 0
else:
h = (4/(n*pi))*np.sin(n*x)
j = h + j
plt.plot(x, j)
plt.show()