Krzywe drugiego stopnia

Magdalena Rusaczonek
II rok fizyki
Wydział Fizyki, Astronomii i Informatyki Stosowanej
Uniwesytet Jagielloński 
magdalena.rusaczonek@uj.edu.pl

Wstęp

Definicja

Krzywą drugiego stopnia (krzywą stożkową [1]) nazywamy krzywą płaską powstałą przez przecięcie płaszczyzną powierzchni stożkowej, której kierującą jest okrąg. W kartezjańskim układzie współrzędnych krzywe drugiego stopnia można opisać równaniem algebraicznym drugiego stopnia względem zmiennych x i y.

Czynności wstępne

ClearAll["Global`*"];
Precyzja=10; (*Parametr decydujący o dokładności rysunków*)
ParametrKontrolny=0; (*Kontrola czy istnieją rozwiąznia rzeczywiste*)

Rodzaje krzywych stożkowych

Krzywe drugiego stopnia można sklasyfikować zależnie od kąta, jaki tworzy płaszczyzna przecinająca z osią stożka i jego tworzącą. Wyróżnia się :

Okrąg

Gdy kąt pomiędzy płaszczyzną przecinającą a osią stożka jest równy 90°, czyli płaszczyzna tnąca jest prostopadła do osi stożka mamy do czynienia z okręgiem.

StozekOkrąg=RegionPlot3D[((z^2)+(y^2)≤((((x/5)))^2)&&x≤0.5)||((((z))^2)+(((y))^2)≤((((((x))/5)))^2)&&x>=0.55),{x,0,1},{y,-0.2,0.2}, {z,-0.2,0.2}, Axes->False, Boxed->False,Mesh->None,PlotPoints->Precyzja,PlotStyle->Directive[Specularity[White, 100],Opacity[0.95],Purple], ImageSize->500]

Elipsę

Gdy kąt pomiędzy płaszczyzną przecinającą a osią stożka jest większy od kąta między tworzącą a osią stożka, wówczas krzywą stożkową jest elipsa. Szczególnym przypadkiem elipsy jest okrąg.

StozekElipsa=RegionPlot3D[((z^2)+(y^2)≤((((x/5)))^2)&&x+y≤0.5)||((((z))^2)+(((y))^2)≤((((x/5)))^2)&&x+y>=0.55),{x,0,1},{y,-0.2,0.2}, {z,-0.2,0.2}, Axes->False, Boxed->False,Mesh->None,PlotPoints->Precyzja,PlotStyle->Directive[Specularity[White, 100],Opacity[0.95],Pink], ImageSize->500]

Parabolę

Gdy kąt pomiędzy płaszczyzną tnącą a osią stożka jest równy kątowi pomiędzy osią stożka a jego tworzącą, czyli tworząca jest równoległa do płaszczyzny tnącej, wówczas krzywą stożkową jest parabola.
W szczególnym przypadku, gdy płaszczyzna tnąca pokrywa się z tworzącą, otrzymuje się prostą, która jednak nie zalicza się do krzywych stożkowych.

StozekParabola=RegionPlot3D[((z^2)+(y^2)≤((((x/5)))^2)&&x-5y≤0.5)||((((z))^2)+(((y))^2)≤((((((x))/5)))^2)&&x-5y>=0.6),{x,0,1},{y,-0.2,0.2}, {z,-0.2,0.2}, Axes->False, Boxed->False,Mesh->None,PlotPoints->Precyzja,PlotStyle->Directive[Specularity[White, 100],Opacity[0.95],Orange], ImageSize->500]

Hiperbolę

Gdy kąt pomiędzy płaszczyzną tnącą a osią stożka jest mniejszy od kąta pomiędzy osią stożka a jego tworzącą, krzywą stożkową jest hiperbola.  Hiperbola powstaje także, gdy płaszczyzna tnąca jest równoległa do osi stożka, ale jej nie obejmuje. W szczególnym przypadku, gdy oś stożka jest zawarta w płaszczyźnie tnącej, otrzymuje się parę przecinających się prostych, która nie zalicza się do krzywych stożkowych.

StozekHiperbola=RegionPlot3D[((z^2)+(y^2)≤((((x/5)))^2)&&x-20y≤0.65)||((((z))^2)+(((y))^2)≤((((((x))/5)))^2)&&x-20y>=0.90),{x,0,1},{y,-0.2,0.2}, {z,-0.2,0.2}, Axes->False, Boxed->False,Mesh->None,PlotPoints->Precyzja,PlotStyle->Directive[Specularity[White, 100],Opacity[0.95],Red], ImageSize->500]

Rysowanie krzywych drugiego stopnia

Równanie ogólne

Każdą krzywą drugiego stopnia można opisać w kartezjańskim układzie współrzędnych równaniem:

F[x_,y_]=a (x^2)+b (y^2)+c x y + d x + e y +f;

Aby zademonstrować zależność kształtu krzywej od współczynnków można posłużyć się poleceniem Manipulate. Poniższy wykres pozwala zaobserwować zmiany przebiegu krzywej w zależności od parametrów.

Manipulate[ ContourPlot[a1 (x^2)+b1 (y^2)+c1 x y + d1 x + e1 y +f1==0,{x,-15,15},{y,-15,15},Frame->False,PlotRange->Full,ContourStyle->{Red,Thick}],{a1,-1,2},{b1,-1,1},{c1,-3,1},{d1,-1,2},{e1,-1,2},{f1,-1,1}]

Rysowanie losowych krzywych

Losowanie współczynników

Współczynniki losowane będą ze zbioru liczb całkowitych {-10,...,10}.

a=RandomInteger[{-10,10}];
b=RandomInteger[{-10,10}];
c=RandomInteger[{-10,10}];
d=RandomInteger[{-10,10}];
e=RandomInteger[{-10,10}];
f=RandomInteger[{-10,10}];

Trójwymiarowy rysunek powierzchni

PunktWykresu=FindInstance[a (x^2)+b (y^2)+c x y + d x + e y +f==0,{x,y},Reals];
If[PunktWykresu !={},{x0=PunktWykresu[[1]][[1]][[2]], y0=PunktWykresu[[1]][[2]][[2]], ParametrKontrolny=1},{Print[Style["Nie ma rozwiązań rzeczywistych",18,Red]],ParametrKontrolny=0, x0=0, y0=0} ];

Funkcja=Plot3D[F[x,y],{x,x0-10,x0+10},{y,y0-10,y0+10},Mesh->None,PlotStyle->Directive[Specularity[Yellow,20]], Axes->False,Boxed->False, ColorFunction->Hue, ImageSize->500];

Płaszczyzna z = 0

Plaszczyzna=ContourPlot3D[z==0,{x,x0-10,x0+10},{y,y0-10,y0+10},{z,-4,4},Mesh->None,ContourStyle->Directive[Yellow,Opacity[0.6]]];

Przecięcie wylosowanej powierzchni z płaszczyzną z = 0

Show[Funkcja,Plaszczyzna]
If[ParametrKontrolny==0, Print[Style["Płaszczyzna z = 0 nie ma części wspólnej z krzywą zadaną wybranym równaniem",18,Red]],Print[Style["Graficzne przedstawienie fragmentu rozwiązania",18,Darker[Green]]]]

Dwuwymiarowy rysunek

Przeciecie =If[ParametrKontrolny==1, ContourPlot[F[x,y]==0,{x,x0-10,x0+10},{y,y0-10,y0+10}, Frame->False,ContourStyle->Directive[Green,Thick],ImageSize->500], Print[Style["Nie ma rozwiązań rzeczywistych",18,Red]]]

Rysowanie zadanych krzywych

Współczynniki można również zadać explicite, np.:

a=5;
b=1;
c=0;
d=2;
e=-2;
f=-2;

PunktWykresu2=FindInstance[a (x^2)+b (y^2)+c x y + d x + e y +f==0,{x,y},Reals];
If[PunktWykresu2 !={},{x0=PunktWykresu2[[1]][[1]][[2]], y0=PunktWykresu2[[1]][[2]][[2]],ParametrKontrolny=1},{Print[Style["Nie ma rozwiązań rzeczywistych",18,Red]],ParametrKontrolny=0, x0=0, y0=0} ];

Funkcja2=Plot3D[F[x,y],{x,x0-10,x0+10},{y,y0-10,y0+10},Mesh->None,PlotStyle->Directive[Specularity[Yellow,20]], Axes->False,Boxed->False,ColorFunction->Hue, ImageSize->500];
Plaszczyzna2=ContourPlot3D[z==0,{x,x0-10,x0+10},{y,y0-10,y0+10},{z,-4,4},Mesh->None,ContourStyle->Directive[Yellow,Opacity[0.6]]];
Show[Funkcja2,Plaszczyzna2]
Przeciecie2 =If[ParametrKontrolny==1,ContourPlot[F[x,y]==0,{x,x0-10,x0+10},{y,y0-10,y0+10}, Frame->False,ContourStyle->Directive[Green,Thick],ImageSize->500], Print[Style["Płaszczyzna z = 0 nie ma części wspólnej z krzywą zadaną wybranym równaniem",18,Red]]]
If[ParametrKontrolny==1,Print[Style["Graficzne przedstawienie fragmentu rozwiązania",18,Darker[Green]]]]

Równanie we współrzędnych biegunowych

Równanie

Każdą krzywą drugiego stopnia można przedstawić we współrzędnych biegunowych jako:

r=(p/(1+ϵ Cos[ϕ]));

gdzie r i ϕ to współrzędne punktów krzywej. p jest parametrem równym wartości r dla ϕ = 90°. ϵ jest mimośrodem stożkowej. Ze względu na wartość parametru ϵ można sklasyfikować krzywe:

ϵ=0-okrąg

0≤ϵ<1-elipsa

ϵ=1-parabola

ϵ>1-hiperbola

Przykład

Clear[r];

Rozważmy:

G[x_,y_]=(x^2)+(y^2)-1;

Rozwiązanie we współrzędnych kartezjańskich otrzymuje się używając polecenia Solve:

Rozwiazanie=Solve[{G[x,y]==0},{x,y}]

Rozwiązniem jest dwuelementowa rodzina krzywych. Rozważmy pierwszą z tych krzywych :

Rozwiazanie[[1]][[1]]

Podstawmy współrzędne biegunowe :

x:=r Cos[ϕ];
y:=r Sin[ϕ];

We współrzędnych biegunowych krzywa opisana jest przez:

Polarne[r_,ϕ_]=Rozwiazanie[[1]][[1]][[1]]-Rozwiazanie[[1]][[1]][[2]]

Wyliczamy stąd r:

RozwiazaniePol=Solve[Polarne[r,ϕ]==0,r]//FullSimplify

Otrzymuje się dwa rozwiązania, z czego to dla którego r < 0 należy odrzucić.

promien[ϕ_]=RozwiazaniePol[[2]][[1]][[2]];

Definiujemy p:

p:=promien[(π/2)];

Porównujemy otrzymane wyrażenie z formułą wyjściową :

Solve[promien[ϕ]==(p/(1+ϵ Cos[ϕ])),ϵ]//FullSimplify

Zgodnie z oczekiwaniem otrzymaliśmy wartość mimośrodu ϵ = 0.

Bibliografia

[1] Krzywe stożkowe.