CoCalc Public FilesZordano_forma_pavyzdys_2.sagewsOpen with one click!
Author: Paulius Drungilas
Views : 172
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)
# 2 pavyzdys. Rasime matricos A = matrix(QQ, 4, 4, [[1, 1, -2, 0], [2, 1, 0, 2], [1, 0, 1, 1], [0,-1,2,1]]) show(A)
(1120210210110121)\displaystyle \left(\begin{array}{rrrr} 1 & 1 & -2 & 0 \\ 2 & 1 & 0 & 2 \\ 1 & 0 & 1 & 1 \\ 0 & -1 & 2 & 1 \end{array}\right)
# Žodano formą ir atitinkamą bazę.
# Randame matricos charakteristinį polinomą: p = A.charpoly(var = 't') show(p) show(p.factor())
t44t3+6t24t+1\displaystyle t^{4} - 4 t^{3} + 6 t^{2} - 4 t + 1
(t1)4\displaystyle (t - 1)^{4}
# Nagrinėjame matricą B := A-1*E. Ieškome mažiausoi p: rg(B^p)=4-4=0: B = A - 1*matrix.identity(4) show(B)
(0120200210010120)\displaystyle \left(\begin{array}{rrrr} 0 & 1 & -2 & 0 \\ 2 & 0 & 0 & 2 \\ 1 & 0 & 0 & 1 \\ 0 & -1 & 2 & 0 \end{array}\right)
# Matricos B laipsnių rangai: B.rank() (B**2).rank()
2 0
# Taigi, p=2. Matricos B branduolys ker B ir jo dimensija: L1 = B.left_kernel() L1.dimension()
2
# Matricos B^2 branduolys ker B^2 ir jo dimensija: L2 = (B**2).left_kernel() L2.dimension()
4
# Poerdvio L1 bazę pildant iki erdvės L2 bazės, reikia pridėti 2 vektorius v11 ir v12: L = papildom(L1.basis(), L2) v11 = L[0] v12 = L[1] v11 v12
(1, 0, 0, 0) (0, 1, 0, 0)
# Suskaičiuojame vektorius v11B ir v12B: v11*B v12*B
(0, 1, -2, 0) (2, 0, 0, 2)
# Taigi radome Žordano bazę v11,v11B,v21,v22. # Perėjimo matrica (iš standartinės bazės į Žordano bazę): T = matrix(QQ,4,4,[v11,v11*B,v12,v12*B]) show(T)
(1000012001002002)\displaystyle \left(\begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 0 & 1 & -2 & 0 \\ 0 & 1 & 0 & 0 \\ 2 & 0 & 0 & 2 \end{array}\right)
# Pradinės matricos Žordano matrica: show(T*A*(T^(-1)))
(1100010000110001)\displaystyle \left(\begin{array}{rrrr} 1 & 1 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 \end{array}\right)