CoCalc Shared FilesZordano_forma_pavyzdys_2.sagewsOpen in CoCalc with one click!
Author: Paulius Drungilas
Views : 26
# 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\x8eKN\xc30\x18\x84y\x15JN1KX8\xaa\xe34!\x17`S\xc1"U\xd7\x95q\xdc\x10\xd5u\xe2G$6H\xecP\x8f\xc7\x8dpC(B\xea\xc6\x9e\xff\xf7\xcc7\xfe\xb8\x10\x8e\xd72\xdeqo\x9b\xb7\xf1\x9aE\xbd\xee\x1a\xb1U22\xe7w\'\x0ck\xcb}\xd3j\xae\xd6\x95\xd4NFO\'\xb7fd;o{\xe1{+\xe3^7\xa6\x97k+;+\x9d\xd4~\xf0\x872+\xab^\x84\xc0\xe5\xa9.\xd7q\xf1[\xb1\x1c\xb4\xb9\x1a?e\x1b]\xbb\xf8X\xbbi\xa4\xaa\xa2r\x1c\x1f\x87\xc9L\xeeKs\xbd\x98.\xa6\xfb\xd5d\xa3\x1a\xed\xcd\x8d\x7f\xff4\xd3\xd2\xdc\xee\x9fW_\xf9\x16\x84\xe5 \x89C\x8b$\x88\x16t\x0eRCu E\x01\xf2P a\xc8^\x82%\x05\xabAh\x8d\xb6\x02\xe1A\x16\x19\x92\n9\x0bo\x02\xcc\x85\xb7\x1d\xb8\x02I\x034\xa5\x07\x10\xa3a9\x03mA\xba\[email protected]\n\xe4\xd9O\xcc\x0f1\[email protected]\xb1\xc3!\x90\xfe#%G\x92=\x90\xc8\xabE\xbeC\x16\x14\r\x8ey>4$=(_\x9c\xf9\xd2D\xf17\x1cQ\x8f0' A = loads(s) # Iš simbolių eilutės atkuria matricos objektą.
# 2 pavyzdys. Rasime matricos show(A)
(244103922471243716697297265672036811248781336294772277612454341148129379732562578133629776230761255421136333124341148129349732592557124621752167569442)\displaystyle \left(\begin{array}{rrrrrrrr} 244 & -103 & -92 & 24 & 71 & -24 & 37 & -16 \\ 697 & -297 & -265 & 67 & 203 & -68 & 112 & -48 \\ 781 & -336 & -294 & 77 & 227 & -76 & 124 & -54 \\ 341 & -148 & -129 & 37 & 97 & -32 & 56 & -25 \\ 781 & -336 & -297 & 76 & 230 & -76 & 125 & -54 \\ -21 & 13 & 6 & 3 & -3 & 3 & -12 & 4 \\ 341 & -148 & -129 & 34 & 97 & -32 & 59 & -25 \\ -571 & 246 & 217 & -52 & -167 & 56 & -94 & 42 \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)
(241103922471243716697300265672036811248781336297772277612454341148129349732562578133629776227761255421136330124341148129349732562557124621752167569439)\displaystyle \left(\begin{array}{rrrrrrrr} 241 & -103 & -92 & 24 & 71 & -24 & 37 & -16 \\ 697 & -300 & -265 & 67 & 203 & -68 & 112 & -48 \\ 781 & -336 & -297 & 77 & 227 & -76 & 124 & -54 \\ 341 & -148 & -129 & 34 & 97 & -32 & 56 & -25 \\ 781 & -336 & -297 & 76 & 227 & -76 & 125 & -54 \\ -21 & 13 & 6 & 3 & -3 & 0 & -12 & 4 \\ 341 & -148 & -129 & 34 & 97 & -32 & 56 & -25 \\ -571 & 246 & 217 & -52 & -167 & 56 & -94 & 39 \end{array}\right)
# Matricos B branduolys ker B ir jo dimensija: L1 = B.left_kernel() L1.dimension()
4
# Matricos B^2 branduolys ker B^2 ir jo dimensija: L2 = (B**2).left_kernel() L2.dimension()
7
# Matricos B^3 branduolys ker B^3 ir jo dimensija: L3 = (B**3).left_kernel() L3.dimension()
8
# Poerdvio L2 bazę pildant iki erdvės L3 bazės, reikia pridėti 1 vektorių, kurį # atitiks lygiai vianas 3-os eilės Žordano langelis. # Rasime šį vektorių: v1 = papildom(L2.basis(), L3)[0] v1
(1, 0, 0, 0, 0, 0, 0, 0)
# Suskaičiuojame dar du vektorius: v2 = v1*B # priklauso L2 v3 = v2*B # priklauso L1 v2 v3
(241, -103, -92, 24, 71, -24, 37, -16) (330, -143, -125, 29, 96, -32, 56, -23)
# Vektorius v1, v2 ir v3 atitinka lygiai vianas 3-os eilės Žordano langelis. # Poerdvio L1 bazę pildant iki erdvės L2 bazės, reikia pridėti 3 vektorius. # Vieną vektorių jau turime: vektorius v2 priklauso L2, bet nepriklauso L1. # Taigi vektorių šeimą {v2, 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()+[v2], L2) v4 = vektoriai[0] v6 = vektoriai[1] v4 v6
(1, 0, 0, 0, 0, 0, 0, 1) (0, 1, 0, 0, 0, 0, 0, 1)
# Suskaičiuojame dar du vektorius: v5 = v4*B # priklauso L1 v7 = v6*B # priklauso L1 v5 v7
(-330, 143, 125, -28, -96, 32, -57, 23) (126, -54, -48, 15, 36, -12, 18, -9)
# Vektorius v4, v5 atitinka vienas 2-os eilės Žordano langelis, o # vektorius v6, v7 -- dar vienas 2-os eilės Žordano langelis. # Poerdvyje L1 turime 3 tiesiškai nepriklausomus vektorius v3,v5 ir v7. # Šią vektorių šeimą pildant iki erdvės L1 bazės, reikės pridėti vieną # vektorių. Rasime šį vektorių: v8 = papildom([v3,v5,v7], L1)[0] v8
(1, 0, 0, 0, -9/2, 3/2, 17/4, -13/4)
# 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)
(10000000241103922471243716330143125299632562310000001330143125289632572301000001126544815361218910009232174134)\displaystyle \left(\begin{array}{rrrrrrrr} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 241 & -103 & -92 & 24 & 71 & -24 & 37 & -16 \\ 330 & -143 & -125 & 29 & 96 & -32 & 56 & -23 \\ 1 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\ -330 & 143 & 125 & -28 & -96 & 32 & -57 & 23 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 1 \\ 126 & -54 & -48 & 15 & 36 & -12 & 18 & -9 \\ 1 & 0 & 0 & 0 & -\frac{9}{2} & \frac{3}{2} & \frac{17}{4} & -\frac{13}{4} \end{array}\right)
# Pradinės matricos Žordano matrica: show(T*A*(T^(-1)))
(3100000003100000003000000003100000003000000003100000003000000003)\displaystyle \left(\begin{array}{rrrrrrrr} 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 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 3 \end{array}\right)