Domanda

sto lavorando sulla mappatura un gradiente di temperatura in due dimensioni e avendo un sacco di problemi. Il mio approccio attuale è quello di definire una funzione di interpolazione e quindi provare a rappresentare graficamente un sacco di volte, quindi animate quel tavolo di grafici. Ecco quello che ho finora:

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}]

Così i primi due variabili appena controllano il tasso di variazione. L'equazione che sto risolvendo l'equazione del calore base in 2D, dove dT / dt = a (d ^ 2T / dx ^ 2 + d ^ 2T / dy ^ 2). Le condizioni iniziali impostate tutto a 0, allora definiscono i bordi come sorgente della variazione calore. In questo momento spazia su un blocco di 9x9 da t = 0 at = 6.

La seconda parte intende per animare la funzione di lavoro.

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

Purtroppo, questo non funziona, e sto impazzendo cercando di capire perché. Ho pensato che avesse qualcosa a che fare con la funzione di interpolazione, ma ora non ne sono così sicuro che il codice funziona sia animatrice. Qualcuno ha qualche idea?

È stato utile?

Soluzione

Basta un rapido controllo:

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: Un sacco di errori sono evitati utilizzando una lettera minuscola come il primo carattere per i simboli ...

Altri suggerimenti

Sono con Mark - non c'è niente di sbagliato con il vostro programma. Il problema è che niente di interessante accade alla funzione dopo t=0: Prova avere uno sguardo a

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

Come si può vedere, tutto ciò che accade è una scala, in modo che quando DensityPlot ridimensiona ciascun frame indipendentemente, finiscono cercando identico :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top