Surfaces équipotentielles utilisant ParametricPlot

Oct 17 2020

J'essaye donc de tracer des lignes sur lesquelles la fonction suivante est une constante $$ \frac{\left(-\Sigma (r,0.99,\theta )+2 r^2-0.99^2 r \sin ^2(\theta )\right)^2}{\Delta (r,1,0.99) \Sigma (r,0.99,\theta )^3}+\frac{0.99^4 \sin ^2(\theta ) \cos ^2(\theta ) \Delta (r,1,0.99)}{\Sigma (r,0.99,\theta )^4} $$$$\Delta (r,M,a):=a^2-2 M r+r^2\quad\text{and}\quad\Sigma (r,a,\theta):=a^2 \cos ^2(\theta )+r^2. $$J'utilise le code suivant qui a été motivé par le deuxième commentaire sur ce post

Σ[r_, a_, θ_] := r^2 + a^2*Cos[θ]^2;
Δ[r_, M_, a_] := r^2 - 2 M r + a^2;
cValues = 
   {0.01, 0.1, 0.08, 0.06, 0.003, 0.005, 0.12, 0.14, 0.2, 0.15, 0.02, 0.04, 
    0.03, 0.18, 0.22, 1.5, 2.3, 0.002, 0.0025, 0.003, 0.0015, 0.0018, 0.0023, 
    0.0011, 0.0009, 0.0008, 0.0007, 0.0006, 0.0005};
trajectories = 
  Function[{x, y, r, θ},  
    Σ[r, 0.99, θ]^(-3)*Δ[r, 1, 0.99]^(-1)*(2 r^2 - 
    Σ[r, 0.99, θ] - 0.99^2 r Sin[θ]^2)^2 + 
    Δ[r, 1, 0.99]*0.99^4*Σ[r, 0.99, θ]^(-4) Sin[θ]^2 Cos[θ]^2];
ParametricPlot[{Sqrt[r^2 + 0.99^2]*Sin[θ], r Cos[θ]}, {r, 0, 5}, {θ, 0, Pi/2}, 
  PlotStyle -> {Green}, MeshFunctions -> {trajectories}, Mesh -> {cValues}]

et il donne la sortie comme indiqué ici (le second est la version agrandie du premier).

Comme vous pouvez le voir, le coin inférieur gauche a un comportement étrange et je ne sais pas pourquoi. Je ne comprends pas non plus ce que fait la trajectoriespartie de ce code, plus précisément pourquoi a-t- Functionil 4 arguments au début? Veuillez aider.

(contexte: j'essaye de tracer les lignes d'accélération constante dans l'espace-temps de Kerr)

Réponses

5 cvgmt Oct 17 2020 at 21:17

C'est MeshFunctionsune méthode puissante que j'utilise toujours.

Ici, nous voyons le à Meshpartir de 3D. Alors nous dessinons leParametricPlot3D $$\begin{cases}x=\sqrt{r^2+0.9801} \sin (\theta ),\\ y=r \cos (\theta ),\\ z=f(r,\theta)\end{cases}$$

Nous définissons ViewPoint={0,0,Infinity}et utilisonsViewProjection -> "Orthographic"

Clear["`*"];
Σ[r_, a_, θ_] = r^2 + a^2*Cos[θ]^2;
Δ[r_, M_, a_] = r^2 - 2 M r + a^2;
f[r_, θ_] = Σ[r, 
      0.99, θ]^(-3)*Δ[r, 1, 
      0.99]^(-1)*(2 r^2 - Σ[r, 0.99, θ] - 
       0.99^2 r Sin[θ]^2)^2 + Δ[r, 1, 
     0.99]*0.99^4*Σ[r, 
      0.99, θ]^(-4) Sin[θ]^2 Cos[θ]^2;
cValues = {0.01, 0.1, 0.08, 0.06, 0.003, 0.005, 0.12, 0.14, 0.2, 0.15,
    0.02, 0.04, 0.03, 0.18, 0.22, 1.5, 2.3, 0.002, 0.0025, 0.003, 
   0.0015, 0.0018, 0.0023, 0.0011, 0.0009, 0.0008, 0.0007, 0.0006, 
   0.0005};
ParametricPlot3D[{Sqrt[r^2 + 0.99^2]*Sin[θ], r Cos[θ], 
  f[r, θ]}, {r, 0, 5}, {θ, 0, π/2}, 
 PlotPoints -> 150, MeshFunctions -> (#3 &), Mesh -> {cValues}, 
 PlotStyle -> Green, ViewProjection -> "Orthographic", 
 ViewPoint -> {0, 0, ∞}, Lighting -> {White, "Neutral"}]

5 Natas Oct 17 2020 at 17:37

En ce qui concerne votre question de savoir pourquoi trajectoriesa quatre arguments: MeshFunctionspour le ParametricPlotbesoin de trois à quatre arguments. Les deux premiers correspondent aux coordonnées du tracé, les deux derniers (ou un) aux paramètres du ParametricPlot.

Pour mieux l'apprécier, considérons l'exemple suivant:

funs = {
   Function[{x, y, u, v}, x],
   Function[{x, y, u, v}, y],
   Function[{x, y, u, v}, u],
   Function[{x, y, u, v}, v]
   };
Row@Table[ParametricPlot[
   {r Cos[\[Theta]], r Sin[\[Theta]]},
   {r, 0, 1}, {\[Theta], 0, \[Pi]/2},
   MeshFunctions -> fun,
   Mesh -> 10,
   ImageSize -> Small
   ], {fun, funs}
  ]

1 VTynianski Oct 17 2020 at 18:33

@Natas, le problème avec cette question est que les équipotentielles ne sont pas tracées en coordonnées polaires, elles sont tracées dans des coordonnées spéciales similaires aux coordonnées polaires (regardez le premier argument de ParametricPlot, "ParametricPlot [{Sqrt [r ^ 2 + 0,99 ^ 2] * Sin [[Theta]], r Cos [[Theta]]}, ... "). C'est pourquoi la méthode ParametricPlot a été utilisée à la place de ContourPlot, elle vous permet d'utiliser des coordonnées définies par l'utilisateur qui ne sont pas intégrées à Mathematica. Avec les coordonnées polaires, vous pouvez effectuer une transformation en coordonnées cartésiennes "Polar" -> "Cartésiennes", car elles sont intégrées à Mathematica, mais pas avec des coordonnées définies par l'utilisateur, ce qui est le cas dans cette question. Je ne sais pas si ContourPlot prend en charge les coordonnées définies par l'utilisateur