Teorie šíření elektromagnetických vln v dielektrických anizotropních krystalech

znázornění plochy fázových rychlostí pro dvouosé krystaly pomocí 2D a 3D grafů
plochy fázových rychlostí

Clear["Global`*"];

\(\(\( (*\ 
      nacteni\ potrebnych\ knihoven\ *) \)\(
\)\(\(Needs["Graphics`ContourPlot3D`"];\)

    \(Needs["Graphics`ImplicitPlot`"];\)

    \(Needs["Graphics`Animation`"];\)\)\)\)

v1 = 
        3;

    v2 = 2.1;

    v3 = 1.7;

rcefazrych := 
        vx^2*(v2^2 - vx^2 - vy^2 - vz^2)*(v3^2 - vx^2 - vy^2 - 
                vz^2) + 
          vy^2*(v1^2 - vx^2 - vy^2 - vz^2)*(v3^2 - vx^2 - vy^2 - 
                vz^2) + 
          vz^2*(v1^2 - vx^2 - vy^2 - vz^2)*(v2^2 - vx^2 - vy^2 - 
                vz^2);

\(\(\( (*\ 
      plocha\ fazovych\ rychlosti\  - \ 
        rez\ do\ roviny\ xy\ *) \)\(
\)\(\(vz = 
        0;\)

    \(rezXY = 
        ImplicitPlot[
rcefazrych == 
            0, 
{vx, \(-v1\), 
            v1}, 
AxesLabel -> {
StyleForm["vx", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"], 
StyleForm["vy", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"]
}, 
Ticks -> {
{
{\(-v1\), 
                  StyleForm["-v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v2\), 
                  StyleForm["-v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v3\), 
                  StyleForm["-v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v3, 
                  StyleForm["v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v2, 
                  StyleForm["v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v1, 
                  StyleForm["v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}
}, 
{
{\(-v1\), 
                  StyleForm["-v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v2\), 
                  StyleForm["-v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v3\), 
                  StyleForm["-v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v3, 
                  StyleForm["v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v2, 
                  StyleForm["v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v1, 
                  StyleForm["v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}
}
}
];\)

    \(Clear[vz];\)\)\)\)

\(\(\( (*\ 
      plocha\ fazovych\ rychlosti\  - \ 
        rez\ do\ roviny\ xz\ *) \)\(
\)\(\(vy = 
        0;\)

    \(rezXZ = 
        ImplicitPlot[
rcefazrych == 
            0, 
{vx, \(-v1\), 
            v1}, 
AxesLabel -> {
StyleForm["vx", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"], 
StyleForm["vy", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"]
}, 
Ticks -> {
{
{\(-v1\), 
                  StyleForm["-v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v2\), 
                  StyleForm["-v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v3\), 
                  StyleForm["-v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v3, 
                  StyleForm["v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v2, 
                  StyleForm["v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v1, 
                  StyleForm["v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}
}, 
{
{\(-v1\), 
                  StyleForm["-v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v2\), 
                  StyleForm["-v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v3\), 
                  StyleForm["-v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v3, 
                  StyleForm["v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v2, 
                  StyleForm["v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v1, 
                  StyleForm["v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}
}
}
];\)

    \(Clear[vy];\)\)\)\)

\(\(\( (*\ 
      plocha\ fazovych\ rychlosti\  - \ 
        rez\ do\ roviny\ yz\ *) \)\(
\)\(\(vx = 
        0;\)

    \(rezYZ = 
        ImplicitPlot[
rcefazrych == 
            0, 
{vy, \(-v1\), 
            v1}, 
AxesLabel -> {
StyleForm["vx", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"], 
StyleForm["vy", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"]
}, 
Ticks -> {
{
{\(-v1\), 
                  StyleForm["-v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v2\), 
                  StyleForm["-v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v3\), 
                  StyleForm["-v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v3, 
                  StyleForm["v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v2, 
                  StyleForm["v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v1, 
                  StyleForm["v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}
}, 
{
{\(-v1\), 
                  StyleForm["-v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v2\), 
                  StyleForm["-v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{\(-v3\), 
                  StyleForm["-v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v3, 
                  StyleForm["v3", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v2, 
                  StyleForm["v2", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}, 
{v1, 
                  StyleForm["v1", FontFamily -> "Times", 
                    FontSize -> 12, 
                    FontWeight -> "Bold"]}
}
}
];\)

    \(Clear[vx];\)\)\)\)

Export["rezXYfazrych.jpg", rezXY, "JPEG", 
        ImageSize -> {640, 480}];
Export["rezXZfazrych.jpg", rezXZ, "JPEG", 
        ImageSize -> {640, 480}];
Export["rezYZfazrych.jpg", rezYZ, "JPEG", 
        ImageSize -> {640, 480}];

v1 = 3;
v2 = 2.1;
v3 = 1.7;

    
data1 = 
        Table[
rcefazrych, 
{vx, -2.1, 3.2,  .1}, 
{vy, -2.1, 
            3.2,  .1}, 
{vz, -3.2, 
            0,  .1}
];

    
Clear[v1];
Clear[v2];
Clear[v3];

    
\(\(plochafazrych3D = 
        ListContourPlot3D[
data1, 
MeshRange -> {{\(-3.2\), 0}, {\(-2.1\), 
                3.2}, {\(-2.1\), 
                3.2}}, 
Contours -> {0}, 
Lighting -> True, 
Axes -> 
            True, 
AxesLabel -> {
StyleForm["vx", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"], 
StyleForm["vy", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"], 
StyleForm["vz", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"]
}, 
Ticks -> {
{{\(-3\), "-v1"}, {\(-2.1\), "-v2"}, {\(-1.7\), "-v3"}, {1.7, "v3"}, {2.1, "v2"}, {3, "v1"}}, {{\(-3\), "-v1"}, {\(-2.1\), "-v2"}, {\(-1.7\), "-v3"}, {1.7, "v3"}, {2.1, "v2"}, {3, "v1"}}, 
{{\(-3\), "-v1"}, {\(-2.1\), "-v2"}, {\(-1.7\), "-v3"}, {1.7, "v3"}, {2.1, "v2"}, {3, "v1"}}
}
];\)\)

Export["plochafazrych3D.jpg", plochafazrych3D, "JPEG", 
        ImageSize -> {800, 600}];

v1 = 3;
v2 = 2.1;
v3 = 1.7;

    
data2 = 
        Table[
rcefazrych, 
{vx, -3.2, 3.2,  .1}, 
{vy, 0, 
            3.2,  .1}, 
{vz, -3.2, 
            3.2,  .1}
];

    
Clear[v1];
Clear[v2];
Clear[v3];

    
\(\(plochafazrych3D2 = 
        ListContourPlot3D[
data2, 
MeshRange -> {{\(-3.2\), 3.2}, {0, 3.2}, {\(-3.2\), 
                3.2}}, 
Contours -> {0}, 
Lighting -> True, 
Axes -> 
            True, 
AxesLabel -> {
StyleForm["vx", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"], 
StyleForm["vy", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"], 
StyleForm["vz", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"]
}, 
Ticks -> {
{{\(-3\), "-v1"}, {\(-2.1\), "-v2"}, {\(-1.7\), "-v3"}, {1.7, "v3"}, {2.1, "v2"}, {3, "v1"}}, {{\(-3\), "-v1"}, {\(-2.1\), "-v2"}, {\(-1.7\), "-v3"}, {1.7, "v3"}, {2.1, "v2"}, {3, "v1"}}, 
{{\(-3\), "-v1"}, {\(-2.1\), "-v2"}, {\(-1.7\), "-v3"}, {1.7, "v3"}, {2.1, "v2"}, {3, "v1"}}
}
];\)\)

Export["plochafazrych3D2.jpg", plochafazrych3D2, "JPEG", 
        ImageSize -> {800, 600}];

v1 = 3;
v2 = 2.1;
v3 = 1.7;

    
data3 = 
        Table[
rcefazrych, 
{vx, -3.2, 0,  .1}, 
{vy, -3.2, 
            3.2,  .1}, 
{vz, -3.2, 
            3.2,  .1}
];

    
Clear[v1];
Clear[v2];
Clear[v3];

    
\(\(plochafazrych3D3 = 
        ListContourPlot3D[
data3, 
MeshRange -> {{\(-3.2\), 3.2}, {\(-3.2\), 
                3.2}, {\(-3.2\), 
                0}}, 
Contours -> {0}, 
Lighting -> True, 
Axes -> 
            True, 
AxesLabel -> {
StyleForm["vx", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"], 
StyleForm["vy", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"], 
StyleForm["vz", FontFamily -> "Times", 
                FontSize -> 16, 
                FontWeight -> "Bold"]
}, 
Ticks -> {
{{\(-3\), "-v1"}, {\(-2.1\), "-v2"}, {\(-1.7\), "-v3"}, {1.7, "v3"}, {2.1, "v2"}, {3, "v1"}}, {{\(-3\), "-v1"}, {\(-2.1\), "-v2"}, {\(-1.7\), "-v3"}, {1.7, "v3"}, {2.1, "v2"}, {3, "v1"}}, 
{{\(-3\), "-v1"}, {\(-2.1\), "-v2"}, {\(-1.7\), "-v3"}, {1.7, "v3"}, {2.1, "v2"}, {3, "v1"}}
}
];\)\)

Export["plochafazrych3D3.jpg", plochafazrych3D3, "JPEG", 
        ImageSize -> {800, 600}];