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

System gekoppelter ODE lösen

 

Seyphedias
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 28.11.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2017, 12:36     Titel: System gekoppelter ODE lösen
  Antworten mit Zitat      
Hallo, ich habe ein System von 2 ODE die gegenseitig gekoppelt sind und möchte diese mit dem ode45 solver lösen es sieht folgendermaßen aus: ich suche eine Geodätische c(t) = (c1(t),c2(t)).
das DGL system sieht wie folgt aus
c1''(t) = c2'(t)^2
c2''(t) = -2 * c1'(t) * c2'(t)
mit den Anfangbedinungen c(0) = (1,0), c'(0) = (0,1)
Ich habe bisher folgendes gemacht:

Code:

syms c(t)
syms c1(t) c2(t)
%das ode system
ode1 = diff(c1,t,2) == (diff(c2,t,1))^2
ode2 = diff(c2,t,2) == -2*diff(c1,t)*diff(c2,t)
odes = [ode1 ode2]
 %anfangswert c(0)
initCond1 = c1(0)==1
initCond2 = c2(0) == 0
initCond = [initCond1 initCond2]
%anfangsableitung c'(0)
derivativeCond1 = diff(c1) == 0
derivativeCond2 = diff(c2) == 1
derivativeCond = [derivativeCond1 derivativeCond2]
%integrationsintervall
tspan = [0 1];
%in ein system 1.ordnung konvertieren
[V] = odeToVectorField(odes)

%matlabfunction erstellen
odefunction = matlabFunction(V,'vars', {'t','Y'})

%lösen mit ode45
sol = ode45(odefunction,tspan, [initCond derivativeCond])
 


Leider bekomme ich dann einen Fehler und weiß nicht mehr weiter. hat einer eine Idee?

Vielen Dank
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: 28.11.2017, 14:03     Titel:
  Antworten mit Zitat      
Hallo,

du kannst nicht symbolische Bedingungen in einen numerischen Solver stecken.

Du hast keine Anfangswerte, sondern Randwerte. Versuchs also mal mit bvp4c oder bvp5c .

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 28.11.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2017, 15:40     Titel:
  Antworten mit Zitat      
Doch der hats mitlerweile hinbekommen. Anstatt

sol = ode45(odefunction,tspan, [initCond derivativeCond])

einfach

[T,sol] = ode45(odefunction,tspan, [initCond derivativeCond]). dann sieht die geodätische aus, wie sie aussehen soll. (Kreissegment)

Ich steht aber gerade vor einem anderen Problem: Die differentialgleichungen ändern sich je nach mannigfaltigkeit, bzw dimension der mnf. Ich möchte gerne eine dynamische Anzahl von c1(t)..cn(t) erstellen. Hast du da eine Idee, wie ich das machen könnte?
Wichtig ist ja, dass das Funktionen von t sind, damit ich die ode aufstellen kann. Alle meine versuche mit sym und syms sind bisher gescheitert. Ich kann mit c(t) = syms('c',[3 1]) zwar eine symbolische (vektorwertige) funktion erstellen, aber diff(c) ist immer der Nullvektor, weil er die erstellten c1,c2,c3 alle als konstant ansieht und nicht c1(t),c2(t),c3(t)
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: 28.11.2017, 15:53     Titel:
  Antworten mit Zitat      
Hallo,

stimmt, sorry. Da hatte ich nicht genau genug hingeschaut.

D.h. du möchtest das z.B. in einer for-Schleife definieren?
Code:
for k = 1:5
    syms(['c' num2str(k) '(t)'])
end


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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 28.11.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2017, 16:00     Titel:
  Antworten mit Zitat      
Genau so. Danke!! Ich probiere schon den ganzen Vormittag rum Very Happy dann können die geodätischen mich nun fürchten Very Happy
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.