Deltafunktion als Film
Eine Delta-Funktion lässt sich durch Sinusx/x annähern. In einen Film gefasst wird das recht anschaulich. Die Skalen werden im Verlauf angepasst damit man die Dynamik besser sieht. Mit gnuplot kein Problem.
#!/usr/bin/gnuplot
BN='delta-approx'
GIF=BN.'.gif'
MKV=BN.'.mkv'
#
sinc(x,Epsilon) = sin(x/Epsilon) / (pi * x )
delta(x,a) = exp(-x**2.0/2.0/a)/(sqrt(2.0*pi*a))
nmax = 200
ybereich(n) = n**1.54/nmax
xbereich(n) = 50.0/n**0.650
xpix = 1920
ypix = xpix * 9 / 16
set term gif animate size xpix,ypix
set output GIF
set xtics
set ytics
set border
set yrange [-4:10]
set key left font ",20"
set grid xtics
set grid ytics lc rgb 'green'
set title "δ approximation functions" font ",20"
set samples xpix
do for [n=1:20:1] {
# set xrange [(nmax*-1.0)/1:(nmax*1.0)/1]
set xrange [- xbereich(1):xbereich(1)]
set yrange [- ybereich(1):ybereich(1)*4]
plot Epsilon=nmax/(1**2.0) ak=pi/2.0*Epsilon**2.0 sinc(x,Epsilon) \
title sprintf("Sinc by sin(x/ε)/(π·x) ε=%.6f",Epsilon)
}
do for [n=1:40:1] {
# set xrange [(nmax*-1.0)/1:(nmax*1.0)/1]
set xrange [- xbereich(1):xbereich(1)]
set yrange [- ybereich(1):ybereich(1)*4]
plot Epsilon=nmax/(1**2.0) ak=pi/2.0*Epsilon**2.0 sinc(x,Epsilon) \
title sprintf("Sinc by sin(x/ε)/(π·x) ε=%.6f",Epsilon), \
delta(x,ak) lc rgb 'red' title sprintf("δ by e^{(-x²/a)/(π·x)} a=%.6f",ak)
}
do for [n=1:nmax:1] {
# set xrange [(nmax*-1.0)/n:(nmax*1.0)/n]
set xrange [- xbereich(n):xbereich(n)]
set yrange [- ybereich(n):ybereich(n)*4]
plot Epsilon=nmax/(n**2.0) ak=pi/2.0*Epsilon**2.0 sinc(x,Epsilon) \
title sprintf("Sinc by sin(x/ε)/(π·x) ε=%.6f",Epsilon), \
delta(x,ak) lc rgb 'red' title sprintf("δ by e^{(-x²/a)/(π·x)} a=%.6f",ak)
}
do for [n=1:70:1] {
# set xrange [(nmax*-1.0)/nmax:(nmax*1.0)/nmax]
set xrange [- xbereich(nmax):xbereich(nmax)]
set yrange [- ybereich(nmax):ybereich(nmax)*4]
plot Epsilon=nmax/(nmax**2.0) ak=pi/2.0*Epsilon**2.0 sinc(x,Epsilon) \
title sprintf("Sinc by sin(x/ε)/(π·x) ε=%.6f",Epsilon), \
delta(x,ak) lc rgb 'red' title sprintf("δ by e^{(-x²/a)/(π·x)} a=%.6f",ak)
}
set output
system sprintf("ffmpeg -y -i %s -pix_fmt yuv420p -c:v h264 %s", GIF, MKV)
Skript Download