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

Differentialgleichung

 

Soeckle
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 04.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2009, 19:22     Titel: Differentialgleichung
  Antworten mit Zitat      
Hallo zusammen,

ich bin neu hier und noch ziemlicher Matlab-Anfänger.
Ich habe diese Frage in keinem anderen Forum gestellt.

Ich versuche folgende Differentialgleichung zu lösen:

y''*y+y'*y'+y'*y*C+y*B-A=0

A,B und C sind mir bekannt und konstant.

Ich habe die Gleichung auf ein System Differentialgleichungen 1.Ordnung heruntergebrochen. Der Vektor dydt hat dann die folgende Form:
Code:

dydt=[y(2); A-y(1)*B-y(2)*y(1)*C-y(2)*y(2)/y(1)]
 


Das Beispiel der Hilfe sagt mir nun die Befehle in folgender Reihenfolge:

Code:

function dydt=meinefunktion(t,y)
dydt=[y(2); A-y(1)*B-y(2)*y(1)*C-y(2)*y(2)/y(1)]
[t,y]=ode45(@meinefunktion,[0 5], [0;0]
 


Leider bekomme ich als Anfänger die Uebersicht nicht. Die Fehlermeldung sagt, dass function... dort überhaupt nicht stehen darf. Nach meinem Verständnis müsste ich die Funktion über ein anderes File aufrufen. Aber irgendwie schaffe ich dass nicht.
Was muss denn nun in welche Datei, damit das Skript läuft???

Vielen Dank im Voraus,
Soeckle
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

Die Funktion
Code:

function dydt=meinefunktion(t,y)
dydt=[y(2); A-y(1)*B-y(2)*y(1)*C-y(2)*y(2)/y(1)];


sollte in einer M-Datei meinefunktion.m stehen (und nichts weiter, insbesondere nichts vor dem FUNCTION).
Aus dem Command Window (oder aus einer anderen M-Datei) erfolgt dann der Aufruf:
Code:

[t,y]=ode45(@meinefunktion,[0 5], [0;0])
 


Hoffe das hilft.

Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Soeckle
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 04.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2009, 10:46     Titel:
  Antworten mit Zitat      
super, vielen Dank. Das ist ja eigentlich ganz simple.

Leider stehe ich jetzt vor dem nächsten Problem. Ich bekomme entweder NaN als Lösung (also keine Lösung) oder Werte, die nicht den Erwartungen oder Berechnungen anderer entsprechen.
Vielleicht kann da nochmal einer drüber schauen. Die Aufgabe ist die Ermittlung der Steighöhe von Wasser in einer Glassäule in Abhängigkeit der Zeit. Allgmein ist es so, dass das Wasser in relativ kurzer Zeit bis zu einer bestimmten Höhe ye steigt und sich das Gleichgewicht einstellt. Die folgende Formel die ich habe (Lucas -Wasburn-Gleichung) sollte mit numerischer Lösung für den ersten kurzen Zeitabschnitt (<1.5sekunden) ein Einschwingen zeigen. Einzige Randbedingung ist eigentlich, dass der Radius der Kapillare nicht zu klein ist (habe ich beachtet). Die Werte für Oberflächenspannung usw. habe ich mehrmals überprüft - alles i.O.. Die Anfangsbedingung habe ich nicht mehr bei [0;0] sondern [0.00001; 0.00001], weil sonst keine Lösung sondern NaN angezeigt wird.

Die Gleichung:
(y*y')'=g*ye-g*y-1/tau*y*y'
als Zwischenschritt habe ich nur die Produktregel anwenden müssen.

Code:

sigma=72.75*10^(-3);
theta=0;
rho=1000;
g=9.81;
eta=1;
r=0.7*10^(-3);
tau=rho*r^2/(8*eta);
ye=2*sigma*cos(theta)/(r*rho*g);
[t,y] = ode45(@meniscus_02,[0 3],[0.00001; 0.00001]);
 


Code:

function dydt = meniscus_02(t,y)
dydt = [y(2); ((g*ye-y(1)*g-y(2)*y(1)*1/tau-y(2)*y(2))/y(1))];
 


Wie gesagt, ich müsste im Plot
Code:
plot(t,y(:,1))
 

eigentlich einen Einschwingvorgang sehen.
Hat jemand eine Idee, was hier falsch sein könnte?
y(:,1) ist doch die Höhe? Ich dachte kurzzeitig, es wäre die Geschwindigkeit, weil ich ja nirgends eine Rücksubstitution gemacht habe. Allerdings wäre dieses Ergebnis auch nicht plausibel.

Vielen vielen Dank im Voraus für alle Ueberlegungen.
Gruesse,
Soeckle
Private Nachricht senden Benutzer-Profile anzeigen
 
Soeckle
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 04.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2009, 11:18     Titel:
  Antworten mit Zitat      
Vielen Dank für alle Mühen.

Die zehnte verzweifelte Kontrolle hat nun ergeben, dass ich in den Einheiten ein "milli" übersehen habe. Eine Flüssigkeit mit so hoher Viskosität (wie ich sie hier generiert habe) kann natürlich nicht schwingen.

Sorry!

Damit hat sich meine Frage erledigt. (Die nächste kommt bestimmt)

Also nochmals, vielen Dank!

Gruss,
Soeckle
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 - 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.