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