周期T
の三角波を生成するにはabs(mod(i,T)-T/2)-T/4
とする。
ここで、i=0,1,2,3,...
。
また、T
は4の倍数である必要がある。
この文章は Gist https://gist.github.com/t-nissie/0325fc29d833e0aa6f4d に置いてある。
git clone https://gist.github.com/0325fc29d833e0aa6f4d.git triangle_wave
もしくは
git clone git@gist.github.com:0325fc29d833e0aa6f4d.git triangle_wave
でクローンできる。
triangle_wave.gp:
#!/usr/bin/env gnuplot
##
set title 'triangle wave with {/Times-Italic T}=16'
T = 16
set key bottom
set xrange [0:T*2]
set samples T*2+1
set yrange [-T:T]
set terminal postscript landscape enhanced color dashed "Times-Roman" 27
set output "triangle_wave.eps"
set xlabel '{/Times-Italic i}'
set xtics 4
set ytics 4
set grid
plot int(x)%T title ' mod({/Times-Italic i},{/Times-Italic T})' with linespoints lt 2 pt 2 lw 3,\
int(x)%T-T/2 title ' mod({/Times-Italic i},{/Times-Italic T})-{/Times-Italic T}/2' with linespoints lt 3 pt 3 lw 3,\
abs(int(x)%T-T/2) title 'abs(mod({/Times-Italic i},{/Times-Italic T})-{/Times-Italic T}/2)' with linespoints lt 4 pt 4 lw 3,\
abs(int(x)%T-T/2)-T/4 title 'abs(mod({/Times-Italic i},{/Times-Italic T})-{/Times-Italic T}/2)-{/Times-Italic T}/4'\
with linespoints lt 1 pt 1 lw 3,\
0 t '' with lines lt 1 lc 9
set output # ensure to close the output file
!epstopdf.pl triangle_wave.eps
UNIXの場合は gnuplot triangle_wave.gp
、
Windowsの場合は gnuplot.exe triangle_wave.gp
などと実行する。
実行結果は図のとおりになる。
図: 三角波を生成する方法。この図はtriangle_wave.gpを実行して得られる。
- 周期
T
の三角波を生成する方法abs(mod(i,T)-T/2)-T/4
を紹介 i=0,1,2,3,...
、T
は4の倍数- 剰余 (Fortran:
mod(i,T)
, C:i%T
) を巧妙に使う - 実は
i, T
ともに実数でも可 - 生成した三角波でヒステリシスループを描く