ParametricPlot kullanarak eşpotansiyel yüzeyler

Oct 17 2020

Bu yüzden aşağıdaki fonksiyonun sabit olduğu çizgileri çizmeye çalışıyorum $$ \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} $$ nerede $$\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. $$Ben ikinci yorumun motive edilmiş Aşağıdaki kodu kullanıyorum bu yazı

Σ[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}]

ve çıktıyı burada gösterildiği gibi verir (ikincisi, ilkinin uzaklaştırılmış halidir).

Gördüğünüz gibi, sol alt köşede garip davranışlar var ve neden olduğundan emin değilim. Ayrıca trajectoriesbu kodun bir kısmının ne yaptığını da anlamıyorum , daha doğrusu neden Functionbaşlangıçta 4 argüman var? Lütfen yardım et.

(bağlam: Kerr uzay zamanında sabit ivme çizgilerini çizmeye çalışıyorum)

Yanıtlar

5 cvgmt Oct 17 2020 at 21:17

Her MeshFunctionszaman kullandığım güçlü bir yöntem.

Burada 3D'den görüntülüyoruz Mesh. Bu yüzden çiziyoruzParametricPlot3D $$\begin{cases}x=\sqrt{r^2+0.9801} \sin (\theta ),\\ y=r \cos (\theta ),\\ z=f(r,\theta)\end{cases}$$

Biz kurarız ViewPoint={0,0,Infinity}ve kullanırızViewProjection -> "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

Neden olarak sorunuzu İlişkin trajectoriesdört bağımsız değişkeni vardır: MeshFunctionsiçin ParametricPlotihtiyaç üç dört argümanları. İlk ikisi arsa koordinatlarına karşılık gelir, son ikisi (veya bir) ParametricPlot.

Bunu daha iyi anlamak için aşağıdaki örneği düşünün:

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, bu soruyla ilgili olan şey, eşpotansiyellerin kutupsal koordinatlarda çizilmediği, kutupsal koordinatlara benzer bazı özel koordinatlarda çizildiği (ParametricPlot, "ParametricPlot [{Sqrt [r ^ 2 +) 'deki ilk argümana bakın. 0.99 ^ 2] * Günah [[Teta]], r Cos [[Teta]]}, ... "). Bu nedenle ContourPlot yerine ParametricPlot yolu kullanıldı, Mathematica'da yerleşik olmayan kullanıcı tanımlı koordinatları kullanmanıza izin verir. Kutupsal koordinatlarla kartezyen koordinatlara dönüşüm gerçekleştirebilirsiniz "Kutupsal" -> "Kartezyen", çünkü bunlar Mathematica'da yerleşiktir, ancak bu soruda olduğu gibi kullanıcı tanımlı koordinatlarla değil. ContourPlot'un kullanıcı tanımlı koordinatları destekleyip desteklemediğinden emin değilim