3.4. ŘEŠENÝ PŘÍKLAD 115 1 1 1 1 3 1 Obrázek 3.8: Část výsledné kuželové plochy 3.4 Řešení Příkladu 1 (str.55) v programu Maple Zadání: Vyšetřete kvadriku [], [5] 7x +6y +5z 4xy 4yz x +4y +z +3=. (3.1) Kompletní kód řešení v Maple: Poznámka: Výstupy některých příkazů kódu nejsou v textu uvedeny. Většinou se jedná o případy, kdy výstup pouze kopíruje zadaný příkaz. > restart; > with(linearalgebra): with(linalg): with(plots): Obecnou rovnici kvadriky můžeme zapsat a vytvořit užitím matice kvadriky K: > X:=Vector[row]([x,y,z,1]); > K:=Matrix(a,1..4,1..4,shape=symmetric); a(1, 1) a(1, ) a(1, 3) a(1, 4) K := a(1, ) a(, ) a(, 3) a(, 4) a(1, 3) a(, 3) a(3, 3) a(3, 4) a(1, 4) a(, 4) a(3, 4) a(4, 4) > Kvadrika:=sort(expand(X.K.Transpose(X)),[x,y,z])=; Kvadrika := a(1, 1) x +a(1, ) xy+a(1, 3) xz+a(, ) y +a(, 3) yz +a(3, 3) z +a(1, 4) x +a(, 4) y +a(3, 4) z +a(4, 4) = Rovnice kvadriky dle zadání: > RovKv:=7*x^+6*y^+5*z^-4*x*y-4*y*z-*x+4*y+*z+3=;
116 KAPITOLA 3. UŽITÍ MAPLE PŘI ŘEŠENÍ KVADRIK Hodnoty koeficientů rovnice dané kvadriky, potřebné pro vytvoření její matice, získáme porovnáním obecného tvaru rovnice kvadriky Kvadrika s danou konkrétní rovnicí RovKv. To vede na soustavu jednoduchých rovnic SoustRovKoef, z nichž každá má jako neznámou jeden z koeficientů a(1,1),..., a(4,4) (viz následující řádky kódu). Poznámka: Mohli jsme také určit každý koeficient zvlášť opakovaným použitím funkce coeff na levou stranu rovnice RovKv. > SoustRovKoef:={coeffs(lhs(collect(RovKv-Kvadrika, [x,y,z],distributed)))}; > KoefRovKv:=solve(SoustRovKoef,{a(1,1),a(1,),a(1,3), a(1,4),a(,),a(3,3),a(,3),a(,4),a(3,4),a(4,4)}); Rovnosti a(i,j)=číslo převedeme na přiřazovací příkazy užitím funkce assign. > assign(koefrovkv); Tím se do obecného tvaru matice kvadriky K dosadí konkrétní hodnoty. Matice K dané kvadriky má pak tvar: > K; 7 11 6 1 5 1 11 1 1 3 Diskriminant kvadriky > Delta:=det(K); := 97 Diskriminant je různý od nuly. Kvadrika je tedy regulární. Hlavní minor kvadriky A 44 > SubK:=submatrix(K,1..3,1..3); 7 SubK := 6 5 > A44:=det(SubK); A44 := 16 Hlavní minor kvadriky A 44 je různý od nuly. Kvadrika je tedy středová. Charakteristická rovnice kvadriky Nejprve vytvoříme jednotkovou matici E:
3.4. ŘEŠENÝ PŘÍKLAD 117 > E:=evalm(array(1..3,1..3,identity)); 1 E := 1 1 Potom definujeme matici ChM příslušné homogenní soustavy, která vede k charakteristické rovnici ChR: > ChM:=evalm(SubK-lambda*E); 7 λ ChM := 6 λ 5 λ > ChR:=det(ChM)=; ChR := 16 99 λ +18λ λ 3 = Kořeny charakteristické rovnice jsou vlastní čísla kvadriky: > ResChR:=solve(ChR,lambda); ResChR := 3, 6, 9 Pro snazší manipulaci můžeme vlastní čísla zapsat jako složky vektoru (uspořádané trojice) λ : > lambda:=[reschr]; λ := [3, 6, 9] Potom ke konkrétnímu vlastnímu číslu přistoupíme prostřednictvím odpovídajícího indexu (pořadového čísla v uspořádané trojici): > lambda[1]; lambda[]; lambda[3]; 3 6 9 Kanonický tvar rovnice kvadriky Absolutní člen rovnice A 44 : > Delta/A44; 6 > kr:=lambda[1]*x^+lambda[]*y^+9*z^=-delta/a44; kr := 3 x +6y +9z =6 Konečná podoba kanonického tvaru rovnice dané kvadriky: > KanRovKv:=kr/(abs(Delta/A44)); KanRovKv := x + y + 3 z =1
118 KAPITOLA 3. UŽITÍ MAPLE PŘI ŘEŠENÍ KVADRIK Danou kvadrikou je trojosý elipsoid. Délky poloos elipsoidu: > a=sqrt(1/coeff(lhs(kanrovkv),x,)); > b=sqrt(1/coeff(lhs(kanrovkv),y,)); > c=sqrt(1/coeff(lhs(kanrovkv),z,)); a = b =1 6 c = 3 Zobrazení elipsoidu v transformované soustavš souřadnic provedeme pomocí funkce implicitplot > implicitplot3d(kanrovkv,x=-..,y=-..,z=-..,grid=[3,3,3], style=patchcontour,orientation=[4,55],axes=frame,tickmarks=[3,3,3], color=color(rgb,5/55,5/55,5/55),light=[9,-5,1,1,1]); z y x Vyšetření polohy kvadriky v původní soustavě souřadnic Souřadnice středu kvadriky. Uvažujme vzájemnou polohu přímky Primka a dané kvadriky RovKv: > Primka:=[x=m+t*u,y=n+t*v,z=p+t*w]; > RovKv; 7 x +6y +5z 4 xy 4 yz x +4y +z +3= Dosazení parametrických rovnic přímky za x, y, a z do rovnice kvadriky vede k následující rovnici s proměnnou t :
3.4. ŘEŠENÝ PŘÍKLAD 119 > RovKvPr:=simplify(eval(RovKv,Primka)); RovKvPr := 7 m +14mtu+7t u +6n +1ntv+6t v +5p +1ptw +5 t w 4 mn 4 mtv 4 tun 4 t uv 4 np 4 ntw 4 tvp 4 t vw m tu+4n +4tv+p +tw+3= Rovnici můžeme zapsat ve tvaru At + Bt+ C =, kde koeficienty A, B, C mají následující tvar: > A:=coeff(lhs(RovKvPr),t^); A := 7 u +6v +5w 4 uv 4 vw > B:=1/*coeff(lhs(RovKvPr),t); B := 7 mu+6nv+5pw mv un nw vp 11 u +1v + w > C:=coeff(lhs(RovKvPr),t,); C := 7 m +6n +5p 4 mn 4 np m +4n +p +3 Středem kvadriky je bod S =[m, n, p], pro jehož souřadnice je koeficient B roven nule, tj. B =, bez ohledu na souřadnice [u, v, w] směrového vektoru přímky. > B1:=collect(B,[u,v,w]); B1 := (7 m 11 n) u +(6n m +1 p) v +( n +5p +1)w Souřadnice středu kvadriky tak určíme řešením následující homogenní soustavy rovnic s neznámými m, n, p : > RStr:=coeffs(B1,[u,v,w]); RStr := 6 n m +1 p, n +5p +1, 7 m 11 n > RStr_res:=solve({RStr},{m,n,p}); Střed kvadriky: RStr res := {m =1,p= 1, n= } > S:=eval([m,n,p],RStr_res); Hlavní směry kvadriky S := [1,, 1] Řešíme příslušné homogenní soustavy rovnic, postupně pro všechny tři vlastní čísla. 1) λ 1 =3 > MatHlSm1:=evalm(SubK-lambda[1]*E);
1 KAPITOLA 3. UŽITÍ MAPLE PŘI ŘEŠENÍ KVADRIK MatHlSm1 := 4 3 > RovHlSm1:=geneqns(MatHlSm1,[u,v,w]); RovHlSm1 := { u +3v w =, v +w =, 4 u v =} > HlSm1:=solve(RovHlSm1,{u,v,w}); > u1:=eval([u,v,w],hlsm1); HlSm1 := {v =u, w =u, u = u} u1 := [u, u, u] Hlavní směr u 1 : > u1:=eval(u1,u=1); u1 := [1,, ] ) λ =6 > MatHlSm:=evalm(SubK-lambda[]*E); 1 MatHlSm := 1 > RovHlSm:=geneqns(MatHlSm,[u,v,w]); RovHlSm := {u v =, v w =, u w =} > HlSm:=solve(RovHlSm,{u,v,w}); > u:=eval([u,v,w],hlsm); HlSm := {u =v, w = v, v = v} u := [ v, v, v] Hlavní směr u : > u:=eval(u,v=1); u := [, 1, ] 3) λ 3 =9 > MatHlSm3:=evalm(SubK-lambda[3]*E); MatHlSm3 := 3 4
3.4. ŘEŠENÝ PŘÍKLAD 11 > RovHlSm3:=geneqns(MatHlSm3,[u,v,w]); RovHlSm3 := { u v =, u 3 v w =, v 4 w =} > HlSm3:=solve(RovHlSm3,{u,v,w}); HlSm3 := {u =w, v = w, w = w} > u3:=eval([u,v,w],hlsm3); Hlavní směr u 3 : > u3:=eval(u3,w=1); u3 := [ w, w, w] u3 := [,, 1] Hlavní roviny Odvodíme obecnou rovnici průměrové roviny sdružené se směrem [u, v, w] > U:=Vector[row]([u,v,w,]); U := [u, v, w, ] > PrumerR:=collect(expand(evalm(U&*K&*Transpose(X))),[x,y,z])=; PrumerR := (7 u v) x +( u +6v w) y +( v +5w) z 11 u +1v + w = Postupným dosazením hlavních směrů dostaneme obecné rovnice příslušných hlavních rovin: > HlR1:=eval(PrumerR,[u=u1[1],v=u1[],w=u1[3]]); > HlR:=eval(PrumerR,[u=u[1],v=u[],w=u[3]]); > HlR3:=eval(PrumerR,[u=u3[1],v=u3[],w=u3[3]]); HlR1 := 3 x +6y +6z +15= HlR := 1 x +6y 1 z 1 = HlR3 := 18 x 18 y +9z 45 = Zobrazení kvadriky v původní poloze spolu s jejími osami a hlavními rovinami Můžeme si definovat barvu(y) pro obarvení grafu(ů): > col1:=color(rgb,5/55,5/55,5/55): Jednotlivé grafy uložíme do proměnných: 1) Kvadrika: > Kvg:=implicitplot3d(RovKv,x=-..3,y=-4..,z=-3..,axes=frame, color=col1,style=patchnogrid,grid=[4,4,4],light=[6,,1,1,1], tickmarks=[3,3,3],orientation=[5,63],scaling=constrained):
1 KAPITOLA 3. UŽITÍ MAPLE PŘI ŘEŠENÍ KVADRIK ) Osy elipsoidu: > o1g:=plot3d(evalm(s+t*u1),t=-..,j=-1..1,thickness=3): > og:=plot3d(evalm(s+t*u),t=-..,j=-1..1,thickness=3): > o3g:=plot3d(evalm(s+t*u3),t=-..,j=-1..1,thickness=3): 3) Hlavní roviny: > HlR1g:=plot3d(solve(HlR1,z),x=-..3,y=-4..,color=grey, style=patchnogrid,contours=6): > HlRg:=plot3d(solve(HlR,z),x=-..3,y=-4..,color=red, style=patchnogrid,contours=6): > HlR3g:=plot3d(solve(HlR3,z),x=-..3,y=-4..,color=green, style=patchnogrid,contours=6): K zobrazení více grafů v jedné soustavě použijeme příkaz plots[display]: > display(kvg,o1g,og,o3g,hlr1g,hlrg,hlr3g,axes=frame, scaling=constrained,orientation=[143,75],view=[-..3,-4..,-3..]); z x 1 y 3 4
Závěr V této publikaci jsme se seznámili se základy teorie kvadrik, která navazuje na teorii kuželoseček. Po úvodní teoretické části, která se zabývá obecnými vlastnostmi kvadratických ploch, jsou ve druhé části studovány vlastnosti jednotlivých kvadrik se zřetelem k jejich použití v praxi. Svými jedinečnými vlastnostmi jsou kvadriky nedílnou součástí našeho života. 13