Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
| Download
Project: Algebra_II_viesas
Views: 104Image: ubuntu2004
# 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)
A = matrix(QQ, 8, 8, [[-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]]) show(A)
−39−83−6118−61−38172143118−918100−23183329−82623−2−28−6−12−104−10−6011−14−25−206−17−202215108−1880−9−2−4050132−1−1−3−2−3−515
# 6 pavyzdys. Rasime matricos show(A)
−39−83−6118−61−38172143118−918100−23183329−82623−2−28−6−12−104−10−6011−14−25−206−17−202215108−1880−9−2−4050132−1−1−3−2−3−515
# Žodano formą ir atitinkamą bazę.
Sprendimas
# Randame matricos charakteristinį polinomą: p = A.charpoly(var = 't') show(p.factor())
(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)
−42−83−6118−61−38172142818−918100−23183326−82623−2−28−6−12−101−10−6011−14−25−206−20−202215108−1850−9−2−4050102−1−1−3−2−3−512
# 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)
1−42−14161−2110−110143−6025150185−503050−6−320−210−10−14−340−250−4052−2021010−21121−10−20−1−10212111
# Pradinės matricos Žordano matrica: show(T*A*(T^(-1)))
3000000013000000013000000013000000003000000013000000003000000013
[ \left(3000000013000000013000000013000000003000000013000000003000000013\right) ]
T.columns?