のこぎり波のプログラムについて

 投稿者:zyam63メール  投稿日:2011年10月15日(土)04時40分27秒
  のこぎり波のプログラムを教えて頂けませんか。わたしの作ったのは以下のようなのです。

SET WINDOW -10,10,-10,10
DRAW grid(1,1)
FOR x=-3*PI TO 3*PI STEP 0.001
   LET p= (-1)^(0)*SIN(1*x)/1
   LET q= (-1)^(1)*SIN(2*x)/2
   LET r= (-1)^(2)*SIN(3*x)/3
   LET s= (-1)^(3)*SIN(4*x)/4
   LET t= (-1)^(4)*SIN(5*x)/5
   LET u= (-1)^(5)*SIN(6*x)/6
   LET v= (-1)^(6)*SIN(7*x)/7
   LET w= (-1)^(7)*SIN(8*x)/8
   LET e= (-1)^(8)*SIN(9*x)/9
   LET f= (-1)^(9)*SIN(10*x)/10
   LET g= (-1)^(10)*SIN(11*x)/11
   LET h= (-1)^(11)*SIN(12*x)/12
   LET i= (-1)^(12)*SIN(13*x)/13
   LET j= (-1)^(13)*SIN(14*x)/14
   LET k= (-1)^(14)*SIN(15*x)/15
   LET l= (-1)^(15)*SIN(16*x)/16
   LET y=o+p+q+r+s+t+u+v+w+z+e+f+g+h+i+j+k+l
   PLOT x,y
NEXT x
END
 

Re: のこぎり波のプログラムについて

 投稿者:山中和義  投稿日:2011年10月15日(土)08時55分6秒
  > No.1675[元記事へ]

zyam63さんへのお返事です。

!のこぎり波は正弦波を合成することで近似する
SET WINDOW -10,10,-10,10
DRAW grid
FOR x=-10 TO 10 STEP 1/2^8
   LET s=0
   FOR k=1 TO 50 !周期2π Σ[k=1,∞]{sin(k*x)/k}
      LET s=s+SIN(k*x)/k
   NEXT k
   PLOT LINES: x,s*2/PI; !振幅1
NEXT x
PLOT LINES


!床関数よる
SET LINE COLOR 4
FOR x=-10 TO 10 STEP 1/2^8 !※刻み幅
   LET t=-(x-PI)/(2*PI) !周期2π、振幅1
   PLOT LINES: x,2*(t-INT(t+1/2)); !※折れ線近似
NEXT x
PLOT LINES

END


 

Re: のこぎり波のプログラムについて

 投稿者:zyam63メール  投稿日:2011年10月15日(土)17時16分47秒
  > No.1676[元記事へ]

山中様、ありがとうございます。

nを可変にして、収束の様子を見るようにしました。三角関数の合成の加算をどうすればよいのか分からなかったので助かりました。


!のこぎり波は正弦波を合成することで近似する
SET WINDOW -10,10,-10,10
DRAW grid
INPUT n
FOR x=-3*PI TO 3*PI STEP 0.001
   LET s=0
   FOR k=1 TO n             !周期2π Σ[k=1,∞]{sin(k*x)/k}
      LET s=s+(-1)^(n-1)*SIN(k*x)/k
   NEXT k
   PLOT LINES: x,s          ! s*2/PI;    !振幅1
NEXT x
PLOT LINES
END

>
 

戻る