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

Numerische Integration

 

crepes
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 25.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2009, 14:58     Titel: Numerische Integration
  Antworten mit Zitat      
Vielleicht kann mir jemand weiterhelfen!!
Ich habe ein 3 dim-nichlineares-differentailgleichungsystem (y1,y2,y3), dass ich mittels ode45 gelöst habe.
Nun möchte ich über die Trajectorie von y2(t) das Integral berechnen im Zeitintervall 0 1].
Nun weiß ich aber nicht weiter da Matlab mir die Lösungskurve nur zu bestimmten Zeitpunkten ausgibt und ich über diesen Vector nicht integrieren kann mit dem befehl quad!
Kann ich irgendwie durch den Plot der Trajectorie eine Funktion in Matlab definieren?

Lg crepes
Private Nachricht senden Benutzer-Profile anzeigen


josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 25.03.2009, 15:50     Titel:
  Antworten mit Zitat      
Sie können verschiedene Integrationsverfahren (Mittelpunkt-,Trapez-, Simpsonsche Regel, Gauss) selber programmieren. Erstens müssen Sie mehrere Puunkte schaffen (Diskritisieren).

bzgl. quad-Funktion schauen Sie bitte die Seite:
http://www.gomatlab.de/funktion-qua.....umerisch+integrieren.html
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 25.03.2009, 16:01     Titel:
  Antworten mit Zitat      
Code:
clear all
format long ;

F = inline('sin(x)');    % Integrand

a  = 0   ;
b  = pi/2 ;               % Integrationsgrenzen

n  = 100 ;              % Anzahl der Abschnitte
h  = (b-a) / n ;         % Breite eines Abschnitts
nS = n + 1 ;             % Anzahl der Stützstellen
xS = a : h : b ;         % Koordinaten der Stuetzpunkte
yS = F(xS) ;             % Funktionswerte an den Stuetzstellen

% Trapezregel:
Trapez = ((yS(1)+yS(nS))/2 + sum (yS(2:n)))*h

% Simpsonsche Regel:
I = (yS(1)+yS(nS)) ;     % Erster und letzer Wert der Formel
faktor = 4 ;
for i = 2:n
   I = I + yS(i)*faktor ;        
   if  (faktor == 4) faktor = 2 ;
   else              faktor = 4 ;
   end ;
end
Simpson = I*h/3

% Einfachste Gaußformel:
xS = a+h/2 : h : b-h/2 ; % Koordinaten der Stuetzpunkte
yS = F(xS) ;             % Funktionswerte an den Stuetzstellen
Gauss = sum (yS(1:n))*h

% Die MATLAB-quad-Funktion approximiert das Integral mit
% rekursiver Anwendung der Simpsonschen Regel bis zum Erreichen
% einer vorgegebenen Genauigkeit (Voreinstellung: 1.e-6):
MatLabquad       = quad (F , a , b)
MatLabquadGenauer = quad (F , a , b , 1.e-10)
 

_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2011, 00:01     Titel:
  Antworten mit Zitat      
Hallo Leute,

ich muss für die Uni eine Matlab Präsentation machen mit genau dme Vergleich der Simpson und der Trapezregel.
deshalb würde ich gerne die hier geposteten befehle nutzen und meine Funktion dafür einsetzen.

meine lautet wie folgt:
Code:
f=inline(1/x);% f - zu integrierende Funktion
a=1;% - Intervallbeginn
b=5; %b - Intervallende
N=8;% N - Anzahl der Intervalle


könnte mir jemand sagen wo ich ich diese funktion einsetzen muss damit das programm auch durchläuft?
hab es nicht hinbekommen Sad

MfG
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 31.01.2011, 03:05     Titel:
  Antworten mit Zitat      
Hallo Anonymous,

Schaue Dir bitte den geposteten Code noch mal genau an. Es werden sogar die gleichen Buchstaben für die Variablen verwendet, nur halt in anderer Groß/Kleinschreibung.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2011, 00:02     Titel:
  Antworten mit Zitat      
also hab jetzt meine Daten eingegeben doch es kommen nur noch lauter Fehlmeldungen??

hier:
Code:
clear all
format long ;

F = inline('1/x');    % Integrand

a  = 1   ;
b  = 5 ;               % Integrationsgrenzen

n  = 8 ;              % Anzahl der Abschnitte
h  = (b-a) / n ;         % Breite eines Abschnitts
nS = n + 1 ;             % Anzahl der Stützstellen
xS = a : h : b ;         % Koordinaten der Stuetzpunkte
yS = F(xS) ;             % Funktionswerte an den Stuetzstellen

% Trapezregel:
Trapez = ((yS(1)+yS(nS))/2 + sum (yS(2:n)))*h

% Simpsonsche Regel:
I = (yS(1)+yS(nS)) ;     % Erster und letzer Wert der Formel
faktor = 4 ;
for i = 2:n
   I = I + yS(i)*faktor ;        
   if  (faktor == 4) faktor = 2 ;
   else              faktor = 4 ;
   end ;
end
Simpson = I*h/3

% Einfachste Gaußformel:
xS = a+h/2 : h : b-h/2 ; % Koordinaten der Stuetzpunkte
yS = F(xS) ;             % Funktionswerte an den Stuetzstellen
Gauss = sum (yS(1:n))*h

% Die MATLAB-quad-Funktion approximiert das Integral mit
% rekursiver Anwendung der Simpsonschen Regel bis zum Erreichen
% einer vorgegebenen Genauigkeit (Voreinstellung: 1.e-6):
MatLabquad       = quad (F , a , b)
MatLabquadGenauer = quad (F , a , b , 1.e-10)
 



und die Fehlmeldungen:
??? Error using ==> inlineeval at 15
Error in inline expression ==> 1/x
Matrix dimensions must agree.

Error in ==> inline.subsref at 27
INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);

Error in ==> mathevortrag at 13
yS = F(xS) ; % Funktionswerte an den Stuetzstellen



weiss echt nicht wo das Problem sein könnte??
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.02.2011, 00:19     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
??? Error using ==> inlineeval at 15
Error in inline expression ==> 1/x
Matrix dimensions must agree.

Das sieht danach aus, als wäre x ein Array. Dann sollte es "1 ./ x" heißen, also mit Punkt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.02.2011, 01:06     Titel:
  Antworten mit Zitat      
also hab das jetzt irgendwie doch noch hingekriegt doch verstehe nur nicht was in der schleife steht?

Code:
% Simpsonsche Regel:
I = (yS(1)+yS(nS)) ;     % Erster und letzer Wert der Formel
faktor = 4 ;
for i = 2:n
   I = I + yS(i)*faktor ;        
   if  (faktor == 4) faktor = 2 ;
   else              faktor = 4 ;
   end ;
end
Simpson = I*h/3


was meint er mit faktor = 4
und for i = 2:n?
 
Klenke

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2012, 22:12     Titel: Kleine Anmerkung
  Antworten mit Zitat      
Ich glaube da ist noch ein kleiner Fehler in der Simpson-Regel...hier mal die veränderte Version von mir:

Code:

% Simpsonsche Regel:
xS = a : h/2 : b ;
yS = F(xS);
nS = 2*n + 1;
I = (yS(1)+yS(nS)) ;     % Erster und letzer Wert der Formel
faktor = 4 ;
for i = 2 : nS-1
   I = I + yS(i)*faktor ;      
   if  (faktor == 4) faktor = 2 ;
   else              faktor = 4 ;
   end
end
Simpson = I*h/6.
 


...habe das mal mit mehreren Beispielen probiert und es sah korrekt aus.

Gruß Klenke
 
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 - 2024 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.