Ruch cząstki materialnej o masie m i ładunku q w jednorodnym polu magnetycznym, danym przez stały wektor skierowany wzdłuż osi z

r[t_]={x[t],y[t],z[t]}

v[t_]=r'[t]

a[t_]=r''[t]

B={0,0,B0}

(* Siła Lorentza *)

F[t_]=q*Cross[v[t],B]

rownania=m*a[t]==F[t]

co=FullSimplify[DSolve[rownania,{x[t],y[t],z[t]},t],m>0&&q>0&&B0>0]

(* Dostaliśmy tzw. całkę ogólną układu równań różniczkowych, zależną od 6 dowolnych stałych, C[1], C[2], ..., C[6]. Te stałe wyliczymy, zakładając tzw. warunki początkowe: wektor położenia w chwili t=0 i wektor prędkości w chwili t=0.
Te warunki początkowe formułujemy zupełnie ogólnie:
Położenie w chwili początkowej: r[0]={x0,y0,z0}.
Prędkość w chwili początkowej: v[0]={vx0,vy0,vz0}.
 *)

WP={x[0]==x0,y[0]==y0,z[0]==z0,x'[0]==vx0,y'[0]==vy0,z'[0]==vz0}

cs=FullSimplify[DSolve[{rownania,WP},{x[t],y[t],z[t]},t],m>0&&q>0&&B0>0]

(* To już jest całka szczególna układu równańn różniczkowych, gdzie stałe C[1], C[2], ..., C[6] zostały już wyeliminowane.
*)

cs[[1]][[2]]

x[t_]=x[t]/.cs[[1]][[1]]

y[t_]=y[t]/.cs[[1]][[2]]

z[t_]=z[t]/.cs[[1]][[3]]

(* Przykładowe dane dla celów rysunku *)

B0=1;m=1;q=1;

x0=0;y0=0;z0=0; (* Ustalmy, że startujemy z początku układu współrzędnych *)

(* Możemy badać charakter ruchu w zależności od wektora prędkości początkowej *)

(* Przypadek 1: wektor prędkości początkowej ma składową równoległą i prostopadłą do wektora indukcji magnetycznej B=(0,0,B0) *)

vx0=1;vy0=2;vz0=3;

x[t]

y[t]

z[t]

ParametricPlot3D[{x[t],y[t],z[t]},{t,0,10},AxesLabel->{"x","y","z"}]

(* I mamy spiralę ! *)

Clear[vx0,vy0,vz0];

(* Przypadek 2: wektor prędkości początkowej ma tylko składową prostopadłą do wektora indukcji magnetycznej 
B=(0,0,B0) *)

vx0=1;vy0=2;vz0=0;

x[t]

y[t]

z[t]

ParametricPlot3D[{x[t],y[t],z[t]},{t,0,10},AxesLabel->{"x","y","z"}]

(* I mamy okrąg w płaszczyźnie prostopadłej 
do wektora B !  *)

Clear[vx0,vy0,vz0];

(* Przypadek 3: wektor prędkości początkowej ma tylko składową równoległą do wektora indukcji magnetycznej 
B=(0,0,B0) *)

vx0=0;vy0=0;vz0=3;

x[t]

y[t]

z[t]

ParametricPlot3D[{x[t],y[t],z[t]},{t,0,3},AxesLabel->{"x","y","z"}]

(* I mamy ruch jednostajny prostoliniowy wzdłuż kierunku pola B ! *)