2011-03-04 27 views
0

関数sinusoid(a, w, n)を書くと、振幅aと周波数wの正弦波のnサイクルを表す順序付きペアのリストが返されます。各サイクルには180個の順序付きペアが含まれている必要がありPythonの正弦波

これまでのところ私が持っている:

def sinusoid(a,w,n): 
    return [a*sin(x) for x in range 180] 
+0

この宿題はありますか?表示する場合は、そのようにタグ付けする必要があります。 – JoshAdel

+0

その関数は順序付けされたペアのリストを返しません! –

+1

毎回別の名前を作成する必要はありません。しかし、これは良い言葉です。 http://stackoverflow.com/users/645398/bailey – OscarRyz

答えて

2

正弦波とどのように周波数が式に入ってくるの実際の機能フォームをご検討ください。 (ヒント:http://en.wikipedia.org/wiki/Sine_wave)。

「順序付けされたペア」によって正確に意味されるものはわかりませんが、x、yペアを意味すると見なされます。現在、単一の値のリストのみを返しています。また、Pythonのsin関数のドキュメントを参照してください。

2

わかりました。これは宿題ですが、私たちはあなたのためにそれを行うつもりはありません。しかし、私はあなたにいくつかのヒントを与えます。

手順:

は、振幅A及び周波数Wと正弦波のnサイクルを表す順序対のリストを返す関数sinusoid(a, w, n)を書きます。各サイクルには180個の順序付きペアが含まれている必要がありaw、およびn :3つの引数を取るsinusoid()

  • という名前

    • 機能
    • を書いてください... ...:要件の箇条書きに変換

      ...
    • リストを返す
    • ... of n cycles(?)
    • ...(それぞれ?)180個の順序付けられたペア

    あなたが与えた例は、関数を正しい名前で定義し、正しい数の引数を取っています。それはスタートです(さほど大したことではありませんが、それは何かです)。

    明らかな失敗は、必要な引数のうち2つを使用せず、何かのペアを返さないということです。最初のパラメータに与えられた引数に基づいて180の数値を返すようです。

    確かにそれよりも少し良いことができます。

    のスタブを見てみましょう:

    def sinusoid(a, w, n): 
        '''Return n cycles of the sinusoid for a given amplitude and frequence 
         where each cycle consists of 180 ordered pairs 
        ''' 
        results = list() 
        # do stuff here 
        return results 
    

    機能ですが、3つの引数を取り、リストを返します。そのリストには返す前に何かを含めるために、いくつかのものを追加する必要があります。指示には返すべきものがいくつあるのかがわかります(n回180)。ペア)。

    私たちはループ(n)と別のもの(180)が必要なように思えます。うーん...

    for each_cycle in range(n): 
        for each_pair in range(180): 
         # do something here 
         results.append(something) # where something is a tuple ... an "ordered pair" 
    

    ...またはそれは次のようになります:

    for each_cycle in range(n): 
        this_cycle = list() 
        for each_pair in range(180): 
         this_cycle.append(something) 
        results.extend(this_cycle) 
    

    ...または、それも次のようになります。

    for each_pair in range(n*180): 
        results.append(something) 
    

    ように見えるかもしれません

    。 ..しかし、率直に言って、それはそう思わない。 (内側ループを外側ループでこのように平坦化しようとすると、モジュロ算術を使用して他の中間計算のためにバックアウトする必要があるかもしれません)。

    私はインストラクターが実際に求めていることは分かりません。 math.sin()関数が関与していると思われます。「順序付けされたペア」は、ある種のグラフィックサブシステムにマップされ、グラフをプロットするのに適した座標であると思います。私はこれらのうちの180個が、正弦波をその値の全範囲で示すことを推測しています。たぶん振幅で何かを乗算したり、周波数で別のものを割ったり、サイクルごとに何かを加えることさえあれば...プロットを右または何かに動かすためのオフセット。

    しかし、関数定義のそのスタブから始めて、これらのループ本体の1つまたは別のものに貼り付け、実際に "何か"を使用した部分で意味のある値を返す方法を考え出すように思えます。プレースホルダとして。これらの「ペアを命じたが、」座標であることを想定して行く

    は、プロットのために、あなたがあなたの結果に追加物事のそれぞれがxが単調(空想の道を増加しているフォーム(x,y)でなければならないと思わそれが上昇し続けると決して落ちないと言います)、いつもいつもrange(0,n*180)yはおそらくmath.sin()であり、何かのものが入っていますaw ...しかし、それは私のところでの推測です。

  • 関連する問題