Komplexe Fourierreihe < Maple < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 23:00 Di 09.09.2008 | Autor: | ElBarto |
Aufgabe | Formulieren Sie eine allgemeine Prozedur zur Fourier-Reihenentwicklung für eine beliebige Funktion f(t). Testen Sie diese an den nachfolgend angegebenen reelen Funktionen. Stellen Sie die Simulationsergebnisse grafisch dar und diskutieren Sie diese.
[mm] f(x)=\begin{cases}e^{x} , & -\pi < x < \pi\\ \bruch{1}{2}(e^{x}+e^{-x}), & x=\pi \end{cases} [/mm] |
Hallo,
die Prozedur für eine normale Fourier-Reihenentwicklung bekomme ich hin, allerdings handelt es sich hierbei ja um eine komplexe Fourierreihe und da hakt es dann total bei mir.
Hier meine Prozedur zur normalen Fourier-Reihenentwicklung:
Fourier:=proc(f,gu,go,T,n)
local a0,an,bn,summe,omega;
omega:=((2*Pi)/T);
a0:=(2/T)*int(f(t),t=gu..go);
an:=seq((2/T)*int(f(t)*cos(k*omega*t),t=gu..go),k=1..n);
bn:=seq((2/T)*int(f(t)*sin(k*omega*t),t=gu..go),k=1..n);
summe:=(a0)/2+sum((an[k]*cos(k*t*omega)+bn[k]*sin(k*t*omega)),k=1..n);
end proc:
Da klappt alles auch noch wunderbar. Für eine komplexe Reihe muss ich ja aber eine andere Prozedur erstellen, da ich dort doch gar kein a0, an und bn habe. Hier nun der Ansatz für die komplexe Reihe:
Fourier:=proc(f,gu,go,n)
local cn,summe;
cn:=seq((1/(2*Pi))*int(f(x)*exp(I*k*x),x=gu..go),k=-n..n);
summe:=sum(cn[k]*exp(I*k*x),k=-n..n);
end proc:
Wenn ich die Werte dann weiterverarbeiten will, spuckt er mir immer folgenden Fehler aus:
Error, (in tools/add) invalid subscript selector
So ich hoffe, ich konnte mein Problem einigermaßen verständlich erörtern und würde mich sehr über eine Hilfestellung freuen. Bin schon fast am Verzweifeln.
Gruß Simon
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 20:08 Mi 10.09.2008 | Autor: | uliweil |
Hallo Simon,
da kann man auch verzweifeln. Letztlich habe ich auch keinen (sinnvollen) Grund gefunden warum es so nicht geht. Die Fehlermeldung stammt aus der sum - Zeile, das kann man durch auskommentieren sehen. Wenn man die Summation bei einer positiven Zahl beginnt kommt keine Fehlermeldung. Trotzdem dürfen bei sum negative Startwerte benutzt werden. Auch das Umwandeln in eine for-Schleife bringt nichts. Das einzige was geholfen hat, war die Zeile vorher über eine for-schleife zu formulieren (siehe unten), dann gings. Maple ist schon manchmal merkwürdig!
Nebenbei: da fehlt außerdem noch ein Minus bei int(f(x)*exp(-I*k*x) ...
Hier meine Lösung:
Fourier:=proc(f,gu,go,n)
local k,j,cn,summe;
for k from -n to n do cn[k]:=(1/(2*Pi))*int(f(x)*exp(-I*k*x),x=gu..go) end do;
summe:=sum(cn[j]*exp(I*j*x),j=-n..n);
end proc;
Gruß
Uli
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:22 Mi 24.09.2008 | Autor: | ElBarto |
Hallo Uli,
entschuldige bitte die verspätete Reaktion, aber hatte einiges um die Ohren.
Jedenfalls vielen, vielen Dank mit deiner Lösung klappt alles einwandfrei! Also nochmals Danke, du warst mir eine sehr große Hilfe!!!
MfG Simon
|
|
|
|