CoCalc Shared FilesZordano_matrica_pavyzdys_3.sagewsOpen in CoCalc with one click!
Author: Paulius Drungilas
Views : 23
# Kaip papildyti vektorių sistemą iki erdvės bazės? def papildom_poerdviai(W, V): """ Gražina tiesinės erdvės V poerdvio W papildinio iki V bazę. Kitaip sakant, randa tokį poerdvį U, kad V yra W ir U tiesioginė suma ir gražina jo bazę. """ Q, pi, lift = V.quotient_abstract(W) Basis = [lift(v) for v in Q.basis()] return Basis # pi yra projekcijos atvaizdis iš erdvės V į faktorerdvę V/W: pi(v) = v + W. # lift yra "atvirkštinis" atvaizdis iš faktorerdvės Q = V/W į erdvę V, tenkinantis # lygybę pi(lift(u)) = u su visais u iš Q. def papildom(vec, V): """ Tiesinės erdvės V vektorių šeimą vec papildo vektoriais v1,..., vn iki erdvės V bazės ir gražina papildytus vektorius v1,..., vn. """ return papildom_poerdviai(V.span(vec), V)
# Pavyzdžiui, vec = [vector([1,0,0]),vector([1,1,0])] papildom(vec, QQ^3)
[(0, 0, 1)]
# Matricos objektas paverstas simbolių eilute (su metodu A.dumps()) s = "x\x9cm\x8eMN\xc30\x10\x85\xf9+\x84\x9cb\x96\xb0\x98(I\x9b\x10.\xc0&\x82E\xaa\xae#\xe3L\x8bi0\xf1O\x10\x1b$v\xa8\xf7\xe0\xa0\xd8V\xca*\x0b\x8fgF\xdf{o\xbe\xcf\xb8a;J\xde\x98\xd5\xe2s\xfa\xd2x\x94\x83\xe0\xfb\x9ebuz3\x03\xb4\x9aY\xf1.Y\xdfv$\r\xc5\x8f\xb3[5y\x1b\xabGnGM\xc9(\x85\x1a\xa9\xd54h2$m\xe0]\x98\xa6n\xe4Np>\x97e\x06\xc6\x8f\x11\xeb\xd0\xab\x8b\xe9(-\xe4\xce$\xff\xb1[A}\x177\xd3\xf8\x10&\xb5\xb8m\xd4e\x1d\xd5\xd1a\xb3\xd8\xf6BZue\xbf~T\xd4\xa8\xeb\xc3\xd3\xe6\x17\xb3; \x10\x80% A\x01\x98\x03f\xae\xbe\xc2\x07d\xae\xe1\x80\x030\xc0UXg\xd6\xa1\x16\xd0-\xf6PA\n\xb8\xf4\xda{\xc0\nVPzf\xb2\xf0\xa0\n\xe0\xcb\x11\xc4\xactN2Dy\xb5\xf3+\\I\xbd \x05\xff\x96n\[email protected]\xc7\x18x\x86\xde;\xe7P\xd4'\xb6Qq\xf2\x07\xb4_\x81s" A = loads(s) # Iš simbolių eilutės atkuria matricos objektą.
# 2 pavyzdys. Rasime matricos show(A)
(3914186145218331331225104161182910208031898461526118261017803381023620815102020317223281121925)\displaystyle \left(\begin{array}{rrrrrrrr} -39 & 14 & 18 & -6 & -14 & 5 & -2 & -1 \\ -83 & 31 & 33 & -12 & -25 & 10 & -4 & -1 \\ -61 & 18 & 29 & -10 & -20 & 8 & 0 & -3 \\ 18 & -9 & -8 & 4 & 6 & -1 & 5 & -2 \\ -61 & 18 & 26 & -10 & -17 & 8 & 0 & -3 \\ -38 & 10 & 23 & -6 & -20 & 8 & 1 & -5 \\ 1 & 0 & -2 & 0 & 2 & 0 & 3 & 1 \\ 72 & -23 & -28 & 11 & 21 & -9 & 2 & 5 \end{array}\right)
# Žodano formą ir atitinkamą bazę.

Sprendimas

# Randame matricos charakteristinį polinomą: p = A.charpoly(var = 't') show(p.factor())
(t3)8\displaystyle (t - 3)^{8}
# Nagrinėjame matricą B := A-3*E ir skaičiuojame jos laipsnių branduolių dimensijas: B = A - 3*matrix.identity(8) show(B)
(4214186145218328331225104161182610208031898161526118261020803381023620515102020017223281121922)\displaystyle \left(\begin{array}{rrrrrrrr} -42 & 14 & 18 & -6 & -14 & 5 & -2 & -1 \\ -83 & 28 & 33 & -12 & -25 & 10 & -4 & -1 \\ -61 & 18 & 26 & -10 & -20 & 8 & 0 & -3 \\ 18 & -9 & -8 & 1 & 6 & -1 & 5 & -2 \\ -61 & 18 & 26 & -10 & -20 & 8 & 0 & -3 \\ -38 & 10 & 23 & -6 & -20 & 5 & 1 & -5 \\ 1 & 0 & -2 & 0 & 2 & 0 & 0 & 1 \\ 72 & -23 & -28 & 11 & 21 & -9 & 2 & 2 \end{array}\right)
# Matricos B branduolys ker B ir jo dimensija: L1 = B.left_kernel() L1.dimension()
3
# Matricos B^2 branduolys ker B^2 ir jo dimensija: L2 = (B**2).left_kernel() L2.dimension()
6
# Matricos B^3 branduolys ker B^3 ir jo dimensija: L3 = (B**3).left_kernel() L3.dimension()
7
# Matricos B^4 branduolys ker B^4 ir jo dimensija: L4 = (B**4).left_kernel() L4.dimension()
8
# Poerdvio L3 bazę pildant iki erdvės L4 bazės, reikia pridėti 1 vektorių, kurį # atitiks lygiai vianas 4-os eilės Žordano langelis. # Rasime šį vektorių: v1 = papildom(L3.basis(), L4)[0] v1
(1, 0, 0, 0, 0, 0, 0, 0)
# Suskaičiuojame dar tris vektorius: v2 = v1*B # priklauso L3 v3 = v2*B # priklauso L2 v4 = v3*B # priklauso L1 v2 v3 v4
(-42, 14, 18, -6, -14, 5, -2, -1) (-14, 3, 5, -3, -3, 2, 1, -1) (16, -6, -5, 2, 4, -2, 1, 0)
# Vektorius v1, v2, v3 ir v4 atitinka lygiai vianas 4-os eilės Žordano langelis. # Poerdvio L2 bazę pildant iki erdvės L3 bazės, reikia pridėti 1 vektorių. # Tačiau poerdvyje L3 jau turime vektorių v2, kuris nepriklauso L2. Todėl # 3-os eilės Žordano langelių nebus. # Poerdvio L1 bazę pildant iki erdvės L2 bazės, reikia pridėti 6-3=3 vektorius. # Vieną vektorių jau turime: vektorius v3 priklauso L2, bet nepriklauso L1. # Taigi vektorių šeimą {v3, L1 bazė} pildant iki L2 bazės, reikės pridėti # lygiai 2 vektorius. Kiekvieną iš šių vektorių atitiks 2-os eilės Žordano # langelis. Rasime šiuos vektorius: vektoriai = papildom(L1.basis()+[v3], L2) v5 = vektoriai[0] v7 = vektoriai[1] v5 v7
(1, 0, 0, 0, 0, 0, 1/2, 1/2) (0, 1, 0, 0, 0, 0, 0, 1)
# Suskaičiuojame dar du vektorius: v6 = v5*B # priklauso L1 v8 = v7*B # priklauso L1 v6 v8
(-11/2, 5/2, 3, -1/2, -5/2, 1/2, -1, 1/2) (-11, 5, 5, -1, -4, 1, -2, 1)
# Vektorius v5, v6 atitinka vienas 2-os eilės Žordano langelis, o # vektorius v7, v8 -- dar vienas 2-os eilės Žordano langelis. # Taigi radome Žordano bazę v1,v2,...,v8. # Perėjimo matrica (iš standartinės bazės į Žordano bazę): T = matrix(QQ,8,8,[v1,v2,v3,v4,v5,v6,v7,v8]) show(T)
(10000000421418614521143533211166524210100000121211252312521211201000001115514121)\displaystyle \left(\begin{array}{rrrrrrrr} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ -42 & 14 & 18 & -6 & -14 & 5 & -2 & -1 \\ -14 & 3 & 5 & -3 & -3 & 2 & 1 & -1 \\ 16 & -6 & -5 & 2 & 4 & -2 & 1 & 0 \\ 1 & 0 & 0 & 0 & 0 & 0 & \frac{1}{2} & \frac{1}{2} \\ -\frac{11}{2} & \frac{5}{2} & 3 & -\frac{1}{2} & -\frac{5}{2} & \frac{1}{2} & -1 & \frac{1}{2} \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 1 \\ -11 & 5 & 5 & -1 & -4 & 1 & -2 & 1 \end{array}\right)
# Pradinės matricos Žordano matrica: show(T*A*(T^(-1)))
(3100000003100000003100000003000000003100000003000000003100000003)\displaystyle \left(\begin{array}{rrrrrrrr} 3 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 3 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 3 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 3 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 3 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 3 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 3 & 1 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 3 \end{array}\right)

(3100000003100000003100000003000000003100000003000000003100000003) \left(\begin{array}{rrrrrrrr} \color{red}{3} & \color{red}{1} & \color{red}{0} & \color{red}{0} & 0 & 0 & 0 & 0 \\ \color{red}{0} & \color{red}{3} & \color{red}{1} & \color{red}{0} & 0 & 0 & 0 & 0 \\ \color{red}{0} & \color{red}{0} & \color{red}{3} & \color{red}{1} & 0 & 0 & 0 & 0 \\ \color{red}{0} & \color{red}{0} & \color{red}{0} & \color{red}{3} & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & \color{blue}{3} & \color{blue}{1} & 0 & 0 \\ 0 & 0 & 0 & 0 & \color{blue}{0} & \color{blue}{3} & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & \color{blue}{3} & \color{blue}{1} \\ 0 & 0 & 0 & 0 & 0 & 0 & \color{blue}{0} & \color{blue}{3} \end{array}\right)

T.columns?