verzija: SageMath 9.4
%display latex
Promatramo skup
$$A_2(\mathbb{Z}_3)=\left\{\begin{bmatrix}a&b\\ -b&a\end{bmatrix}:a,b\in\mathbb{Z}_3\right\}$$kvadratnih matrica drugog reda s elementima iz polja $\mathbb{Z}_3$. Pokazat ćemo da je $A_2(\mathbb{Z}_3)$ polje uz standardno zbrajanje i množenje matrica modulo $3$.
Kako su standardno zbrajanje i množenje matrica modulo $3$ asocijativne operacije i vrijede za njih zakoni distributivnosti, tada ta svojstva sigurno vrijede i na manjem skupu matrica $A_2(\mathbb{Z}_3)$. Preostala svojstva polja lagano ćemo očitati iz pripadnih tablica zbrajanja i množenja na skupu $A_2(\mathbb{Z}_3)$. Stoga je cilj da ovdje kreiramo te tablice.
Najprije pogledajmo od kojih se $9$ matrica sastoji skup $A_2(\mathbb{Z}_3)$.
import itertools as it
def ant(a,b):
return matrix(Integers(3),[[a,b],[-b,a]])
matrice=[ant(*x) for x in it.product([0,1,2],repeat=2)]
To su sljedeće matrice. Izgleda kao da na sporednoj dijagonali nisu suprotni elementi. No, pazite, nalazimo se u polju $\mathbb{Z}_3$ u kojemu vrijedi $-0=0, -1=2, -2=1$, tako da je sve u redu.
matrice
tablica_zbrajanja=[['$+$']+matrice]
for A in matrice:
redak=[A]
for B in matrice:
redak.append(A+B)
tablica_zbrajanja.append(redak)
table(tablica_zbrajanja)
Iz tablice zbrajanja uočavamo da je zbrajanje matrica modulo $3$ zaista binarna operacija na $A_2(\mathbb{Z}_3)$, tj. suma bilo koje dvije matrice iz $A_2(\mathbb{Z}_3)$ je ponovo neka matrica iz $A_2(\mathbb{Z}_3)$. Nadalje, iz tablice uočavamo da je matrica $\big[\begin{smallmatrix}0&0\\ 0&0\end{smallmatrix}\big]$ neutralni element za zbrajanje. Kako je tablica zbrajanja simetrična s obzirom na glavnu dijagonalu, zaključujemo da je zbrajanje komutativna operacija na $A_2(\mathbb{Z}_3)$. Konačno, kako se u svakom retku i svakom stupcu tablice zbrajanja nalazi neutralni element $\big[\begin{smallmatrix}0&0\\ 0&0\end{smallmatrix}\big]$, zaključujemo da svaki element iz $A_2(\mathbb{Z}_3)$ ima svoj suprotni element.
Asocijativnost zbrajanja iz tablice nije tako lako vidljiva, međutim pomoću računala nije problem kroz trostruku petlju provjeriti zakon asocijativnosti za svake tri matrice iz $A_2(\mathbb{Z}_3)$.
def asocijativnost_zbrajanja(skup):
for A in skup:
for B in skup:
for C in skup:
ab=A+B
bc=B+C
if ab+C != A+bc: return 'zbrajanje nije asocijativno'
return 'zbrajanje je asocijativno'
%%time
asocijativnost_zbrajanja(matrice)
Čak, ako nam je naporno za veću tablicu provjeravati da li je simetrična s obzirom na glavnu dijagonalu, možemo preko dvostruke petlje provjeriti komutativnost zbrajanja za svake dvije matrice u $A_2(\mathbb{Z}_3)$.
def komutativnost_zbrajanja(skup):
for A in skup:
for B in skup:
if A+B != B+A: return 'zbrajanje nije komutativno'
return 'zbrajanje je komutativno'
%%time
komutativnost_zbrajanja(matrice)
tablica_mnozenja=[['$\\cdot$']+matrice]
for A in matrice:
redak=[A]
for B in matrice:
redak.append(A*B)
tablica_mnozenja.append(redak)
table(tablica_mnozenja)
Iz tablice množenja uočavamo da je množenje matrica modulo $3$ zaista binarna operacija na $A_2(\mathbb{Z}_3)$, tj. produkt bilo koje dvije matrice iz $A_2(\mathbb{Z}_3)$ je ponovo neka matrica iz $A_2(\mathbb{Z}_3)$. Nadalje, iz tablice uočavamo da je matrica $\big[\begin{smallmatrix}1&0\\ 0&1\end{smallmatrix}\big]$ neutralni element za množenje. Kako je tablica množenja simetrična s obzirom na glavnu dijagonalu, zaključujemo da je množenje komutativna operacija na $A_2(\mathbb{Z}_3)$. Jedino se u retku i stupcu koji pripadaju elementu $\big[\begin{smallmatrix}0&0\\ 0&0\end{smallmatrix}\big]$ ne nalazi neutralni element za množenje $\big[\begin{smallmatrix}1&0\\ 0&1\end{smallmatrix}\big]$. U svakom preostalom retku i stupcu tablice množenja nalazi se neutralni element $\big[\begin{smallmatrix}1&0\\ 0&1\end{smallmatrix}\big]$, iz čega zaključujemo da svaki element iz $A_2(\mathbb{Z}_3)$ osim neutralnog elementa za zbrajanje ima svoj inverzni element.
Asocijativnost i komutativnost množenja matrica u $A_2(\mathbb{Z}_3)$ možemo lako provjeriti pomoću petlji, analogno kako smo to napravili za zbrajanje.
def asocijativnost_mnozenja(skup):
for A in skup:
for B in skup:
for C in skup:
ab=A*B
bc=B*C
if ab*C != A*bc: return 'mnozenje nije asocijativno'
return 'mnozenje je asocijativno'
%%time
asocijativnost_mnozenja(matrice)
def komutativnost_mnozenja(skup):
for A in skup:
for B in skup:
if A*B != B*A: return 'mnozenje nije komutativno'
return 'mnozenje je komutativno'
%%time
komutativnost_mnozenja(matrice)
Kako je množenje komutativna operacija na $A_2(\mathbb{Z}_3)$, dovoljno je provjeriti samo jednu distributivnost: $A(B+C)=AB+AC$.
def provjera_distributivnosti(skup):
for A in skup:
for B in skup:
for C in skup:
ab=A*B
ac=A*C
bc=B+C
if A*bc != ab+ac: return 'distributivnost ne vrijedi'
return 'distributivnost vrijedi'
%%time
provjera_distributivnosti(matrice)