Auswahl Schwarzes Brett Aktion im Forum Suche Kontakt Für Mitglieder Mathematisch für Anfänger Wer ist Online | |
Autor |
Fehlen Gleichungen oder Anfangswerte? |
|
Caleb
Aktiv  Dabei seit: 08.04.2014 Mitteilungen: 318
 |
Nabend,
ich habe eine Matlab-Frage.
Ich habe folgendes System von Differentialgleichungen erster Ordnung:

für .
Anfangsbedingungen sind .
Dies modelliert also eine "nearest-neighbour" Interaktion.
Die Werte und sind konstante Wachstumsraten.
So weit so gut.
Nun kommen in den Gleichungen ja aber auch bzw. vor, für die ich keine Gleichungen habe.
Wie würde man das in Matlab umsetzen?
Bin gerade etwas ratlos.
Viele Grüße!
|
Profil
Quote
Link |
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 10599
Aus: Wien
 |     Beitrag No.1, eingetragen 2019-11-08
|
Hallo Caleb,
bei Deiner Frage geht es um das Differentialgleichungssystem, Matlab kommt erst später ins Spiel.
Ich nehme an, Du meinst
$$x_i' = e^{\lambda(x_{i+1}-x_i)}+e^{\mu(x_i-x_{i-1})}\quad i\in\{1,2,3\}$$
Woher kommt dieses System, sind dort $x_0$ und $x_4$ definiert? Wenn nicht, gibt es verschiedene Möglichkeiten: man könnte $x_0=x_3$ und $x_4=x_1$ festlegen, oder die äußeren Nachbarn $x_0$ und $x_4$ als Konstanten betrachten.
Servus,
Roland
|
Profil
Quote
Link |
Caleb
Aktiv  Dabei seit: 08.04.2014 Mitteilungen: 318
 |     Beitrag No.2, vom Themenstarter, eingetragen 2019-11-08
|
Hallo, rlk,
ja, genau das meine ich, es geht um das System

mit den Anfangsbedingungen mit .
Für die äußeren Nachbarn sind keine Gleichungen gegeben und auch sonst ist für sie nichts vorgeschrieben.
Mal angenommen, ich wähle sie konstant und .
Dieses Modell ist eine starke Vereinfachung für Fronten, die exponentiell langsam miteinander inteagieren.
----
Wie würde man das jetzt in Matlab umsetzen?
Meine Idee wäre, zunächst eine Datei nni.m zu schreiben, die die rechte Seite des System definiert:
Matlab function dXdt = nni(t,x,lambda,mu,y0,y4) % nearest neighbour interaction (nni)
% y0 = linker äußerer Nachbar, konstant
% y4 = rechter äußerer Nachbar, konstant
dXdt = [exp(lambda*(X(2)-X(1)))+exp(mu*(X(1)-y0));exp(lambda*(X(3)-X(2)))+exp(mu*(X(2)-X(1))); exp(lambda*(y4-X(3)))+exp(X(3)-X(2)))];
|
Ich denke, dann könnte man zum Beispiel den ODE-Löser ode45 verwenden und anschließend die Lösungen plotten:
Matlab % willkürliche Wahl: lambda=mu=1 und y0=0, y4=20 sowie y_1=5, y_2=10, y_3=15
% betrachte die ersten 100 Zeitschritte, d.h. <math>t\in [0,100]</math>
[t,X] = ode45(@(t,X) nni(t,X,1,1,0,20),[0 100], [5; 10; 15]);
% Plotte x_1=X(1), x(2)=X(2), x(3)=X(3) gegen t
plot(t,X(:,1),'-o',t,X(:,2),'-o',t,X(:,3),'-o')
xlabel('Time t');
ylabel('Solution x');
legend('x_1','x_2','x_3') |
Wäre das eine Möglichkeit?
Habe noch nie Matlab fürs Lösen von ODE benutzt und mir das mehr oder weniger aus Beispielen aus dem Internet zusammen gereimt.
Viele Grüße
|
Profil
Quote
Link |
Caleb
Aktiv  Dabei seit: 08.04.2014 Mitteilungen: 318
 |     Beitrag No.3, vom Themenstarter, eingetragen 2019-11-12
|
Hallo,
passiert hier noch etwas? 
|
Profil
Quote
Link |
rlk
Senior  Dabei seit: 16.03.2007 Mitteilungen: 10599
Aus: Wien
 |     Beitrag No.4, eingetragen 2019-11-13
|
Hallo Caleb,
in der Funktion nni rechnest Du mit dem Vektor X , das formale Argument hast aber x genannt. Für Matlab sind das zwei verschiede Größen, der Aufruf wird daher nicht funktionieren.
Die Verwendung von ode45 sieht plausibel aus, nur die Wahl des Zeitintervalls $0\leq t\leq 100$ erscheint mir gewagt, weil ich erwarte, dass die Lösung der Differentialgleichung nach endlicher Zeit explodiert.
Es wäre schön, wenn Du den Plot hier zeigst, nicht jeder der Leser hat Zugang zu Matlab oder einer der Alternativen.
Servus,
Roland
|
Profil
Quote
Link |
|