2016-10-09 14 views
0

f(x)は三角波の関数を表します。ここで値xを入力すると、関連するy値が返されます。しかし、私の関数はxの代わりに毎回xを返します。例えば、F(1)2/PIの代わりに1yの代わりにxの関数戻り値

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 
+1

配列に1がなければ、何も一致しない限り、それぞれの範囲が表示され、かなり明白になります。 –

答えて

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 
0

'in'キーワードは、検索された要素がリスト内にあるかどうかを確認するだけです。ここでは、リストには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 
関連する問題