Kvadratikus alakok
Kétváltozós kvadratikus alak ábrázolása
Szintvonal:
var('x1,x2')
def f(x1,x2):
return x1^2-x2^2
@interact
def Q2_gorbe(c=slider(-4, 4, 1, default=1)):
show(implicit_plot(f(x1,x2)==c, (x1,-2,2), (x2,-2,2)))
Szintvonalak:
contour_plot(f(x1,x2), (x1,-2,2), (x2,-2,2))
Felület:
@interact
def Q2_felulet(c=slider(-4, 4, 1, default=1)):
felulet=plot3d(f, (x1,-2,2), (x2,-2,2), aspect_ratio=[1,1,0.2])
sik=plot3d(c, (x1,-2,2), (x2,-2,2), color="yellow")
show(felulet+sik)
Háromváltozós kvadratikus alak ábrázolása
Szintfelület:
var('x1,x2,x3')
def f(x1,x2,x3):
return 2*x1^2+x2^2-x3^2
@interact
def Q3(c=slider(-4, 4, 1, default=1)):
felulet=implicit_plot3d(f(x1,x2,x3)==c, (x1,-2,2), (x2,-2,2), (x3,-2,2))
show(felulet)
Kétváltozós kvadratikus alak főtengelytranszformációja
Tekintsük a $q(x_1,x_2) = 4x_1^2 + 4x_1x_2 + 4x_2^2$ kvadratikus alakot.
Írjuk fel a kvadratikus alak mátrixát és határozzunk meg egy sajátbázist:
%display latex
A = matrix(QQ, [[4,2], [2,4]])
E = matrix(QQ, [[1,0], [0,1]])
A, A-x*E, (A-x*E).det(), (A-x*E).det().roots()
#l = 6
#(A-l*E), (A-l*E).rref()
A sajátértékek megadják az ellipszis alakját, a sajátvektorok pedig az ellipszis tengelyeinek állását:
var('x1,x2')
def q(x1,x2):
return 4*x1^2+4*x1*x2+4*x2^2 #az eredeti kvadratikus alak
def k(x1,x2):
return 4*x1^2+3*x2^2 #a(z egyik) kanonikus alak
def s(x1,x2):
return 6*x1^2+2*x2^2 #ez jön ki a spektráltételből
ellipszis_q = implicit_plot(q(x1,x2)==1, (x1,-1,1), (x2,-1,1), color="blue")
ellipszis_k = implicit_plot(k(x1,x2)==1, (x1,-1,1), (x2,-1,1), color="red")
ellipszis_s = implicit_plot(s(x1,x2)==1, (x1,-1,1), (x2,-1,1), color="green")
f1 = arrow((0,0), (1/sqrt(2),1/sqrt(2)), color='black')
f2 = arrow((0,0), (-1/sqrt(2),1/sqrt(2)), color='black')
show(ellipszis_q+ellipszis_k, aspect_ratio=1)
Háromváltozós kvadratikus alak főtengelytranszformációja
Adjuk meg az $\mathbb{R}^3$ euklideszi térnek az alábbi mátrix(hoz tartozó lineáris transzformáció) sajátvektoraiból álló ortogonális bázisát.
$$
A =
\begin{pmatrix}
16 & 4 & 2 \\
4 & 10 & -4 \\
2 & -4 & 16
\end{pmatrix}
$$
Határozzunk meg egy sajátbázist:
%display latex
A = matrix(QQ, [[16,4,2], [4,10,-4], [2,-4,16]])
E = matrix(QQ, [[1,0,0], [0,1,0], [0,0,1]])
A, (A-x*E).det().expand(), (A-x*E).det().roots()
#l = 6
#(A-l*E), (A-l*E).rref()
Tehát $6$ egyszeres sajátérték, $18$ pedig kétszeres sajátérték. A hozzájuk tartozó sajátalterek:
$$
S_6 = [(-1,2,1)], \qquad S_{18} = [(2,1,0),\,(1,0,1)]
$$
Az $S_{18}$ sajátaltér fenti bázisa nem ortogonális. Gram–Schmidt-ortogonalizációval kapjuk az $(1,0,1),\,(1,1,-1)$ ortogonális bázist $S_{18}$-ban. Ezek a vektorok merőlegesek $S_6$ bázisvektorára (szimmetrikus mátrixnál a különböző sajátértékekhez tartozó sajátvektorok mindig merőlegesek).
Ezzel megkaptuk az $\mathbb{R}^3$ euklideszi térnek az $A$ mátrix sajátvektoraiból álló ortogonális bázisát:
$$
v_1 = (-1,2,1), \quad v_2 = (1,0,1), \quad v_2 = (1,1,-1).
$$
Az $A$ mátrixhoz tartozó kvadratikus alak:
var('x1,x2,x3')
xv = matrix([[x1,x2,x3]])
(xv*A*xv.transpose()).expand()
A sajátvektorok megadják a kvadratikus alak szintfelületeinek tengelyeit:
def q(x1,x2,x3):
return 16*x1^2 + 8*x1*x2 + 10*x2^2 + 4*x1*x3 - 8*x2*x3 + 16*x3^2
#az eredeti kvadratikus alak
def s(x1,x2,x3):
return 18*x1^2+18*x2^2+6*x3^2
#ez jön ki a spektráltételből
felulet_q=implicit_plot3d(q(x1,x2,x3)==10, (x1,-2,2), (x2,-2,2), (x3,-2,2), color="blue", opacity=0.5)
felulet_s=implicit_plot3d(s(x1,x2,x3)==10, (x1,-2,2), (x2,-2,2), (x3,-2,2), color="yellow", opacity=0.5)
f1 = arrow3d((0,0,0), (-1,2,1), 2, color='red')
f2 = arrow3d((0,0,0), (1,0,1), 2, color='red')
f3= arrow3d((0,0,0), (1,1,-1), 2, color='red')
show(felulet_q)
Üres cellák