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

Lösen einer Dgl mit Veränderlichen

 

mariesopherl88
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 04.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.12.2011, 11:51     Titel: Lösen einer Dgl mit Veränderlichen
  Antworten mit Zitat      
Hallo,

ich bin Anfänger in Matlab und habe folgendes Problem:
ich möchte eine Dgl lösen, die folgendesmaßen aussieht:

dvel=gacceleration-(0.5*roh/m*CdSo)*(vel^2)*((ts/tf)^beta)

in der Hauptfunktion rufe ich sie so auf:

timerange=[0 30];
vel0=vel
[t,y]=ode45(@velocityversustime,timerange,vel0)
plot(t,y)
ylabel('velocity(m/s)')
xlabel('time(s)')

soweit funktioniert das auch...Allerdings habe ich in meiner Nebenfunktion alle Variablen mit einem festen Wert definiert.Jetzt würde ich gerne meiner Dgl Parameter aus meiner Hauptfunktion übergeben, sie dann erst aufstellen und dann lösen.
Wie das bei einer "normalen" Nebenfunktion geht weiß ich, man schreibt die zu übergebenden Parametern in Klammern.Aber das funktioniert hier nicht.

Habt ihr eine Idee wie das hier geht?

Danke schonmal,
lieben Gruß,
Marie
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.12.2011, 11:58     Titel:
  Antworten mit Zitat      
Hallo,

der Übersichtlichkeit halber würde ich eine Parameter-Struktur anlegen. Die DGL-Funktion würde dann so aussehen
Code:
function dvel = f(t, vel, param)


Der Aufruf würde so aussehen:
Code:
param = ... % Erstellen der Parameter-Struktur
[t,y]=ode45(@(t, vel) velocityversustime(t,vel, param),timerange,vel0)


Grüße,
Harald

P.S.: Bitte bei deinen Beiträgen auch die Code-Umgebung verwenden
Private Nachricht senden Benutzer-Profile anzeigen
 
mariesopherl88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 04.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.12.2011, 12:23     Titel:
  Antworten mit Zitat      
Vielen Dank, jetzt gehts!!
Gruß,
Marie
Private Nachricht senden Benutzer-Profile anzeigen
 
mariesopherl88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 04.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.12.2011, 13:18     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielleicht könntest du mir damit auch noch helfen: ich habe die Dgl jetzt plotten können. Jetzt würde ich gerne wissen, bei welcher Zeit sich eine bestimmte Geschwindigkeit einstellt. Ich kenne den Matlab Befehl dafür nicht...
Kannst du mir da weiterhelfen?
Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.12.2011, 19:36     Titel:
  Antworten mit Zitat      
Hallo,

da du die Lösung ja an diskreten Punkten bekommst, ist das nicht so einfach, wie es sich auf den ersten Blick anhören mag.

Einfache, ungenaue Lösung: du kannst den ersten Datenpunkt finden, zu dem die Geschwindigkeit überschritten wurde.
Code:
index = find(y > v0, 1, 'first');
t0 = t(index)


Wenn die interessante Geschwindigkeit (bzw. mehrere) vorab bekannt ist, kannst du auch ode45 über Events zwingen, den Zeitpunkt der Überschreitung genauer aufzulösen, siehe Dokumentation von ode45.

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.