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.

Download<--Klicke hier für Video

Skript Download

#!/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)