J'essaie de résoudre une équation différentielle de conduction thermique très simple avec NDSOLVE dans Mathematica, mais la solution que je reçois est assez étrange ...

StackOverflow https://stackoverflow.com//questions/11701327

Question

Il s'agit d'une très simple équation différentielle de conduction thermique en phase solide unidimensionnelle, voici mon code:

 a = NDSolve[{D[721.7013888888889` 0.009129691127380562` tes[t, x], 
     t] == 2.04988920646734`*^-6 D[tes[t, x], x, x], 
   tes[t, 0] == 298 + 200 t, tes[t, 0.01] == 298, 
   tes[0, x] == 298}, {tes[t, x]}, {t, 0, 0.005}, {x, 0, 0.01}]
Plot3D[tes[t, x] /. a, {t, 0, 0.005}, {x, 0, 0.01}, PlotRange -> All]
(Plot[(tes[t, x] /. a) /. t -> 0.0005, {x, 0, 0.01}, 
  PlotRange -> All])

Après l'avoir exécuté, vous verrez: la température (dans l'équation qu'il s'appelle que TES) soit inférieure à 298!C'est ridicule, c'est contre la deuxième loi de thermodynamique ... Comment cette erreur sort-elle?Comment puis-je le corriger?

Était-ce utile?

La solution 2

Ce problème a été résolu ici ,

Je devrais admettre que je n'ai pas encore attrapé la nature à l'époque où j'ai posté cette question ...

Autres conseils

Je ne traiterai que des aspects numériques de cela.Premièrement, heure d'échelle et espace de sorte que votre équation devienne $ \ partial_t f=partial_ {x, x} f $ dans les unités sans dimension.Ensuite, par exemple,

a = NDSolve[{D[ tes[t, x], t] == D[tes[t, x], x, x], 
   tes[t, 0] \[Equal] 1,
   tes[t, 1] \[Equal] 1,
   tes[0, x] \[Equal] Cos[2 \[Pi]*x/2]^2},
  tes[t, x],
  {t, 0, 1},
  {x, 0, 1}
  ]

Plot3D[tes[t, x] /. a, {t, 0, .2}, {x, 0, 1}, PlotRange -> All, 
 AxesLabel \[Rule] {"t", "x"}]

Mathematica graphiques

si la chaleur est simplement diffusée vers l'intérieur (Remarque J'ai changé la limite et les conditions initiales).

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