Eine -periodische Funktion kann mit Hilfe einer Fourierreihe approximiert werden. Diese Reihe konvergiert unter gewissen Bedingungen gegen die Funktion und spielt in der Physik eine wichtige Rolle (Wellenlehre, Wärmeleitung, Quantenmechanik, lineare Differentialgleichungen).
Die -te Teilsumme der Fourierreihe einer Funktion lautet
Die Integrale können mit quadl ausgeführt werden. Für die sin/cos-Integrale müssen inline-Funktionen funccos und funcsin definiert werden, die die Integranden bilden.
Tipp: Bei inline-Funktionen kann man mit den Befehlen formula und argnames die Funktion und ihre Argumente als String bzw. Zelle erhalten
f1 = inline('exp((x-x0).^2)','x','x0') form = formula(f1) -> 'exp((x-x0).^2)' args = argnames(f1) -> {'x','x0'}und bekommt damit die benötigten Informationen. Bei der Definition der inline-Funktionen verwendet man als erstes Argument eine Zeichenkette, die jeweils die zu integrierende Funktion enthält. Für die sin/cos-Integrale muss diese Zeichenkette sinnvoll aus form, args und sin/cos zusammengesetzt werden. Teilbereiche aus Zellen bekommt man mit
args{1}
oder args{2:end}
. Das Zusammensetzen
von Zeichenketten erfolgt wie bei Vektoren mit [], z.B. liefert ['sin','(x)'] den String 'sin(x)'. Bedenken Sie auch, dass der
Integrand neben eine weitere Inputvariable benötigt. Diese muss
über quadl
an die Routine für den Integranden ``durchgeschleust''
werden.
Probieren Sie am Anfang des Skripts fouriertest
[m,a,b]=fouriercoeff(f1,4) mit der inline-Funktion für f1=sin(x) aus. Funktioniert es und ist das Ergebnis sinnvoll? Warum
bekommt man für die Koeffizienten, die eigentlich 0 sein müssten, sehr
kleine Werte? Wie kann man das in fouriercoeff beheben?
Probieren Sie ihr Programm mit den inline-Funktionen für oder aus. Wie schaut es jetzt mit den Fourier-Koeffizienten aus?
|
In der Folge finden sich einige Übungsbeispiele, die momentan nicht verwendet werden.
Winfried Kernbichler 2005-04-26