Frage

Ich arbeite mit einem Temperaturgradienten in zwei Dimensionen auf der Abbildung und eine Menge Ärger hat. Mein aktueller Ansatz ist es, eine Interpolationsfunktion zu definieren und dann versuchen, es eine Menge Zeit graphisch darzustellen, animiert dann die Tabelle von Graphen. Hier ist, was ich bisher:

RT = 388.726919
R = 1
FUNC == NDSolve[{D[T[x, y, t], t] == 
RT*(D[T[x, y, t], x, x] + D[T[x, y, t], y, y]),

   T[x, y, 0] == 0,
   T[0, y, t] == R*t,
   T[9, y, t] == R*t,
   T[x, 0, t] == R*t,
   T[x, 9, t] == R*t},

  T, {x, 0, 9}, {y, 0, 9}, {t, 0, 6}]

So die ersten beiden Variablen steuern nur die Änderungsrate. Die Gleichung ich lösen, ist die grundlegende 2D Wärmeleitungsgleichung, wobei dT / dt = a (d ^ 2T / dx ^ 2 + d ^ 2T / dy ^ 2). Die Anfangsbedingungen gesetzt alles auf 0, dann definieren die Ränder als die Quelle der Wärmeänderung. Gerade jetzt fegt sie über einen 9x9-Block von t = 0 bis t = 6.

Der zweite Teil der Versuche, die Funktion Arbeits animieren.

ListAnimate[
Table[
   DensityPlot[T[x, y, t] /. FUNC, {x, 0, 9}, {y, 0, 9}, Mesh -> 9]
, {t, 0, 6}]
]

Leider funktioniert das nicht, und ich werde verrückt versuchen, herauszufinden, warum. Ich dachte zuerst hatte es etwas mit der Interpolationsfunktion zu tun, aber jetzt bin ich nicht so zuversichtlich, dass die belebende Code funktioniert auch nicht. Wer irgendwelche Ideen?

War es hilfreich?

Lösung

Nur eine schnelle Überprüfung:

RT = 1
R = 1
FUNC = NDSolve[{D[T[x, y, t], t] == 
     RT*(D[T[x, y, t], x, x] + D[T[x, y, t], y, y]), T[x, y, 0] == 0, 
    T[0, y, t] == R*t,
    T[9, y, t] == R*t,
    T[x, 0, t] == R*t,
    T[x, 9, t] == R*t}, T,
   {x, 0, 9}, {y, 0, 9}, {t, 0, 6}];
a = Table[
  Plot3D[T[x, y, t] /. FUNC, {x, 0, 9}, {y, 0, 9}, Mesh -> 15, 
   PlotRange -> {{0, 9}, {0, 9}, {-1, 10}}, 
   ColorFunction -> Function[{x, y, z}, Hue[.3 (1 - z)]]], {t, 0, 6}]
Export["c:\anim.gif", a]

alt text

PS: Viele Fehler durch die Verwendung eines Kleinbuchstaben als das erste Zeichen für Ihre Symbole vermieden werden ...

Andere Tipps

Ich bin mit Mark - es ist nichts falsch mit Ihrem Programm. Das Problem ist, dass nichts Interessantes nach t=0 an Ihre Funktion geschieht: Versuchen Sie einen Blick auf

mit
ListAnimate[
 Table[Plot3D[T[x, y, t] /. FUNC, {x, 0, 9}, {y, 0, 9}, Mesh -> 9], {t, 0, 6}]]

Wie Sie sehen können, alles, was eine Skalierung geschieht, ist, so dass, wenn DensityPlot jeden Rahmen unabhängig neu skaliert, sie suchte gleich am Ende :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top