chg-on-sphere0.mws

Равновесное размещение одноименных зарядов на сфере
Арсений Слободюк, 2006г.

> with(linalg):with(plots):

Warning, the protected names norm and trace have been redefined and unprotected

Warning, the name changecoords has been redefined

> assume(x1,real,y1,real,z1,real,x2,real,y2,real,z2,real,ftx,real,fty,real,ftz,real);

Составим систему уравнений, чтобы найти Ft - тангенциальную составляющую силы, действующей со стороны заряда

с координатами v1 на заряд с координатами v2. Заряды помещены на стержнях, закрепленных в начале координат.

> Ft:=vector(3,[ftx,fty,ftz]);

Ft := vector([ftx, fty, ftz])

> v1:=vector(3,[x1,y1,z1]);

v1 := vector([x1, y1, z1])

> v2:=vector(3,[x2,y2,z2]);

v2 := vector([x2, y2, z2])

Сила Кулона. Для данной задачи система единиц неважна

> Fq:=(v2-v1)/dotprod(v2-v1,v2-v1)^(3/2);

Fq := (v2-v1)/((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)^(3/2)...

> dotprod(v1,v2,'orthogonal');

x1*x2+y1*y2+z1*z2

> crossprod(v1,v2);

vector([y1*z2-z1*y2, z1*x2-x1*z2, x1*y2-y1*x2])

Уравнение 1: Ft перпендикулярен вектору v2

> eq1:=dotprod(Ft,v2,'orthogonal')=0;

eq1 := ftx*x2+fty*y2+ftz*z2 = 0

Уравнение 2: Ft лежит в плоскости, образованной v1 и v2, т.е., он перпендикулярен векторному произведению v1 и v2.

> eq2:=dotprod(crossprod(v1,v2),Ft,'orthogonal')=0;

eq2 := (y1*z2-z1*y2)*ftx+(z1*x2-x1*z2)*fty+(x1*y2-y...

Уравнение 3: Ft - проекция Fq на направление Ft

> eq3:=dotprod(Fq,Ft,'orthogonal')=dotprod(Ft,Ft);

eq3 := 1/((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)^(3/2)*(x2-...
eq3 := 1/((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)^(3/2)*(x2-...
eq3 := 1/((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)^(3/2)*(x2-...

> so1:=solve({eq1,eq2,eq3},{ftx,fty,ftz});

so1 := {ftz = 0, ftx = 0, fty = 0}, {ftx = -(x1*y2^...
so1 := {ftz = 0, ftx = 0, fty = 0}, {ftx = -(x1*y2^...
so1 := {ftz = 0, ftx = 0, fty = 0}, {ftx = -(x1*y2^...

> ftxf:=unapply(subs(so1[2],ftx),x1,y1,z1,x2,y2,z2):

> ftyf:=unapply(subs(so1[2],fty),x1,y1,z1,x2,y2,z2):

> ftzf:=unapply(subs(so1[2],ftz),x1,y1,z1,x2,y2,z2):

> df:=unapply(sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2),x1,y1,z1,x2,y2,z2):

Рассчитаем "траектории" зарядов, приняв, за Аристотелем, что скорость пропорциональна силе, приложенной к телу.

Заодно, рассчитаем и "потенциал" взаимодействия (также, в произвольных единицах, но энергия взаимодействия обратно

пропорциональна расстоянию, как и на самом деле)

> ct:=0.05:n:=5:m:=1500:

> x[1,0]:=0.:y[1,0]:=0.:z[1,0]:=1.:
x[2,0]:=cos(3.1415927/8.):y[2,0]:=sin(3.1415927/8.):z[2,0]:=0.:
x[3,0]:=0.:y[3,0]:=1.:z[3,0]:=0.:
x[4,0]:=-1.:y[4,0]:=0.:z[4,0]:=0.:
x[5,0]:=0.:y[5,0]:=-1.:z[5,0]:=0.:

> for t from 1 by 1 to m do
pot[t]:=0:
for i from 1 by 1 to n do
x[i,t] := x[i,t-1]:
y[i,t] := y[i,t-1]:
z[i,t] := z[i,t-1]:
fx[i,t]:=0:fy[i,t]:=0:fz[i,t]:=0:
for j from 1 by 1 to n do
if (i <> j) then
fx[i,t]:=fx[i,t]+ftxf(x[j,t-1],y[j,t-1],z[j,t-1],x[i,t-1],y[i,t-1],z[i,t-1]):
fy[i,t]:=fy[i,t]+ftyf(x[j,t-1],y[j,t-1],z[j,t-1],x[i,t-1],y[i,t-1],z[i,t-1]):
fz[i,t]:=fz[i,t]+ftzf(x[j,t-1],y[j,t-1],z[j,t-1],x[i,t-1],y[i,t-1],z[i,t-1]):
end if:
if (i < j) then
pot[t]:=pot[t]+1/df(x[j,t-1],y[j,t-1],z[j,t-1],x[i,t-1],y[i,t-1],z[i,t-1]):
end if:
end do:
x[i,t] := x[i,t] + ct * fx[i,t]:
y[i,t] := y[i,t] + ct * fy[i,t]:
z[i,t] := z[i,t] + ct * fz[i,t]:
end do:
end do:

> xf:=unapply(x[iv,floor(tv)],iv,tv):yf:=unapply(y[iv,floor(tv)],iv,tv):
zf:=unapply(z[iv,floor(tv)],iv,tv):

> potf:=unapply(pot[floor(tv)],tv):

> xff:=unapply(fx[iv,floor(tv)],iv,tv):yff:=unapply(fy[iv,floor(tv)],iv,tv):
zff:=unapply(fz[iv,floor(tv)],iv,tv):

Проекция траекторий на плоскость xz

> plot([seq([xf(ii,tt),zf(ii,tt),tt=1..m],ii=1..n)],style=point,symbol=circle,
color=[red,green,blue,black,yellow,violet]);

[Maple Plot]

Проекция траекторий на плоскость xy

> plot([seq([xf(ii,tt),yf(ii,tt),tt=1..m],ii=1..n)],style=point,symbol=circle,
color=[red,green,blue,black,yellow,violet]);

[Maple Plot]

Проекция Ft на плоскость xz

> plot([seq([xff(ii,tt),zff(ii,tt),tt=1..m],ii=1..n)],style=point,symbol=circle,
color=[red,green,blue,black,yellow,violet]);

[Maple Plot]

Проекция Ft на плоскость xy

> plot([seq([xff(ii,tt),yff(ii,tt),tt=1..m],ii=1..n)],style=point,symbol=circle,
color=[red,green,blue,black,yellow,violet]);

[Maple Plot]

Изменение потенциала с эволюцией системы

> plot([potf(tt)],tt=1..m);

[Maple Plot]

Окончательное размещение зарядов

> me:=m:
ai := seq(arrow([x[ii,me],y[ii,me],z[ii,me]], shape=arrow),ii=1..n):
display(ai, scaling=CONSTRAINED, axes=NORMAL, labels=[x,y,z]);

[Maple Plot]

>

> x[2,m]^2+y[2,m]^2+z[2,m]^2;

1.005881531

Hosted by uCoz