f(x)表示三角波形的函数。在其中输入值x,它返回相关的y值。但是我的函数每次都返回x而不是y。例如,f(1)应该给2 / pi而不是1。
def f(x):
y=x
if x in arange(-math.pi,-math.pi/2):
y=(-2/math.pi)*x-2
elif x in arange(-math.pi/2,math.pi/2):
y=(2/math.pi)*x
elif x in arange(math.pi/2,math.pi):
y=(-2/math.pi)*x+2
return y
答案 0 :(得分:1)
numpy.arange
返回一组非连续数字。仅当左侧操作数属于这些数字时,针对它的in
操作才会返回True
。
您最好使用<=
/ <
对来避免此类问题。除了正确之外,它还可以节省创建阵列的成本。
def f(x):
y = x
if -math.pi <= x < -math.pi/2:
y = (-2/math.pi)*x-2
elif -math.pi/2 <= x < math.pi/2:
y = (2/math.pi)*x
elif math.pi/2 <= x < math.pi:
y = (-2/math.pi)*x+2
return y
答案 1 :(得分:0)
&#39; in&#39; keyword仅检查搜索到的元素是否位于列表中。在这里,您的列表仅包含步骤1中的值。也许x的值不是一个完整的步骤。因此,纠正的功能将是:
def f(x):
y=x
if x>-math.pi and x<-math.pi/2:
y=(-2/math.pi)*x-2
elif x>-math.pi/2 and x<math.pi/2:
y=(2/math.pi)*x
elif x>math.pi/2 and x<math.pi:
y=(-2/math.pi)*x+2
return y