Question

Je travaille sur la cartographie d'un gradient de température en deux dimensions et ayant beaucoup de mal. Mon approche actuelle est de définir une fonction d'interpolation et d'essayer ensuite représenter graphiquement il beaucoup de fois, puis animer cette table de graphiques. Voici ce que j'ai à ce jour:

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

Ainsi, les deux premières variables contrôlent seulement le taux de changement. L'équation je résoudre est l'équation de la chaleur 2D de base, où dT / dt = a (d ^ 2T / dx ^ 2 + d ^ 2T / dy ^ 2). Les conditions initiales fixées tout à 0, puis définissez les bords comme la source du changement de chaleur. En ce moment, il balaye sur un bloc 9x9 de t = 0 à t = 6.

La seconde partie tentatives pour animer le fonctionnement de la fonction.

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

Malheureusement, cela ne fonctionne pas, et je deviens fou à essayer de comprendre pourquoi. J'ai d'abord pensé qu'il avait quelque chose à voir avec la fonction Interpoler mais maintenant je ne suis pas si confiant que le code fonctionne soit animant. Quelqu'un at-il des idées?

Était-ce utile?

La solution

Juste une vérification rapide:

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]

text alt

PS: Beaucoup d'erreurs sont évitées en utilisant une lettre minuscule comme premier caractère pour vos symboles ...

Autres conseils

Je suis avec Mark - il n'y a rien de mal à votre programme. Le problème est que rien d'intéressant arrive à votre fonction après t=0: Essayez d'avoir un coup d'oeil à

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

Comme vous pouvez le voir, tout ce qui arrive est une mise à l'échelle, de sorte que lorsque DensityPlot redimensionne chaque image indépendamment, ils finissent par regarder identiques :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top