Hallo zusammen!
Ich beschäftige mit der Programmierung eines m-files in MATLAB,dass den Namen "fourierreihen" trägt.
Ziel einer Fourierreihe ist es die gewünschten Koeffizienten zu errechnen,wobei man zwischen einer gerade(nur cos-Anteile),ungeraden(nur sin-Anteile) und gemischten Funktion unterscheiden muss.
Für eine ungerade Funktion gibt es zusätzlich den Koeffizienten a0 der aber auch den Wert "0"annehmen kann. Hierbei kommt auch schon mein Problem ich konnte alles soweit lösen,dass ich alle Funktionen bei denen a0 den Wert "0"annimmt als gerade plotten lies. Alle anderen als ungerade. Mein Problem ist, dass es auch Funktionen gibt, bei welchen a0 den Wert "1" oder "1/2" oder... annehmen kann, diese aber gerade sind.
Zusätzlich möchte ich noch anmerken, dass zum Beispiel bei einer gerade Funktion die "Sinuswerte" (in meinem Fall bn) "0" sein müssten und umgekehrt. Konnte aber auch über den Weg von bn keine Lösung finden.
π...pi
Bsp. Funktion = x/π ;Grenzen von 0-π ("Lösung":a0=1)
weiteres Problembsp: (2x-π)/2π; Grenzen von 0-pi/2 ("Lösung":a0=0.5)
Code:
function[an,bn]=fourierreihen(fun);
syms x
n=input('Bitte geben Sie n als Vektor von 0 bis ein (Bsp.0:1:15): ');
T1=input('Bitte Geben Sie die obere Grenze der Periode (Bsp.2*pi)ein: ');
T2=input('Bitte Geben Sie die untere Grenze der Periode (Bsp.0) ein: ');
T = T1-T2; % Periode
a_0=(2/T)*int(fun,T2,T1); % a0 % an=(2/T)*int(fun*cos(n*x),x,T2,T1);
bn=(2/T)*int(fun*sin(n*x),x,T2,T1);
if a_0==0 display(' ');
display('Gerade periodisch/symmetrisch -> !!!!an!!!! => cos-Anteile');
an=(2/T)*int(fun*cos(n*x),x,T2,T1);
disp(' ');
display('Koeffizienten von a:');
an=double(an)';
bar(n,abs(an));
disp('a0=');
disp(a_0);
disp('"bn" nicht vorhanden');
disp('Beträge von an: ');
disp(abs(an));
else display(' ');
display('Ungerade periodisch/symmetrisch -> !!!!bn!!!! => sin-Anteile');
bn=(2/T)*int(fun*sin(n*x),x,T2,T1);
bn=double(bn);
bar(n,abs(bn));
disp(' ');
display('b0=0....Koeffizienten von b:');
display(bn');
disp('Beträge von bn: ');
disp(abs(bn)');
disp('"a0"=0 und "an" nicht vorhanden');
end end
Ich hoffe mir kann wer helfen,da ich schon am verzweifeln bin
grüße[/b]
FlankStar
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 30.11.2008, 23:43
Titel:
ich möchte noch hinzufügen:
die eigentlich richtige Abfrage würde darauf beruhen, dass bei geraden Funktionen gilt: f(x) = f(-x)
bei ungeraden Funktionen: f(x) = -f(-x)
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.