ParametricPlot을 사용한 등전위 곡면
그래서 다음 함수가 상수 인 선을 그리려고합니다. $$ \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. $$이 게시물 의 두 번째 댓글에서 동기를 얻은 다음 코드를 사용하고 있습니다.
Σ[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}]
그리고 여기에 표시된대로 출력을 제공합니다 (두 번째는 첫 번째의 축소 된 버전입니다).
보시다시피, 왼쪽 하단 모서리에 이상한 동작이 있으며 이유를 모르겠습니다. 나는 또한 trajectories이 코드 의 일부가 무엇을하는지 이해하지 못합니다 . 더 정확하게는 왜 Function처음에 4 개의 인수가 있습니까? 도와주세요.
(맥락 : Kerr 시공간에서 일정한 가속도의 선을 그리려고합니다)
답변
는 MeshFunctions항상 사용할 수있는 강력한 방법이다.
여기서 우리 Mesh는 3D에서 봅니다 . 그래서 우리는ParametricPlot3D $$\begin{cases}x=\sqrt{r^2+0.9801} \sin (\theta ),\\ y=r \cos (\theta ),\\ z=f(r,\theta)\end{cases}$$
우리는 설정 ViewPoint={0,0,Infinity}하고 사용합니다ViewProjection -> "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"}]
왜 trajectories네 가지 주장 이 있는지에 대한 질문과 관련하여 3-4 가지 주장 MeshFunctions이 ParametricPlot필요합니다. 처음 두 개는 플롯의 좌표에 해당하고 마지막 두 개 (또는 하나)는 ParametricPlot.
이를 더 잘 이해하려면 다음 예를 고려하십시오.
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}
]
@Natas,이 질문은 등전위가 극좌표로 표시되지 않고 극좌표와 유사한 특수 좌표로 표시된다는 것입니다 (ParametricPlot의 첫 번째 인수를 살펴보십시오. 0.99 ^ 2] * Sin [[Theta]], r Cos [[Theta]]}, ... "). 그렇기 때문에 ContourPlot 대신 ParametricPlot 방식을 사용하여 Mathematica에 내장되지 않은 사용자 정의 좌표를 사용할 수 있습니다. 극좌표를 사용하면 Mathematica에 내장되어 있기 때문에 데카르트 좌표 "Polar"-> "Cartesian"으로 변환을 수행 할 수 있지만이 질문의 경우에는 사용자 정의 좌표가 아닙니다. ContourPlot이 사용자 정의 좌표를 지원하는지 확실하지 않습니다.