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

Integration nach Ployfit

 

Manou

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2013, 00:55     Titel: Integration nach Ployfit
  Antworten mit Zitat      
Hallo Zusammen,

ich habe viel gesucht aber für mein Anliegen fand ich kein Lösung...
ich wollte aus bestehenden Daten eine gefittete Funktion herausbekommen, das habe ich geschafft mit dem Befehl Polyfit, allerdings brauche ich die Funktion nachher für die weitere Berechnung durch Intergration...

Code:


data0=load('z.mat');
z=data0.z;

data0=load('x.mat');
x=data0.x;

p=polyfit(x,z,35);
f=polyval(p,x);

plot(x,z,'-b',x,f,':r');

 

für diesen hohen Grad weiß ich nicht wie man das Integral wie folgend beschrieben in Matlab berechnen kann !!
es sollte letztendlich so aussehen !!!

∫_t^2 (x-t).f(x) dx =

∫_t^2 (x-t).(a_35.x^35+a_34.x^34+a_33.x^33+..+a_01.x^01+a_00) dx

Code:

% t variert zwischen 0 und 2

t=1:0.1:2;

 

ich freue mich auf eure Hilfe, vielen Dank
Viel grüße

Datei.zip
 Beschreibung:

Download
 Dateiname:  Datei.zip
 Dateigröße:  3.7 KB
 Heruntergeladen:  219 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.11.2013, 10:28     Titel:
  Antworten mit Zitat      
Hallo,

warum fittest du ein Polynom vom Grad 35? Ich habe offen gesagt noch keinen Fall erlebt, in dem das sinnvoll gewesen wäre.

In der von dir beschriebenen Syntax ist mir folgendes nicht klar:
Soll der . für Multiplikation stehen? Falls ja, bitte wie sonst auch üblich * verwenden.
Soll t^2 die untere Integrationsgrenze sein? Falls ja, was ist die obere Integrationsgrenze?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Manou

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2013, 22:38     Titel:
  Antworten mit Zitat      
Hallo Harald,

mit diesem Polynomgrad ist die gefittete Kurve best angepasst zur originale Kurve, deshalb habe ich den Grad auf 35 genommen. Die Integralgrenzen sind t als untere Grenze und 2 als obere Grenze, und t variert zwischen 0 und 2..."ich kann die Symbole hier nicht :/ "...

viele Grüße,
Danke
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.11.2013, 13:55     Titel:
  Antworten mit Zitat      
Hallo,

ein Polynom vom Grad 35 mag zwar gut durch die Datenpunkte laufen, wird aber zwischen den Datenpunkten zu starken Oszillationen neigen. Das bewirkt dann u.a., dass das Integral des gefitteten Polynoms sich stark vom Integral der anzunähernden Funktion unterscheidet.
Sinnvoller wäre meines Erachtens, splines durch die Daten zu legen.

Beispiel:
Code:
x = linspace(0, pi, 10);
y = sin(x);
f = @(xi) interp1(x,y,xi,'spline');
integral(f, 0, pi)


Schau dir das erst mal für ein bestimmtes t an. Ich fürchte, du wirst nicht umhin kommen, das für verschiedene t getrennt in einer for-Schleife zu machen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Manou

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2013, 23:14     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke für deine Antwort, ich habe dadurch die Funktion-Handel kennengelernt Smile, mittlerweile habe ich eine Lösung um das Integral berechnen zu können. ich benutze die symbolische Integration mit Variation vom Parameter t in einer for Schleife.
dann konvertiere ich das Ergebnis in double wieder, Leider weis ich noch nicht wie ich die Berechnung durchführe wenn der Wert von x variable ist, da die Integration unabhängig von x abläuft..?
die Stammfunktion meiner Verteilung ist annähernd zu einer Gaussian Verteilung, damit brauche ich keine polynomiale Interpolation.
Code:

i=1;
syms x
for t=0:0.1:2

f1=int((x-t)*((1/sqrt(2*pi))*exp((-x^2)/2)),t,2);
F1(i,:)=double(f1);

end
 


es wäre sehr hilfreich wenn jemand mir eine Methode zeigt wie die Berechnung dieses Integrals für ein Vektor x durchzuführen!!!!

danke,
Manou
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.11.2013, 00:20     Titel:
  Antworten mit Zitat      
Hallo,

es wird nach x integriert. Das Ergebnis hängt also nicht von x ab. Was soll da nun variiert werden?

Man kann höchstens über t variieren. Das würde ich so machen:
Code:

syms x
t=0:0.1:2;
F1 = zeros(size(t));
for i = 1:numel(t)

f1=int((x-t(i))*((1/sqrt(2*pi))*exp((-x^2)/2)),t(i),2);
F1(i,:)=double(f1);

end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
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.