Matroids Matheplanet Forum Index
Moderiert von Spock mire2
Mathematische Software & Apps » Mathematica » Legende für Differentialgleichungs-Plot wird falsch angezeigt
Autor
Universität/Hochschule J Legende für Differentialgleichungs-Plot wird falsch angezeigt
Phoensie
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 11.04.2020
Mitteilungen: 442
Wohnort: Muri AG, Schweiz
  Themenstart: 2021-01-28

\(\begingroup\)\(\newcommand{\N}{\mathbb{N}}             % Natürliche Zahlen \newcommand{\Z}{\mathbb{Z}}             % Ganze Zahlen \newcommand{\Q}{\mathbb{Q}}             % Rationale Zahlen \newcommand{\R}{\mathbb{R}}             % Reelle Zahlen \newcommand{\C}{\mathbb{C}}             % Komplexe Zahlen \newcommand{\ord}{\mathrm{ord}}         % Gruppenordnung \newcommand{\indep}{\perp \!\!\! \perp} % Stochastische Unabhängigkeit (Symbol) \renewcommand{\Re}{\operatorname{Re}}   % Realteil \renewcommand{\Im}{\operatorname{Im}}   % Imaginärteil \renewcommand{\d}{\operatorname{d}}     % Differential-d \) Hallo zusammen Ich möchte ein System von drei Differentialgleichungen numerisch lösen und darstellen können. Hierbei geht es um die Modellierung einer Zombie-Apokalypse mit S (gesund), Z (Zombie) und R (tot) als zeitabhängigen Funktionen. Hier der Code: \sourceon mathematica (* Definition der Parameter *) (* Gesamtbevölkerung *) Bevölkerung = 260; (* Geburtenrate *) b = 0; (* Sterberate *) d = 0.02; (* WSK, dass Menschen einen Kampf gewinnen *) \[Alpha] = 0.3; (* WSK, dass Zombies einen Kampf gewinnen *) \[Beta] = 0.6; (* WSK, dass Tote auferstehen *) c = 0.15; eqns := { (* Differentialgleichungen *) { S'[t] == (b - d)*S[t] - \[Beta]*S[t]*Z[t], Z'[t] == (\[Beta] - \[Alpha])*S[t]*Z[t] + c*R[t], R'[t] == d*S[t] + \[Alpha]*S[t]*Z[t] - c*R[t] } , (* Anfangswerte *) { S[0] == Bevölkerung, Z[0] == 0, R[0] == 0 } } (* Löse die DGL *) (* NDSolve[{Differentialgleichungen, Anfangswerte}, abhängige \ Variablen, {unabhängige Variablen, untere Grenze, obere Grenze}] *) \ sol = NDSolve[eqns, {S, Z, R}, {t, 0, 100}] (* Zeichne die DGL-Lösungen *) (* Plot[{Funktionen}/.Speicherort, {unabhängige Variable, untere \ Grenze, obere Grenze}, PlotLegends\[Rule]{Legenden-Einträge}] *) Plot[{S[t], Z[t], R[t]} /. sol, {t, 0, 100}, PlotLegends -> {Lebende (S), Zombies (Z), Tote (R)}] \sourceoff Das so generierte Bild: https://www.matheplanet.com/matheplanet/nuke/html/uploads/b/52918_zombiematica_1.PNG Meine Frage. Jedoch werden bei meinen Grafiken in der Legende nur die Lebenden angeschrieben (es sind aber drei Kurven...), und ich weiss nicht, wie ich die Kurven unterschiedlich einfärben kann... wisst ihr da weiter? LG Phoensie🤔😄 \(\endgroup\)


   Profil
hyperG
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.02.2017
Mitteilungen: 2106
  Beitrag No.1, eingetragen 2021-01-28

Hallo Phoensie, 2 Dinge: 1. muss man aufpassen, mit wievielen geschweiften Klammern eine Funktion antwortet. Hier antwortet sol mit 2 Klammern! Also sol[[1]] um eine Klammer weg zu bekommen. 2. wird in Plot nur pro Array-Glied die Farbe gewechselt. Also habe ich mal Deine /. Konstruktion für "Element von..." herausgezogen in ein Array aus 3 Funktionen: https://matheplanet.com/matheplanet/nuke/html/uploads/b/47407_DGL_Array_plot.png Kürzer natürlich so, weil f ja schon ein Array ist: \sourceon mathematica Plot[f , {t, 0, 100}, PlotLegends -> {Lebende (S), Zombies (Z), Tote (R)}] \sourceoff Natürlich könnte man auch das "Herausziehen" pro Arrayglied machen, ohne eine extra Zeile zuvor, aber dann wäre alles noch länger: \sourceon mathematica Plot[{S[t]/.sol[[1]][[1]],Z[t]/.sol[[1]][[2]],R[t]/.sol[[1]][[3]]}, {t, 0, 100}, PlotLegends -> {Lebende (S), Zombies (Z), Tote (R)}] \sourceoff Ein Plot[{S[t], Z[t], R[t]} /. sol[[1]], {t, 0, 100}... funktioniert nicht! Grüße Gerd


   Profil
hyperG
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.02.2017
Mitteilungen: 2106
  Beitrag No.2, eingetragen 2021-01-28

Aber an der DGL scheint was nicht zu stimmen, wenn schlagartig beim Start die Bevölkerung von 260 auf 0 springt und zeitgleich Zombies & Tote auf etwa 130 ... Danach scheint es sich ja richtig einzuschwingen.


   Profil
ThomasRichard
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 08.04.2010
Mitteilungen: 472
Wohnort: Aachen
  Beitrag No.3, eingetragen 2021-01-28

Hallo, wenn man den Plot-Bereich auf wesentlich kleinere t-Werte beschränkt, sieht man die dritte Kurve durchaus. Zumindest in Maple, aber das Problem ist unabhängig von der Software - es liegt am Modell selbst: https://matheplanet.com/matheplanet/nuke/html/uploads/b/28375_Zombie-model-nonlinear-ODEs.PNG [Die Antwort wurde nach Beitrag No.1 begonnen.]


   Profil
hyperG
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.02.2017
Mitteilungen: 2106
  Beitrag No.4, eingetragen 2021-01-28

Ja, ich meinte auch das Model. Selbst wenn die WSK für Menschen & Geburtenrate heraufgesetzt wird, ergibt sich ein komisches Bild: https://matheplanet.com/matheplanet/nuke/html/uploads/b/47407_Zombies.PNG Dass die Toten als Aufintegration der Lebenden über die Zeit zu verstehen sein soll, da könnte ich ja noch mitgehen, aber dass Zombies erst aus den Toten entstehen, wenn alle Menschen Tod sind? So treffen Menschen ja nie auf Zombies -> gegen wen kämpfen sie dann? Aber dazu bräuchte man die Quelle der Logik dahinter... Übrigens fehlt in der Legende eine Wandlung in String wie z.B.: "Lebende (S)","Zombies (z)",...


   Profil
Phoensie
Wenig Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 11.04.2020
Mitteilungen: 442
Wohnort: Muri AG, Schweiz
  Beitrag No.5, vom Themenstarter, eingetragen 2021-02-01

Danke vielmals für eure Anregungen! Dann passe ich mal meinen Code an... Hier findet ihr bei Interesse das Paper, das dieser Frage zugrunde liegt (mein Professor hat sich davon inspirieren lassen, um uns Fallstudien zu unterziehen). Ich melde mich in den nächsten Tagen, wenn ich weiter komme.😄


   Profil
Phoensie hat die Antworten auf ihre/seine Frage gesehen.
Phoensie hat selbst das Ok-Häkchen gesetzt.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]