2010-10-26 5 views
0

je voudrais trouver numériquement la solution àMathematica résolution d'équations différentielles

u_t - u_xx - u_yy = f sur le carré de y ∈ [0,1], x ∈ [0,1]

où f = 1 si, dans le cercle unité et f = 0 sinon. Les conditions aux limites sont u = 0 sur les quatre arêtes.

J'ai essayé d'utiliser ND-solve depuis des lustres mais je continue à recevoir des messages d'erreur. Je suis nouveau à Mathematica, donc je ne sais pas comment définir f avant ND-Solve.

Merci d'avance.

Répondre

1

Les fichiers d'aide de Mathematica sont incroyablement complets pour ce genre de choses. Je vais à reference the online version, mais notez que, dans le navigateur d'aide de Mathematica, vous pouvez modifier et évaluer interactivement les exemples d'aide. C'était la seule façon d'apprendre beaucoup sur Mathematica.

Un point avant de commencer à essayer plus de choses: Il est très facile de définir une fonction, comme u ou f lorsque l'intention de faire une déclaration de comparaison. Un moyen infaillible, mais un peu paresseux, de régler d'éventuels problèmes persistants consiste à quitter le noyau actuel et ensuite à réévaluer quelque chose. Quitter le noyau perd tous les symboles que vous avez définis accidentellement jusqu'à ce point. (Le démarrage d'un nouveau noyau est également la raison pour laquelle Mathematica effectue un petit changement la première fois que vous effectuez une opération, même si c'est une simple addition.)

Poursuivant avec la question à portée de main ... Dans la référence ci-dessus, un échantillon est donné qui résout l'équation de chaleur unidimensionnelle qui est très similaire à votre exemple. Commençons par cela et modifier:

NDSolve[{D[u[t, x], t] == D[u[t, x], x, x], u[0, x] == Q0, 
    u[t, 0] == Sin[t], u[t, 5] == 0}, 
    u, {t, 0, 10}, {x, 0, 5}] 

Leurs équations sont ∂ u t = ∂ u xx avec des conditions aux limites de l'être de l'énergie initiale Q0 au temps 0 et forall; x, la l'énergie à x = 0 étant sin (t) et l'énergie à x = 5 étant 0 & forall; t. Vous pouvez voir ci-dessus comment ces cartes, espérons-le. Maintenant, essayons de la même chose pour vos termes:

NDSolve[{D[u[t, x, y], t] - D[u[t, x, y], x, x] - D[u[t, x, y], y, y] == f[x, y], 
    f[x,y] == If[x^2 + y^2 < 1, 1, 0], 
    u[t, 0, y] == 0, u[t, 1, y] == 0, 
    u[t, x, 0] == 0, u[t, y, 1] == 0 } 
    u, {x, 0, 1}, {y, 0, 1}] 

Je pense que c'est à peu près juste. Cependant, il y a au moins un problème ici, cependant. t est toujours une variable libre. Vous n'avez fourni aucune équation pour le restreindre, donc le système est sous-spécifié.