• ベストアンサー

BASICでフーリエ級数展開のグラフが思うように描けません!!

BASICで f(x)= -π/4 (x<0)    +π/4 (x>0) をフーリエ級数展開した f(x)≒sinx+(sin3x)/3+(sin5x)/5+…(+sin(2n-1)x)/(2n-1) のグラフを描きたいと思っています。 十進BASICで次のようなプログラムを作ってみたのですが、 x<0 のとき-π/4 , x>0 のときπ/4 というグラフにはならず、 サインのグラフが歪んだようなものが出来上がってしまいます。 この場合、プログラムのどこを修正すればよいのでしょうか? LET S=0 LET k=0 DEF f(X)=SIN((2*k-1)*X)/(2*k-1) SET WINDOW -10,10,-23,10 DRAW GRID FOR X=-10 TO 10 STEP 0.1 FOR k=1 TO 1000 LET S=S+SIN((2*k-1)*X)/(2*k-1) NEXT k PLOT LINES: X,S NEXT X END

この投稿のマルチメディアは削除されているためご覧いただけません。

質問者が選んだベストアンサー

  • ベストアンサー
  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.2

後は、角度の単位がラジアンになっていない。 これで、どう? DEF f(X)=SIN((2*k-1)*X)/(2*k-1) SET WINDOW -10,10,-23,10 DRAW GRID FOR X=-10 TO 10 STEP 0.1 LET S=0 LET Y = X * PI / 180 FOR k=0 TO 1000 LET S=S+f(Y) NEXT k PLOT LINES: X,S NEXT X END ・最初の変数の初期化は削除。 ・変数sの初期化はループの中。 ・角度をラジアンに変更。 ・せっかくf(X)を定義しているから使用する。

ojaga100
質問者

お礼

試してみたところ、うまくいきました!!! 角度をラジアンでやる方法がわからなかったので保留にしていましたが、それも教授していただきありがとうございました。

その他の回答 (2)

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.3

#2です。 自分で、 「角度の単位がラジアンになっていない。」 とは書いたけど、自分で「???」になっています。 (本当にそういうことか?) 何か違う気がする…。

  • f272
  • ベストアンサー率46% (8467/18126)
回答No.1

LET S=0 を FOR k=1 TO 1000 LET S=S+SIN((2*k-1)*X)/(2*k-1) NEXT k の直前に置かないとダメでしょ。

ojaga100
質問者

お礼

返信が遅くなって申し訳ありません。 変数の初期化は使う直前にする、ということで了解しました。