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

Wertetabelle integrieren und zu gegebenen Zeiten auswerten

 

Vivi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2009, 18:23     Titel: Wertetabelle integrieren und zu gegebenen Zeiten auswerten
  Antworten mit Zitat      
Hallo!

Ich versuche gerade folgendes Problem zu lösen:

gegeben: Wertetabelle mit Beschleunigung pro Zeit

Um ein gegebenes Differentialgleichungssystem zu lösen (mit ode45) brauche ich die zur Wertetabelle zugehörige Geschwindigkeit und den Weg, d.h. ich muss die Wertetabelle zweimal integrieren. Das habe ich sowohl mit interp1 und dann ode45, als auch mit cumtrapz erfolgreich gemacht. Allerdings bekomme ich 'nur' eine Wertetabelle für die Geschwindigkeit und den Weg zu bestimmten Zeitpunkten raus.

Um das ursprüngliche DGLsystem mit ode45 lösen zu können, brauche ich aber die Funktionsauswertungen von Geschwindigkeit und Weg zu bestimmten Zeiten (nämlichen genau denen, die durch die Schrittweitensteuerung von ode45 vorgegeben sind).

Das habe ich bisher auf zwei nicht zufriedenstellenden Wegen gelöst:

*) Interpolation der mittels cumtrapz (zweimal angewendet) erhaltenen Werte mit interp1 von einem kleinen Intervall, in dem der aktuell gewünschte Zeitpunkt enthalten ist, und Auswertung zu diesem Zeitpunkt
-> geht schnell, liefert aber ein fällig falsches Endergebnis (Wo könnten da mögliche Fehlerquellen liegen?)

*) Funktion geschrieben, die meine Beschleunigungswerte mit interp1 interpoliert und mit ode45 zweimal integriert. Im tatsächlich zu lösendem DGLsystem dann an den entsprechenden Stellen diese Funktion mit einem kleinstmöglichen Integrationsintervall aufgerufen und Auswertung zum gewünschten Zeitpunkt t (in ode45: tspan = [tstart,t,tend])
-> Ergebnis schein korrekt zu sein, allerdings dauert das Programm sehr sehr lange (2 Stunden für 5 Sekunden Integrationszeit). Liegt das daran, dass man eine Integration in der Integration lösen muss? Das Integrationsintervall der eingebetteten Integration habe ich schon kleinstmöglich gewählt.

Frage: Gibt es einen Befehl, der mir zu einem beliebigen Zeitpunkt einen Funktionswert übergibt, wenn ich die Funktion nur durch eine Wertetabelle gegeben habe?
Interpolation mit interp1 scheint ja nicht zu funktionieren:(
Und immer 'aktuell' integrieren ist zu teuer:((

Ich hoffe, jemand kann mir weiterhelfen.

Grüße,

Vivi


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2009, 18:45     Titel:
  Antworten mit Zitat      
Ich würde den ersten Weg versuchen.
Möglicherweise muss eine Integrationskonstante bei der zweifachen Integration berücksichtigt werden. Bsp:
http://www.gomatlab.de/werte-aus-ta.....egrieren-t4255.html#15370 Nimm mal die +1 Weg, wo Anfangsbedingung steht.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2009, 18:55     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnelle Antwort:)

Ich habe meine Wertetabelle schon zweimal mit cumtrapz integriert, sodass ich jetzt eine Wertetabelle für den Weg und die Geschwindigkeit pro Zeit habe.

Mein Problem: Wie kann ich möglichst 'billig' Funktionswerte zu vorgegebenen Zeitpunkten, die nicht unbedingt in der Wertetabelle erfasst sein müssen, für meine Weg- bzw. Geschwindigkeitsfuntkion bekommen?
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2009, 18:57     Titel:
  Antworten mit Zitat      
Mein Gedanke war, das schon bei der Integration mit cumtrapz was schief läuft.
Guck dir doch den Effekt der Anfangsbedingung im Beispiel oben mal an. Vielleicht ist es bei dir ähnlich.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2009, 19:37     Titel:
  Antworten mit Zitat      
Die Anfangsbedingungen sind alle 0.
Die Integration mit cumtrapz stimmt auch (habe ich mit Simpack überprüft).

Auch wenn ich anstelle die gesuchten Funktionswerte über Interpolation der mit cumtrapz erstellten Wertetabelle bestimme, die Funktionswerte direkt mit trapz auslesen lasse, kommt dasselbe falsche Ergebnis raus.

Gibt es vielleicht eine Möglichkeit, Funktionswerte zu vorgegebenen Zeitpunkten, die nicht unbedingt in meiner Wertetabelle erfasst sein müssen, für meine Weg- bzw. Geschwindigkeitsfunktion zu bekommen?
 
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.