Ermitteln Sie die Ladungsverteilung auf einer Kugel
Ermitteln Sie die Positionen, die das Coulomb-Potential für kugelsymmetrisch verteilte frei bewegliche geladene Teilchen minimieren. Dann handelt es sich um das Ladungsgleichgewicht.
Geben Sie die Zahl der Teilchen mit n an.
![Click for copyable input](assets.de/find-the-charge-distribution-on-a-sphere/In_52.png)
n = 50;
{xi, yi, zi} seien die kartesischen Koordinaten des Partikels.
![Click for copyable input](assets.de/find-the-charge-distribution-on-a-sphere/In_53.png)
vars = Join[Array[x, n], Array[y, n], Array[z, n]];
Das Ziel ist die Minimierung des Coulomb-Potentials.
![Click for copyable input](assets.de/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}];
Da sich die Teilchen auf einer Kugeloberfläche befinden, müssen ihre Koordinatenvektoren alle dieselbe Länge besitzen.
![Click for copyable input](assets.de/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}];
Wählen Sie zufällige Kugelkoordinaten als Anfangspunkte.
![Click for copyable input](assets.de/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}];
Wandeln Sie die Anfangspunkte in kartesische Koordinaten um.
![Click for copyable input](assets.de/find-the-charge-distribution-on-a-sphere/In_57.png)
cartpts = CoordinateTransform["Spherical" -> "Cartesian", spherpts];
Ordnen Sie die Anfangspunkte so an, dass sie der Reihenfolge der Variablen entsprechen.
![Click for copyable input](assets.de/find-the-charge-distribution-on-a-sphere/In_58.png)
initpts = Flatten[Transpose[cartpts]];
Minimieren Sie das Coulomb-Potential unter Berücksichtigung der durch die Kugel gegebenen Bedingungen.
![Click for copyable input](assets.de/find-the-charge-distribution-on-a-sphere/In_59.png)
sol = FindMinimum[{potential, sphereconstr}, Thread[{vars, initpts}]];
Extrahieren Sie die Gleichgewichtspositionen der Teilchen aus der Lösung.
![Click for copyable input](assets.de/find-the-charge-distribution-on-a-sphere/In_60.png)
solpts = Table[{x[i], y[i], z[i]}, {i, 1, n}] /. sol[[2]];
Plotten Sie das Resultat.
![Click for copyable input](assets.de/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.de/find-the-charge-distribution-on-a-sphere/O_37.png)