CoCalc Public FilesZordano_forma_pavyzdys_3.sagewsOpen with one click!
Author: Paulius Drungilas
Views : 22
Compute Environment: Ubuntu 20.04 (Default)
# 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)
# 3 pavyzdys. Rasime matricos A = matrix(QQ, 4, 4, [[3, 1, 0, 0], [0, 2, 1, 0], [0, 0, 2, 1], [-1,-1,-1,1]]) show(A)
(3100021000211111)\displaystyle \left(\begin{array}{rrrr} 3 & 1 & 0 & 0 \\ 0 & 2 & 1 & 0 \\ 0 & 0 & 2 & 1 \\ -1 & -1 & -1 & 1 \end{array}\right)
# Žodano formą ir atitinkamą bazę.
# Randame matricos charakteristinį polinomą: p = A.charpoly(var = 't') show(p) show(p.factor())
t48t3+24t232t+16\displaystyle t^{4} - 8 t^{3} + 24 t^{2} - 32 t + 16
(t2)4\displaystyle (t - 2)^{4}
# Nagrinėjame matricą B := A-2*E ir skaičiuojame jos laipsnių branduolių dimensijas: B = A - 2*matrix.identity(4) show(B)
(1100001000011111)\displaystyle \left(\begin{array}{rrrr} 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ -1 & -1 & -1 & -1 \end{array}\right)
# Nagrinėjame matricą B := A-2*E. Ieškome mažiausoi p: rg(B^p)=4-4=0: B = A - 2*matrix.identity(4) show(B)
(1100001000011111)\displaystyle \left(\begin{array}{rrrr} 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ -1 & -1 & -1 & -1 \end{array}\right)
# Matricos B laipsnių rangai: B.rank() (B**2).rank() (B**3).rank() (B**4).rank()
3 2 1 0
# Taigi, p=2. Matricos B^3 branduolys ker B^3 ir jo dimensija: L1 = (B**3).left_kernel() L1.dimension()
3
# Matricos B^4 branduolys ker B^4 ir jo dimensija: L2 = (B**4).left_kernel() L2.dimension()
4
# Poerdvio L1 bazę pildant iki erdvės L2 bazės, reikia pridėti 1 vektorių v11: v11 = papildom(L1.basis(), L2)[0] v11
(1, 0, 0, 0)
# Suskaičiuojame vektorius v11B, v12B^2 ir v11B^3: v11*B v11*(B**2) v11*(B**3)
(1, 1, 0, 0) (1, 1, 1, 0) (1, 1, 1, 1)
# Taigi radome Žordano bazę v11,v11B,v11B^2,v11B^3. # Perėjimo matrica (iš standartinės bazės į Žordano bazę): T = matrix(QQ,4,4,[v11,v11*B,v11*(B**2),v11*(B**3)]) show(T)
(1000110011101111)\displaystyle \left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 0 \\ 1 & 1 & 1 & 1 \end{array}\right)
# Pradinės matricos Žordano matrica: show(T*A*(T^(-1)))
(2100021000210002)\displaystyle \left(\begin{array}{rrrr} 2 & 1 & 0 & 0 \\ 0 & 2 & 1 & 0 \\ 0 & 0 & 2 & 1 \\ 0 & 0 & 0 & 2 \end{array}\right)