Encontre a distribuição de carga em uma esfera
Encontre as posições que maximizam o potencial de Coulomb para que partículas igualmente carregadas possam mover-se livres em uma esfera. Esta é a distribuição de carga de equilíbrio.
Determine por n o número de partículas.
![Click for copyable input](assets.pt-br/find-the-charge-distribution-on-a-sphere/In_52.png)
n = 50;
Deixe que {xi, yi, zi} sejam as coordenadas cartesianas da partícula .
![Click for copyable input](assets.pt-br/find-the-charge-distribution-on-a-sphere/In_53.png)
vars = Join[Array[x, n], Array[y, n], Array[z, n]];
A meta é maximizar o potencial de Coulomb.
![Click for copyable input](assets.pt-br/find-the-charge-distribution-on-a-sphere/In_54.png)
potential =
Sum[((x[i] - x[j])^2 + (y[i] - y[j])^2 + (z[i] - z[j])^2)^-(1/
2), {i, 1, n - 1}, {j, i + 1, n}];
Como as partículas estão na esfera, suas coordenadas devem satisfazer as restrições da magnitude de unidade.
![Click for copyable input](assets.pt-br/find-the-charge-distribution-on-a-sphere/In_55.png)
sphereconstr = Table[x[i]^2 + y[i]^2 + z[i]^2 == 1, {i, 1, n}];
Escolha pontos iniciais na esfera aleatóriamente usando coordenadas esféricas.
![Click for copyable input](assets.pt-br/find-the-charge-distribution-on-a-sphere/In_56.png)
rpts = ConstantArray[1, n];
thetapts = RandomReal[{0, Pi}, n];
phipts = RandomReal[{-Pi, Pi}, n];
spherpts = Transpose[{rpts, thetapts, phipts}];
Transforme os pontos iniciais em coordenadas cartesianas.
![Click for copyable input](assets.pt-br/find-the-charge-distribution-on-a-sphere/In_57.png)
cartpts = CoordinateTransform["Spherical" -> "Cartesian", spherpts];
Reordene os pontos iniciais para que correspondam com a ordem das variáveis.
![Click for copyable input](assets.pt-br/find-the-charge-distribution-on-a-sphere/In_58.png)
initpts = Flatten[Transpose[cartpts]];
Minimize o potencial de Coulomb sujeito à restrição esférica.
![Click for copyable input](assets.pt-br/find-the-charge-distribution-on-a-sphere/In_59.png)
sol = FindMinimum[{potential, sphereconstr}, Thread[{vars, initpts}]];
Extraia da solução as posições de equilíbrio das partículas.
![Click for copyable input](assets.pt-br/find-the-charge-distribution-on-a-sphere/In_60.png)
solpts = Table[{x[i], y[i], z[i]}, {i, 1, n}] /. sol[[2]];
Faça uma representação gráfica do resultado.
![Click for copyable input](assets.pt-br/find-the-charge-distribution-on-a-sphere/In_61.png)
Show[ListPointPlot3D[solpts,
PlotRange -> {{-1.1, 1.1}, {-1.1, 1.1}, {-1.1, 1.1}},
PlotStyle -> {{PointSize[.03], Blue}}, AspectRatio -> 1,
BoxRatios -> 1, PlotLabel -> "Particle Distribution"],
Graphics3D[{Opacity[.5], Sphere[]}]]
![](assets.pt-br/find-the-charge-distribution-on-a-sphere/O_37.png)