Question

Je suis en train d'utiliser NDSolve Mathematica [] pour calculer une géodésique le long d'une sphère en utilisant l'ODE couplé:

x" - (x" . x) x = 0

Le problème est que je ne peux entrer dans les conditions initiales pour x (0) et x '(0) et le solveur est satisfait de la solution où x »= 0. Le problème est que ma géodésique sur la sphère a la première condition que x "(0) = -x (0), que je ne sais pas comment dire Mathematica. Si j'ajoute cela comme une condition, il dit que je suis d'ajouter Fidèles à la liste des conditions.

Voici mon code:

s1 = NDSolve[{x1''[t] - (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x1[t] == 0, x2''[t] -  (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x2[t] == 0, x3''[t] - (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x3[t] == 0, x1[0] == 1, x2[0] == 0, x3[0] == 0, x1'[0] == 0, x2'[0] == 0, x3'[0] == 1} , { x1, x2, x3}, {t, -1, 1}][[1]]

Je souhaite modifier cette sorte que l'accélération initiale est non nulle mais -x(0).

Merci

Était-ce utile?

La solution 2

Je fixe ce problème par une réorganisation mathématique plutôt que d'aborder ma question d'origine:

Soit V (t) un champ de vecteurs le long de x (t).

x. V = 0 implique d / dt (x. V) = (x 'V) + (x. V') = 0

Alors l'équation D / dt V = V - '(. V' (. X V') x = V x) + x cales Cela signifie que l'équation géodésique devient:. X » + ( « x » x) x = 0 et donc il peut être résolu en utilisant les conditions initiales que j'avais à l'origine

Merci beaucoup pour Janus en passant par et en soulignant les divers problèmes que je rencontrais, y compris la mise en page de code horribles, j'ai appris beaucoup par votre réécrivant ainsi.

Autres conseils

Eh bien, comme le message d'erreur indique - NDSolve accepte que les conditions initiales pour les dérivés d'ordres strictement inférieur à l'ordre maximal figurant dans le ODE
. Je sens ce qui est plus d'une question de mathématiques. Mathématiquement, {x''[0]=-x0, x[0]==x0}, ne définit pas une solution unique - vous auriez à faire quelque chose le long des lignes de {x0.x''[0]==-1, x[0]==x0, x'[0]-x0 x0.x'[0]==v0} pour que de travailler (NDSolve serait toujours pas avec la même erreur). Vous ne réalisez que vous obtiendrez juste un grand cercle sur la sphère unité, à droite?

Par ailleurs, voici comment je l'aurais codé votre exemple:

x[t_] = Table[Subscript[x, j][t], {j, 3}];
s1 = NDSolve[Flatten[Thread /@ #] &@{
       x''[t] - (x''[t].x[t]) x[t] == {0, 0, 0},
       x[0] == {1, 0, 0}, 
       x'[0] == {0, 0, 1}
     }, x[t], {t, -1, 1}]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top