WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Trigonometrisches Polynom

 

Leo20

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2010, 18:34     Titel: Trigonometrisches Polynom
  Antworten mit Zitat      
Guten Abend allerseits!

Sei gegeben, was im Anhang unter "Aufgabe" steht.
Auch das Datenfile (in txt-Format) ist dort zu finden.

Ist es möglich, für diese Aufgabe den folgenden Code zu benutzen?
Was ist wie abzuändern, damit er für die Aufgabe "brauchbar" wird?

Code:
%trigonometrische Interpolation
clear all;

disp(' ');
disp('Es wird trigonometrisch approximiert/interpoliert.');
func=input('Vergleichsfunktion in trigof anlegen? 0 -ja, 1 - nein: ');
disp(' ');
disp('Der Datensatz hat die Form');
disp(' Knoten: [x_0,...,x_n]');
disp(' f-Werte: [y_0,...,y_n]');
disp(' ');
%yi=input('f-Werte eingeben: ');
n=16;%length(yi);
nexp=log(n)/log(2);
x=linspace(0,2*pi);
disp('---------------------------------------------------');

%0. Einheitswurzeln erzeigen
for k=1:n
xi(1,k)=2*pi*(k-1)/n;
yi(1,k)=trigof(xi(1,k));
end
yi(1,1)=0.5*(2*pi)^0.5;



%1. Funktion f plotten
if func==0
%abschnittsweise Funktion f anlegen.
y=sqrt(x);

%Plot erstellen
subplot(4,1,1)
plot(xi,yi,'ro',x,y),
%plot(x,y,xi,yi,'ro'),
axis([0,2*pi,0,3]),
title('Funktion f'),
hold;

%2. Aproximation

disp(' ');
disp('1. Approximation. Koeffizienten a,b');
disp(' ');
%Integrale für die Koeffizienten werden mit summierter Trapezregel bestimmt (Genauigkeit eps)
%Berechnungen der Koeffizienten a und b
eps=0.01;
maxd=1;

N=ceil(sqrt(2*pi^3*(n-1)^2/(3*eps)));

%Knoten für summierte Trapezregel bestimmen
for m=1:N
xs(1,m)=2*pi/N*(m-1);
end

sum13=0;
for j=0:n
sum11=0;
sum12=0;

for k=1:N
sum11=sum11+trigof(xs(1,k)).*sin(j*xs(1,k));
sum12=sum12+trigof(xs(1,k)).*cos(j*xs(1,k));
end
a(j+1,1)=2/N*sum12;
b(j+1,1)=2/N*sum11;

if j>0
sum13=sum13+a(j+1,1).*cos(j*x)+b(j+1,1).*sin(j*x);
end
end
sum13=sum13+0.5*a(1,1);

TNA=sum13;
a
b

%Plot erstellen
subplot(4,1,2)
plot(x,TNA,xi,yi,'ro'),
axis([0,2*pi,0,3]),
title('Fourier-Polynom');
end



%3. Trigonomatrische Interpolation
disp(' ');
disp('2. Trigonometrische Interpolation. Koeffizienten d');
disp(' ')
%Integrale
%Berechnung der Einheitswurzeln
R=1; phi=(2*pi)/n;
w=R.*exp(i*phi);

%Berechnung der komplexen Koeffizienten d

if floor(nexp)==ceil(nexp)

%Mit FFT
yff=yi';
d=1/n.*fft(yff);
d=bitrevorder(d);

else

%Ohne FFT
for j=0:n-1
sum31=0;
for k=0:n-1
sum31=sum31+yi(1,k+1).*w^(-j*k);
end
d(j+1,1)=(1/n).*sum31;
end
d;
end
d

%Trigonometriches IP bestimmen und plotfähig machen
sum32=0;
for j=0:n-1
sum32=sum32 + d(j+1,1).*(cos(j*x)+i.*sin(j*x));
end
TN2=sum32;

%Realteil
TN2R=real(TN2);

%Imaginärteil
TN2C=imag(TN2);

%Plot erstellen
subplot(4,1,3)
plot(x,TN2R,x,TN2C,xi,yi,'ro'),
axis([0,2*pi,0,3]),
title('Trigonometrische Interpolation');
legend('Realteil','Imaginärteil'),
hold


%4. Diskrete Fourier-Analyse
disp(' ')
disp('3. Diskrete Fourier Analyse. Koeffizienten ai, bi');
disp(' ')
%Berechnung von m
if 0==mod(n,2)
m=n/2;
else
m=(n+1)/2;
end
m;

%Berechnungen der Koeffizienten a und b
if 0==mod(n,2)
for j=0:m
sum1=0;
for k=0:n-1
sum1=sum1+yi(1,k+1).*cos(k*xi(1,j+1));
end
ai(j+1,1)=2/n*sum1;
end
ai
else
for j=0:m-1
sum1=0;
for k=0:n-1
sum1=sum1+yi(1,k+1).*cos(k*xi(1,j+1));
end
ai(j+1,1)=2/n*sum1;
end
ai
end

for j=1:m-1
sum2=0;
for k=0:n-1
sum2=sum2+yi(1,k+1).*sin(k.*xi(1,j+1));
end
bi(j,1)=2/n*sum2;
end
bi

%DFA-Funktion bestimmen und plotfähig machen
sum3=0;
for j=1:m-1
sum3=sum3 + (ai(j+1,1).*cos(j*x)+bi(j,1).*sin(j*x));
end

if 0==mod(n,2)
TNDFA=ai(1,1)./2+sum3+ai(m+1,1)./2.*cos(m*x);
else
TNDFA=ai(1,1)./2+sum3;
end

%abschnittsweise Funktion f anlegen.
x1=0;
x2=linspace(0,pi);
x3=pi;
x4=linspace(pi,2*pi);

fx1=0;
for q=1:length(x2)
fx2(1,q)=-1;
end
fx3=0;
for j=1:length(x4)
fx4(1,q)=1;
end


%Plot erstellen
subplot(4,1,4)
plot(x,TNDFA,xi,yi,'ro'),
axis([0,2*pi,0,3]),
title('Diskrete Fourieranalyse');
hold

 


..auch die Feinheiten müssten dann natürlich noch eingestellt werden, was mich vermuten lässt, dass es eventuell nicht möglich ist, den Code so zu verändern, damit das Gewünschte resultiert..

Auf jeden Fall bin ich um jede Hilfe sehr dankbar!
Liebe Grüsse und einen schönen Abend,
Leo

hankel.txt
 Beschreibung:
Datenfile

Download
 Dateiname:  hankel.txt
 Dateigröße:  86.54 KB
 Heruntergeladen:  460 mal
Unbenannt.jpg
 Beschreibung:
Aufgabe

Download
 Dateiname:  Unbenannt.jpg
 Dateigröße:  237.85 KB
 Heruntergeladen:  667 mal


Pauline

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2010, 15:02     Titel:
  Antworten mit Zitat      
..das würde mich auch sehr interessieren..
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.