Farbe im Phasenraumplot < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 01:14 Do 09.04.2009 | Autor: | Wuffel |
Aufgabe | Hallo,
Wir sollen mit einem selbstgeschriebenem Programm Differentialgleichungen numerisch lösen und diese dann mit Mathematica graphisch darstellen.
Dazu werden die Werte in einer Textdatei gespeichert und mit ListLinePlot in Mathematica geplottet. |
Da wir auch Phasenraumbilder betrachten sollen (Auftragung von x' über x) würde es sich anbieten, wenn der Plot eine Farbe für den zeitlichen Verlauf erhält.
Im Moment habe ich nur die ColorFunction -> "Rainbow" Manipulation gefunden die jedoch den Plot nach den Funktionswerten einfärbt. Es ergeben sich jedoch meist Spiralen oder Kreise so dass dort eine Einfärbung nach Funktionswerten nicht sinnvoll ist.
Ich suche eine Möglichkeit, dass die "chronologische" Reihenfolge der Werte in der Datei eingefärbt wird. Also dass z.B. die ersten Werte lila werden und die letzten Werte rot. Kann mir jemand weiterhelfen wie man das realisieren kann?
Anbei ein Bild wie es bei meinem Versuch aussieht (oberes Bild):
http://www.myimg.de/?img=screen7ffcc.jpg
So wie ich es haben will, sollte in diesem Fall das innere einer Spirale eine andere Farbe haben und man sollte am Farbverlauf den ursprünglichen Verlauf der Funktionswerte erkennen.
Danke schon im Vorraus :)
|
|
|
|
Moin,
warum machst du deine ColorFunction nicht einfach von der Zeit abhaengig?
1: | ParametricPlot[{t Cos[t], t Sin[t]}, {t, 0, 4 Pi},
| 2: | ColorFunction -> Function[{x, y, t}, ColorData["TemperatureMap"][t]],
| 3: | PlotStyle -> Thick
| 4: | ]
|
Cheers
Patrick
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 16:29 Do 09.04.2009 | Autor: | Wuffel |
Gibt es eine Möglichkeit statt Funktionen die von Mathematika kommen auch Arrays in diese Funktion einzugeben?
Meine Daten liegen ja dank Import als Liste von 2 Tupeln / 3 Tupeln vor mit (x,y,t) oder halt nur (x,y).
Wie kriege ich nun diese Werte in die Parametric Plot Funktion bzw gibt es sowas wie Parametric Plot auch für das ListLinePlot?
|
|
|
|
|
Ich würde vorschlagen, für beide Koordinaten $x$ und $y$ bzw. $x$ und $x'$ eine Funktion zu interpolieren, die du dann so darstellst, wie halirutan das vorgeschlagen hat.
Also z.B. (das Array hat die Form [mm] $\{\{x1,y1\},\{x2,y2\},...\}$)
[/mm]
1: | data = ~dein Array~
| 2: | X = Interpolation[data[[All, 1]], InterpolationOrder -> 1]
| 3: | Y = Interpolation[data[[All, 2]], InterpolationOrder -> 1]
| 4: |
| 5: | ParametricPlot[{X[t], Y[t]}, {t, 1, Length[data]},
| 6: | ColorFunction -> Function[{x, y, t}, ColorData["TemperatureMap"][t]],
| 7: | PlotStyle -> Thick]
|
Mit InterpolationOrder kannst du dann noch bestimmen, wie rund die Kurven werden sollen. Beim Wert 1 hast du gerade Verbindungen zwischen allen Punkten.
MfG Sunny
|
|
|
|