Page 1 sur 1

StoppingTest options in Mathematica

MessagePosté: Dimanche 24 Décembre 2006, 23:22
par Moloch
I'm using the NDSolve command to find a closed curve (it's a magnetic field line). It works, but I need to end the calculation at a specific point in space, so I don't get a curve with many turns. I want a single turn to draw a complete loop. How can I use the StoppingTest options to tell Mathematica to find a single turn loop ? The specific code is like this :

Code: Tout sélectionner
NDSolve[
{
x'[t] == Bx[x[t], y[t], z[t]],
y'[t] == By[x[t], y[t], z[t]],
z'[t] == Bz[x[t], y[t], z[t]],
x[0] == 0,
y[0] == 1,
z[0] == 0,
}, {x, y, z}, {t, 0, 100}, StoppingTest -> ( ? ? ? )]


Suppose I want the curve to stop at coordinates {x, y, z} = {1, 2, 3}, or better, I want it to be a complete loop with a single turn (stop when it's back at the initial coordinates). How can I tell that to Mathematica ?

MessagePosté: Lundi 25 Décembre 2006, 02:19
par DUET
avec Mathematica 5.1 je ne vois pas d'options StoppingTest mais si je comprends bien tu cherches le graphe d'une période d'une fonction périodique : peut-être peux-tu transformer ton problème par séries de Fourier ?

MessagePosté: Lundi 25 Décembre 2006, 02:58
par Moloch
Non, ce n'est pas l'approche naturelle dans ce cas. J'ai un champ vectoriel (les fonctions Bx, By, Bz), et à partir de conditions initiales, je trace les lignes de champs. Ces lignes se referment (boucles). Je doit trouver la periode de ces boucles (différente d'une boucle à l'autre), ou sinon je doit dire à Mathematica d'arrêter le tracage lorsque la boucle est complete.