Diszkrét matematika III gyakorlat
Linkek:
4.2(b),
4.2(e),
4.2(f),
4.4(b),
4.4(f)
4.5(c),
4.2(b) újratöltve,
4.6(c)
Bemelegítés
var('x,y')
show(implicit_plot(x^2+y^2==1, (x,-4,4), (y,-4,4)))
4.2(b) feladat
Szintvonal:
var('x1,x2')
def f(x1,x2):
return -4*x1^2+4*x1*x2-4*x2^2
@interact
def Q42b_gorbe(c=slider(-4, 1, 1, default=-1)):
show(implicit_plot(f(x1,x2)==c, (x1,-1,1), (x2,-1,1)))
Felület:
@interact
def Q42b_felulet(c=slider(-4, 1, 1, default=1)):
felulet=plot3d(f, (x1,-1,1), (x2,-1,1), aspect_ratio=[1,1,0.2])
sik=plot3d(c, (x1,-1,1), (x2,-1,1), color="yellow")
show(felulet+sik)
Szintvonalak:
contour_plot(f(x1,x2), (x1,-1,1), (x2,-1,1))
4.2(e) feladat
Szintfelület:
var('x1,x2,x3')
def f(x1,x2,x3):
return x1^2+6*x2^2+4*x3^2+4*x1*x2-4*x2*x3
@interact
def Q42e(c=slider(-1, 4, 1, default=3)):
felulet=implicit_plot3d(f(x1,x2,x3)==c, (x1,-4,4), (x2,-4,4), (x3,-4,4))
show(felulet)
4.2(f) feladat
Szintfelület:
var('x1,x2,x3')
def f(x1,x2,x3):
return 2*x1*x3-2*x1*x2-2*x2*x3
@interact
def Q42e(c=slider(-3, 4, 1, default=4)):
felulet=implicit_plot3d(f(x1,x2,x3)==c, (x1,-4,4), (x2,-4,4), (x3,-4,4))
show(felulet)
4.4(b) feladat
v = arrow((0,0), (10,10), color='blue')
u = arrow((0,0), (1,7), color='red')
u_parh = arrow((0,0), (4,4), color='lightblue')
u_mer = arrow((4,4), (1,7), color='orange')
show(v+u+u_parh+u_mer,aspect_ratio=1)
4.4(f) feladat
v = arrow3d((0,0,0), (2,3,-1), 7, color='blue')
u = arrow3d((0,0,0), (-4,14,6), 7, color='red')
u_parh = arrow3d((0,0,0), (4,6,-2), 7, color='lightblue')
u_mer = arrow3d((4,6,-2), (-4,14,6), 7, color='orange')
nv = arrow3d((0,0,0), (4,-1,5), 7, color='black')
var('x,y,z')
S=implicit_plot3d(4*x-y+5*z==0, (x,-9,5), (y,-1,15), (z,-3,9), color='yellow')
show(u+u_parh+u_mer+v, aspect_ratio=[1,1,1])
4.5(c) feladat
u1 = arrow3d((0,0,0), (1,0,0), 2, color='green')
u2 = arrow3d((0,0,0), (2,3,0), 2, color='red')
u3 = arrow3d((0,0,0), (1,6,1), 2, color='blue')
v2 = arrow3d((0,0,0), (0,3,0), 2, color='pink')
v3 = arrow3d((0,0,0), (0,0,1), 2, color='lightblue')
doboz = line3d([(1,6,1),(1,0,1),(0,0,1),(0,6,1),(1,6,1),(1,6,0),(0,6,0),(0,6,1),(0,6,0),(0,0,0),(0,0,1),(0,0,0),(1,0,0),(1,0,1),(1,0,0),(1,6,0)],color="gray")
var('x,y,z')
S=implicit_plot3d(z==0, (x,-1,4), (y,-1,7), (z,-1,4), color='yellow')
show(u1+u2+u3, aspect_ratio=[1,1,1],frame=false)
4.2(b) feladat újratöltve
Í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 f(x1,x2):
return -4*x1^2+4*x1*x2-4*x2^2
def g(x1,x2):
return -6*x1^2-2*x2^2
ellipszis_f = implicit_plot(f(x1,x2)==-2, (x1,-1,1), (x2,-1,1), color="blue")
ellipszis_g = implicit_plot(g(x1,x2)==-2, (x1,-1,1), (x2,-1,1), color="yellow")
v1 = arrow((0,0), (-1,1), color='red')
v2 = arrow((0,0), (1,1), color='red')
show(ellipszis_f, aspect_ratio=1)
4.6(c) feladat
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 f(x1,x2,x3):
return 16*x1^2 + 8*x1*x2 + 10*x2^2 + 4*x1*x3 - 8*x2*x3 + 16*x3^2
def g(x1,x2,x3):
return 18*x1^2+18*x2^2+6*x3^2
felulet_f=implicit_plot3d(f(x1,x2,x3)==60, (x1,-4,4), (x2,-4,4), (x3,-4,4), color="blue", opacity=0.9)
felulet_g=implicit_plot3d(g(x1,x2,x3)==60, (x1,-4,4), (x2,-4,4), (x3,-4,4), color="yellow", opacity=0.9)
v1 = arrow3d((0,0,0), (-1,2,1), 2, color='red')
v2 = arrow3d((0,0,0), (1,0,1), 2, color='red')
v3= arrow3d((0,0,0), (1,1,-1), 2, color='red')
show(felulet_f)
Üres cellák