Post on 01-Mar-2019
Przytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz
Kroneckera-Capelliego, korzystałem z I tomu wykładów Prof. Andrzeja Staruszkiewicza dla fizyków:
ALGEBRA I GEOMETRIA, Kraków, 1993.
Wyznacznik macierzy kwadratowej
Niech A będzie macierzą stopnia n (czyli macierzą kwadratową n x n), o elementach Aik. Utwórzmy
iloczyn A1 α1 A2 α2 ... Anαn ,
gdzie α1α2 ... αn jest permutacją liczb 1 2 ... n.
Ten iloczyn zawiera dokładnie jeden element każdego wiersza i każdej kolumny macierzy A. Mnożymy
go przez znak permutacji
sgn(α1 α2 ... αn ) i tworzymy sumę
∑wszystkie permutacje
α1 α2 ... αn
sgn (α1 α2 ... αn ) A1 α1 A2 α2 ... Anαn ,
którą nazywamy wyznacznikiem macierzy A i oznaczamy Det(A).
Uwaga: zwykle liczymy wyznaczniki, korzystając z twierdzeń, a nie wprost z definicji.
In[1]:= P4 = Permutations[{1, 2, 3, 4}]
Out[1]= {{1, 2, 3, 4}, {1, 2, 4, 3}, {1, 3, 2, 4}, {1, 3, 4, 2}, {1, 4, 2, 3}, {1, 4, 3, 2},
{2, 1, 3, 4}, {2, 1, 4, 3}, {2, 3, 1, 4}, {2, 3, 4, 1}, {2, 4, 1, 3}, {2, 4, 3, 1},
{3, 1, 2, 4}, {3, 1, 4, 2}, {3, 2, 1, 4}, {3, 2, 4, 1}, {3, 4, 1, 2}, {3, 4, 2, 1},
{4, 1, 2, 3}, {4, 1, 3, 2}, {4, 2, 1, 3}, {4, 2, 3, 1}, {4, 3, 1, 2}, {4, 3, 2, 1}}
In[2]:= sgn22 = Signature[{4, 2, 3, 1}]
Out[2]= -1
In[3]:= (* (-1)^liczba przestawień w ciągu 4,2,3,1, która daje ciąg 1,2,3,4. Widać,
że wystarczy jedno przestawienie (1⟷4) lub ich inna liczba,
ale zawsze nieparzysta ! *)
In[4]:= sgn4 = Signature[{1, 3, 4, 2}]
Out[4]= 1
In[5]:= (* (-1)^liczba przestawień w ciągu 1,3,4,2, która daje ciąg 1,2,3,4. Widać,
że wystarczą dwa przestawienia najpierw 4⟷2, potem 3⟷2 lub ich inna liczba,
ale zawsze parzysta ! *)
In[6]:=
Macierz 1 x 1
In[7]:= A1 = {{a11}}; MatrixForm[A1]
Out[7]//MatrixForm=
( a11 )
In[8]:= Det[A1]
Out[8]= a11
Macierz 2 x 2
In[9]:= A2 = {{a11, a12}, {a21, a22}}; MatrixForm[A2]
Out[9]//MatrixForm=
a11 a12a21 a22
In[10]:= Det[A2]
Out[10]= -a12 a21 + a11 a22
Macierz 3 x 3
In[11]:= A3 = {{a11, a12, a13}, {a21, a22, a23}, {a31, a32, a33}}; MatrixForm[A3]
Out[11]//MatrixForm=
a11 a12 a13a21 a22 a23a31 a32 a33
In[12]:= Det[A3]
Out[12]= -a13 a22 a31 + a12 a23 a31 + a13 a21 a32 - a11 a23 a32 - a12 a21 a33 + a11 a22 a33
(obrazek z Wikipedii dla tzw. schematu Sarrusa)
Macierz 4 x 4
In[13]:= A4 = {{a11, a12, a13, a14}, {a21, a22, a23, a24},
{a31, a32, a33, a34}, {a41, a42, a43, a44}};
MatrixForm[A4]
Out[13]//MatrixForm=
a11 a12 a13 a14a21 a22 a23 a24a31 a32 a33 a34a41 a42 a43 a44
2 NOF_4.nb
In[14]:= Det[A4]
Out[14]= a14 a23 a32 a41 - a13 a24 a32 a41 - a14 a22 a33 a41 + a12 a24 a33 a41 +
a13 a22 a34 a41 - a12 a23 a34 a41 - a14 a23 a31 a42 + a13 a24 a31 a42 + a14 a21 a33 a42 -
a11 a24 a33 a42 - a13 a21 a34 a42 + a11 a23 a34 a42 + a14 a22 a31 a43 - a12 a24 a31 a43 -
a14 a21 a32 a43 + a11 a24 a32 a43 + a12 a21 a34 a43 - a11 a22 a34 a43 - a13 a22 a31 a44 +
a12 a23 a31 a44 + a13 a21 a32 a44 - a11 a23 a32 a44 - a12 a21 a33 a44 + a11 a22 a33 a44
In[15]:= (* Zwłaszcza ten ostatni wzór niełatwo zapamiętać i są
prostsze sposoby liczenia wyznaczników dla większych macierzy.
Ostrzeżenie: nie istnieje schemat Sarrusa dla macierzy 4 x 4 !!! *)
In[16]:= (* Spróbujmy teraz powtórzyć otrzymany powyżej wynik na Det[A4],
korzystając wprost z definicji -
jest to bardzo dobre ćwiczenie z operacji na listach *)
In[17]:= P4
Out[17]= {{1, 2, 3, 4}, {1, 2, 4, 3}, {1, 3, 2, 4}, {1, 3, 4, 2}, {1, 4, 2, 3}, {1, 4, 3, 2},
{2, 1, 3, 4}, {2, 1, 4, 3}, {2, 3, 1, 4}, {2, 3, 4, 1}, {2, 4, 1, 3}, {2, 4, 3, 1},
{3, 1, 2, 4}, {3, 1, 4, 2}, {3, 2, 1, 4}, {3, 2, 4, 1}, {3, 4, 1, 2}, {3, 4, 2, 1},
{4, 1, 2, 3}, {4, 1, 3, 2}, {4, 2, 1, 3}, {4, 2, 3, 1}, {4, 3, 1, 2}, {4, 3, 2, 1}}
In[18]:= P4[[1]]
Out[18]= {1, 2, 3, 4}
In[19]:= P4[[1]][[1]]
Out[19]= 1
In[20]:= P4[[1]][[2]]
Out[20]= 2
In[21]:= Signature[P4[[1]]]
Out[21]= 1
In[22]:= Length[P4]
Out[22]= 24
In[23]:= MyDetA4 = Sum[Signature[P4[[i]]] * A4[[1, P4[[i]][[1]]]] * A4[[2, P4[[i]][[2]]]] *
A4[[3, P4[[i]][[3]]]] * A4[[4, P4[[i]][[4]]]], {i, 1, Length[P4]}]
Out[23]= a14 a23 a32 a41 - a13 a24 a32 a41 - a14 a22 a33 a41 + a12 a24 a33 a41 +
a13 a22 a34 a41 - a12 a23 a34 a41 - a14 a23 a31 a42 + a13 a24 a31 a42 + a14 a21 a33 a42 -
a11 a24 a33 a42 - a13 a21 a34 a42 + a11 a23 a34 a42 + a14 a22 a31 a43 - a12 a24 a31 a43 -
a14 a21 a32 a43 + a11 a24 a32 a43 + a12 a21 a34 a43 - a11 a22 a34 a43 - a13 a22 a31 a44 +
a12 a23 a31 a44 + a13 a21 a32 a44 - a11 a23 a32 a44 - a12 a21 a33 a44 + a11 a22 a33 a44
In[24]:= Det[A4] ⩵ MyDetA4
Out[24]= True
NOF_4.nb 3
W przypadku konkretnych kwadratowych macierzy A i B mamy
In[25]:= A = {{1, 0, 3, 4}, {2, 4, -2, 8}, {1, 0, -4, 6}, {3, -7, 9, 1}}
Out[25]= {{1, 0, 3, 4}, {2, 4, -2, 8}, {1, 0, -4, 6}, {3, -7, 9, 1}}
In[26]:= MatrixForm[A]
Out[26]//MatrixForm=
1 0 3 42 4 -2 81 0 -4 63 -7 9 1
In[27]:= B = {{-2, 1, 8, 0}, {7, 0, -2, 2}, {0, 1, 2, 3}, {2, 1, -9, 3}}
Out[27]= {{-2, 1, 8, 0}, {7, 0, -2, 2}, {0, 1, 2, 3}, {2, 1, -9, 3}}
In[28]:= MatrixForm[B]
Out[28]//MatrixForm=
-2 1 8 07 0 -2 20 1 2 32 1 -9 3
In[29]:= Det[A]
Out[29]= 420
In[30]:= Det[B]
Out[30]= -199
In[31]:= (* Zachodzi ogólnie dla macierzy kwadratowych: Det[A.B]=
Det[B.A]=Det[A]*Det[B]. Na przykład: *)
In[32]:= Det[A.B]
Out[32]= -83580
In[33]:= Det[B.A]
Out[33]= -83580
In[34]:= Det[A] * Det[B]
Out[34]= -83580
Ślad (trace) macierzy kwadratowej: suma elementów na przekątnej
macierzy
In[35]:= Tr[A2]
Out[35]= a11 + a22
4 NOF_4.nb
In[36]:= Tr[A3]
Out[36]= a11 + a22 + a33
In[37]:= Tr[A4]
Out[37]= a11 + a22 + a33 + a44
W przypadku naszych kwadratowych macierzy A i B
In[38]:= Tr[A]
Out[38]= 2
In[39]:= Tr[B]
Out[39]= 3
In[40]:= (* Zachodzi Tr[A.B]=Tr[B.A]. Na przykład: *)
In[41]:= Tr[A.B]
Out[41]= -24
In[42]:= Tr[B.A]
Out[42]= -24
In[43]:= H = A = I * B;
In[44]:= Tr[H]
Out[44]= 3 ⅈ
In[45]:= G = ConjugateTranspose[H]
Out[45]= {{2 ⅈ, -7 ⅈ, 0, -2 ⅈ}, {-ⅈ, 0, -ⅈ, -ⅈ}, {-8 ⅈ, 2 ⅈ, -2 ⅈ, 9 ⅈ}, {0, -2 ⅈ, -3 ⅈ, -3 ⅈ}}
In[46]:= Tr[G]
Out[46]= -3 ⅈ
Szczególne przypadki macierzy
In[47]:= (* macierz jednostkowa identity matrix *)
In[48]:= Id4 = IdentityMatrix[4]
Out[48]= {{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}}
In[49]:= MatrixForm[IdentityMatrix[4]]
Out[49]//MatrixForm=
1 0 0 00 1 0 00 0 1 00 0 0 1
In[50]:= (* Zachodzi *)
NOF_4.nb 5
In[51]:= A4.Id4 ⩵ A4
Out[51]= True
In[52]:= Id4.A4 ⩵ A4
Out[52]= True
In[53]:= Diag4 = DiagonalMatrix[{d11, d22, d33, d44}]
Out[53]= {{d11, 0, 0, 0}, {0, d22, 0, 0}, {0, 0, d33, 0}, {0, 0, 0, d44}}
In[54]:= MatrixForm[Diag4]
Out[54]//MatrixForm=
d11 0 0 00 d22 0 00 0 d33 00 0 0 d44
Macierz odwrotna (inverse matrix) istnieje dla macierzy
kwadratowej A o niezerowym wyznaczniku. Oznaczamy ją
symbolem A-1. Z definicji zachodzi A-1.A=A.A-1=Id (macierz
jednostkowa).
In[55]:= Inverse[A2]
Out[55]= a22
-a12 a21 + a11 a22, -
a12
-a12 a21 + a11 a22, - a21
-a12 a21 + a11 a22,
a11
-a12 a21 + a11 a22
In[56]:= Inverse[A3]
Out[56]= -a23 a32 + a22 a33 -a13 a22 a31 + a12 a23 a31 + a13 a21 a32 - a11 a23 a32 - a12 a21 a33 + a11 a22 a33,
a13 a32 - a12 a33 -a13 a22 a31 + a12 a23 a31 + a13 a21 a32 -
a11 a23 a32 - a12 a21 a33 + a11 a22 a33, -a13 a22 + a12 a23 -a13 a22 a31 + a12 a23 a31 + a13 a21 a32 - a11 a23 a32 - a12 a21 a33 + a11 a22 a33,
a23 a31 - a21 a33 -a13 a22 a31 + a12 a23 a31 + a13 a21 a32 -
a11 a23 a32 - a12 a21 a33 + a11 a22 a33, -a13 a31 + a11 a33 -a13 a22 a31 + a12 a23 a31 + a13 a21 a32 - a11 a23 a32 - a12 a21 a33 + a11 a22 a33,
a13 a21 - a11 a23 -a13 a22 a31 + a12 a23 a31 + a13 a21 a32 -
a11 a23 a32 - a12 a21 a33 + a11 a22 a33, -a22 a31 + a21 a32 -a13 a22 a31 + a12 a23 a31 + a13 a21 a32 - a11 a23 a32 - a12 a21 a33 + a11 a22 a33,
a12 a31 - a11 a32 -a13 a22 a31 + a12 a23 a31 + a13 a21 a32 -
a11 a23 a32 - a12 a21 a33 + a11 a22 a33, -a12 a21 + a11 a22 -a13 a22 a31 + a12 a23 a31 + a13 a21 a32 - a11 a23 a32 - a12 a21 a33 + a11 a22 a33
6 NOF_4.nb
In[57]:= InvA = Inverse[A]
Out[57]= - 22 ⅈ199
, -33 ⅈ199
,28 ⅈ199
, -6 ⅈ199
, - 211 ⅈ199
, -18 ⅈ199
,160 ⅈ199
, -148 ⅈ199
,
- 4 ⅈ199
, -6 ⅈ199
, -13 ⅈ199
,17 ⅈ199
, 73 ⅈ199
,10 ⅈ199
, -111 ⅈ199
,38 ⅈ199
In[58]:= InvB = Inverse[B]
Out[58]= 22
199,
33
199, -
28
199,
6
199, 211
199,
18
199, -
160
199,148
199,
4
199,
6
199,
13
199, -
17
199, - 73
199, -
10
199,111
199, -
38
199
In[59]:= MatrixForm[InvA.A]
Out[59]//MatrixForm=
1 0 0 00 1 0 00 0 1 00 0 0 1
In[60]:= MatrixForm[A.InvA]
Out[60]//MatrixForm=
1 0 0 00 1 0 00 0 1 00 0 0 1
In[61]:= MatrixForm[InvB.B]
Out[61]//MatrixForm=
1 0 0 00 1 0 00 0 1 00 0 0 1
In[62]:= MatrixForm[B.InvB]
Out[62]//MatrixForm=
1 0 0 00 1 0 00 0 1 00 0 0 1
In[63]:= (* Jeśli istnieją macierze odwrotne A^(-1) i B^(-1), to zachodzi
Det[A^(-1)]=1Det[A]oraz
A.B^(-1)= B^(-1).A^(-1) .
Ponadto
Transpose[A]^(-1) = Transpose[A^(-1)]
*)
In[64]:= Det[Inverse[A]] ⩵ 1 Det[A]Out[64]= True
NOF_4.nb 7
In[65]:= Det[Inverse[B]] ⩵ 1 Det[B]Out[65]= True
In[66]:= MatrixForm[Inverse[A.B]]
Out[66]//MatrixForm=
- 6897 ⅈ39601
- 1092 ⅈ39601
5594 ⅈ39601
- 5264 ⅈ39601
3004 ⅈ39601
- 4847 ⅈ39601
- 5560 ⅈ39601
- 1026 ⅈ39601
- 2647 ⅈ39601
- 488 ⅈ39601
2790 ⅈ39601
- 1337 ⅈ39601
498 ⅈ39601
1543 ⅈ39601
- 869 ⅈ39601
2361 ⅈ39601
In[67]:= MatrixForm[Inverse[B].Inverse[A]]
Out[67]//MatrixForm=
- 6897 ⅈ39601
- 1092 ⅈ39601
5594 ⅈ39601
- 5264 ⅈ39601
3004 ⅈ39601
- 4847 ⅈ39601
- 5560 ⅈ39601
- 1026 ⅈ39601
- 2647 ⅈ39601
- 488 ⅈ39601
2790 ⅈ39601
- 1337 ⅈ39601
498 ⅈ39601
1543 ⅈ39601
- 869 ⅈ39601
2361 ⅈ39601
In[68]:= MatrixForm[Inverse[Transpose[A]]]
Out[68]//MatrixForm=
- 22 ⅈ199
- 211 ⅈ199
- 4 ⅈ199
73 ⅈ199
- 33 ⅈ199
- 18 ⅈ199
- 6 ⅈ199
10 ⅈ199
28 ⅈ199
160 ⅈ199
- 13 ⅈ199
- 111 ⅈ199
- 6 ⅈ199
- 148 ⅈ199
17 ⅈ199
38 ⅈ199
In[69]:= MatrixForm[Transpose[Inverse[A]]]
Out[69]//MatrixForm=
- 22 ⅈ199
- 211 ⅈ199
- 4 ⅈ199
73 ⅈ199
- 33 ⅈ199
- 18 ⅈ199
- 6 ⅈ199
10 ⅈ199
28 ⅈ199
160 ⅈ199
- 13 ⅈ199
- 111 ⅈ199
- 6 ⅈ199
- 148 ⅈ199
17 ⅈ199
38 ⅈ199
In[70]:= MatrixForm[Inverse[Transpose[B]]]
Out[70]//MatrixForm=
22
199
211
199
4
199- 73
199
33
199
18
199
6
199- 10
199
- 28
199- 160
199
13
199
111
199
6
199
148
199- 17
199- 38
199
8 NOF_4.nb
In[71]:= MatrixForm[Transpose[Inverse[B]]]
Out[71]//MatrixForm=
22
199
211
199
4
199- 73
199
33
199
18
199
6
199- 10
199
- 28
199- 160
199
13
199
111
199
6
199
148
199- 17
199- 38
199
Układy równań liniowych Cramera. Twierdzenie Cramera
Rozważmy układ n równań liniowych na n niewiadomych x1, x2, ..., xn. Układ taki można zapisać w
postaci:
A11*x1 + A12*x2 + ... + A1n*xn = B1,
A21*x1 + A22*x2 + ... + A2n*xn = B2,
...
An1*x1 + An2*x2 + ... + Ann*xn = Bn.
Współczynniki Aik tworzą macierz kwadratową - tzw. macierz wpółczynników. Mówimy też o kolumnie
wyrazów wolnych
B=
B1
B2
...
Bn
oraz o kolumnie niewiadomych X =
X1
X2
...
Xn
.
W postaci macierzowej układ równań można zapisać w postaci:
A.X = B.
Jeśli Det[A] jest różny od zera, to mamy do czynienia z układem Cramera.
Twierdzenie Cramera:
Układ równań ma jednoznaczne rozwiązanie, które możemy zapisać w postaci
X= A^(-1).B
Równoważne sformułowanie (nieoczywiste bez znajomości liczenia macierzy odwrotnych):
Niewiadomą Xs otrzymujemy jako iloraz dwóch wyznaczników:
Xs=Det[As]/Det[A], gdzie
As jest macierzą A, w której s-ta kolumna została zastąpiona przez kolumnę wyrazów wolnych, czyli B.
In[72]:= (* Przykład *)
In[73]:= Clear[A, B, X];
NOF_4.nb 9
In[74]:= A = {{2, 3, 1, -2, 1}, {3, -2, 4, -6, 2},
{7, 2, -1, -1, 3}, {6, 0, 1, -9, 4}, {5, -1, 2, -8, 5}}
Out[74]= {{2, 3, 1, -2, 1}, {3, -2, 4, -6, 2},
{7, 2, -1, -1, 3}, {6, 0, 1, -9, 4}, {5, -1, 2, -8, 5}}
In[75]:= MatrixForm[A]
Out[75]//MatrixForm=
2 3 1 -2 13 -2 4 -6 27 2 -1 -1 36 0 1 -9 45 -1 2 -8 5
In[76]:= Det[A]
Out[76]= -975
In[77]:= (* Mamy układ Cramera ! *)
In[78]:= MatrixForm[A]
Out[78]//MatrixForm=
2 3 1 -2 13 -2 4 -6 27 2 -1 -1 36 0 1 -9 45 -1 2 -8 5
In[79]:= B = {{1}, {-2}, {-1}, {3}, {0}}
Out[79]= {{1}, {-2}, {-1}, {3}, {0}}
In[80]:= MatrixForm[B]
Out[80]//MatrixForm=
1-2-130
In[81]:= X = {{X1}, {X2}, {X3}, {X4}, {X5}}
Out[81]= {{X1}, {X2}, {X3}, {X4}, {X5}}
In[82]:= MatrixForm[X]
Out[82]//MatrixForm=
X1X2X3X4X5
In[83]:= ukladrownan = A.Flatten[X] ⩵ Flatten[B]
Out[83]= {2 X1 + 3 X2 + X3 - 2 X4 + X5, 3 X1 - 2 X2 + 4 X3 - 6 X4 + 2 X5, 7 X1 + 2 X2 - X3 - X4 + 3 X5,
6 X1 + X3 - 9 X4 + 4 X5, 5 X1 - X2 + 2 X3 - 8 X4 + 5 X5} ⩵ {1, -2, -1, 3, 0}
10 NOF_4.nb
In[84]:= Flatten[X]
Out[84]= {X1, X2, X3, X4, X5}
In[85]:= Flatten[B]
Out[85]= {1, -2, -1, 3, 0}
In[86]:= Solve[ukladrownan, Flatten[X]]
Out[86]= X1 → -274
975, X2 → 32
65, X3 → -
367
325, X4 → -
934
975, X5 → -
228
325
In[87]:= (* Flatten[B] i Flatten[X] "spłaszcza" wielowymiarowe
listy do postaci prostych list jednowymiarowych *)
In[88]:= (* Nie ma potrzeby samemu tworzyć układ równań
i rozwiązywać go przy pomocy ogólnej instrukci Solve,
bo mamy narzędzie bardziej specjalistyczne; LinearSolve, gdzie podajemy
jako argumenty macierz współczynników oraz kolumnę wyrazów wolnych. *)
In[89]:= LinearSolve[A, B]
Out[89]= - 274
975, 32
65, - 367
325, - 934
975, - 228
325
In[90]:= (* Oczywiście możemy też użyć macierzy odwrotnej do A *)
In[91]:= Inverse[A].B
Out[91]= - 274
975, 32
65, - 367
325, - 934
975, - 228
325
Rząd macierzy
Rozważmy macierz A o m wierszach i n kolumnach. Jeśli wykreślić m-k wierszy i n-k kolumn to
pozostanie z niej macierz kwadratowa stopnia k ( k x k). Wyznacznik z tej macierzy nazywamy minorem
stopnia k wyjętym z macierzy A. Jeśli istnieje różny od zera minor stopnia r wyjęty z macierzy A, a
wszystkie minory stopnia r+1 są równe zero, to mówimy, że macierz A jest rzędu r i piszemy Rank[A]= r.
Twierdzenia, które zilustrujemy na ćwiczeniach.
Rząd macierzy nie ulega zmianie, jeśli:
(1) pomnożyć dowolną kolumnę przez liczbę rożną od zera
(2) do elementów jednej kolumny dodać odpowiednie elementy innej kolumny pomnożone przez
jakąś stałą
(3) przestawić kolumny
(4) transponować macierz
In[92]:= Clear[A];
In[93]:= A = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {0, 0, 0}}
Out[93]= {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {0, 0, 0}}
NOF_4.nb 11
In[94]:= MatrixForm[A]
Out[94]//MatrixForm=
1 2 34 5 67 8 90 0 0
In[95]:= AA = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
Out[95]= {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
In[96]:= MatrixForm[AA]
Out[96]//MatrixForm=
1 2 34 5 67 8 9
In[97]:= Det[AA]
Out[97]= 0
In[98]:= AAA = {{1, 2}, {4, 5}}
Out[98]= {{1, 2}, {4, 5}}
In[99]:= MatrixForm[AAA]
Out[99]//MatrixForm=
1 24 5
In[100]:= Det[AAA]
Out[100]= -3
In[101]:= (* Dlatego ... *)
In[102]:= MatrixRank[A]
Out[102]= 2
Mamy do dyspozycji bardzo użyteczną instrukcję,
RowReduce[A],
która daje tzw. zredukowaną macierz o tym samym rzędzie co macierz A.
In[103]:= MatrixForm[RowReduce[A]]
Out[103]//MatrixForm=
1 0 -10 1 20 0 00 0 0
In[104]:= (* Po wykonaniu tej instrukcji widać,
że z macierzy A nie da się wykroić macierzy kwadratowej o
niezerowym wyznaczniku dla rozmiaru macierzy większego od 2 *)
Ale uwaga !
12 NOF_4.nb
In[105]:= ClearAll[B, b];
In[106]:= B = {{1, 1, b}, {1, 1, 1}, {1, 2, 1}}
Out[106]= {{1, 1, b}, {1, 1, 1}, {1, 2, 1}}
In[107]:= MatrixForm[B]
Out[107]//MatrixForm=
1 1 b1 1 11 2 1
In[108]:= Det[B]
Out[108]= -1 + b
In[109]:= MatrixRank[B]
Out[109]= 3
To jest niepoprawny wynik !!!
Wynik poprawny to:
rz(B)=3, jeśli b ≠ 1,
rz(B)=2, jeśli b = 1.
In[110]:=
Twierdzenie Kroneckera-Capelli’ego.Dotyczy ono najogólniejszego układu m równań na n niewiadomych x1, x2, ..., xn. Układ taki można
zapisać w postaci:
A11*x1 + A12*x2 + ... + A1n*xn = B1,
A21*x1 + A22*x2 + ... + A2n*xn = B2,
...
Am1*x1 + Am2*x2 + ... + Amn*xn = Bm.
Współczynniki Aik tworzą macierz (niekoniecznie kwadratową) - tzw. macierz współczynników.
Mówimy też o kolumnie wyrazów wolnych
B=
B1
B2
...
Bm
oraz o kolumnie niewiadomych X =
X1
X2
...
Xn
.
W postaci macierzowej układ równań można zapisać w postaci:
A.X = B.
Dalej tworzymy macierz DAB przez dołączenie do macierzy A kolumny wyrazów wolnych, B.
NOF_4.nb 13
Twierdzenie mówi, że rozwiązanie układu A.X=B istnieje tylko wtedy, gdy Rank[A]=Rank[DAB].
Ponadto, gdy Rank[A]=Rank[DAB]=n (liczba niewiadomych), to istnieje dokładnie jedno rozwiązanie;
gdy Rank[A]=Rank[DAB] =r < n, to istnieje nieskończenie wiele rozwiązań zależnych od n-r parametrów.
In[111]:= (* Przykład 1: zadanie 3.2a z książki Henryka Arodzia
i Krzysztofa Rościszewskiego,
Algebra i geometria analityczna w zadaniach, Wydawnictwo Znak, Kraków, 2005
2x1+x2+x3+x4+x5 =1,
-x1-x2+x3-x4+x5 =3,
0x1-x2+3x3-x4+3x5 =7.
*)
In[112]:= Clear[A, B, X]
In[113]:= A = {{2, 1, 1, 1, 1}, {-1, -1, 1, -1, 1}, {0, -1, 3, -1, 3}}
Out[113]= {{2, 1, 1, 1, 1}, {-1, -1, 1, -1, 1}, {0, -1, 3, -1, 3}}
In[114]:= B = {1, 3, 7}
Out[114]= {1, 3, 7}
In[115]:= MatrixForm[A]
Out[115]//MatrixForm=
2 1 1 1 1-1 -1 1 -1 10 -1 3 -1 3
In[116]:= DAB = {{2, 1, 1, 1, 1, 1}, {-1, -1, 1, -1, 1, 3}, {0, -1, 3, -1, 3, 7}}
Out[116]= {{2, 1, 1, 1, 1, 1}, {-1, -1, 1, -1, 1, 3}, {0, -1, 3, -1, 3, 7}}
In[117]:= MatrixForm[DAB]
Out[117]//MatrixForm=
2 1 1 1 1 1-1 -1 1 -1 1 30 -1 3 -1 3 7
In[118]:= rA = MatrixRank[A]
Out[118]= 2
In[119]:= rDAB = MatrixRank[DAB]
Out[119]= 2
In[120]:= (* rA=rDAB, więc układ ma rozwiązanie zależne od 5-2=3 parametrów. *)
In[121]:= MatrixForm[RowReduce[A]]
Out[121]//MatrixForm=
1 0 2 0 20 1 -3 1 -30 0 0 0 0
14 NOF_4.nb
In[122]:= (* Jako nieosobliwy minor możemy wybrać macierz 2 x 2 z lewego
górnego rogu A i sprowadzić nasz układ do następującej postaci:
2x1+x2 = 1-x3-x4-x5,
-x1-x2 = 3-x3+x4-x5.
Stąd ostatecznie dostaniemy
x1=4-2*x3-2*x5
x2=-7+3*x3-x4+3*x5
*)
In[123]:= x1 = 4 - 2 * x3 - 2 * x5 (* to dostałem, dodając dwa równania stronai *)
Out[123]= 4 - 2 x3 - 2 x5
In[124]:= x2 = Simplify[1 - x3 - x4 - x5 - 2 * x1] (* liczę x2 z pierwszego równania *)
Out[124]= -7 + 3 x3 - x4 + 3 x5
In[125]:= (* Sprawdzamy, czy nasze rozwiązanie na x1
i x2 zalezne od x3, x4 i x5 spełnia układ równań *)
In[126]:= Simplify[2 x1 + x2 + x3 + x4 + x5 ⩵ 1]
Out[126]= True
In[127]:= Simplify[-x1 - x2 + x3 - x4 + x5 ⩵ 3]
Out[127]= True
In[128]:= Simplify[0 * x1 - x2 + 3 * x3 - x4 + 3 * x5 ⩵ 7]
Out[128]= True
In[129]:= (* Teraz sformułujemy układ równań i zobaczymy,
jak komendy programu Mathematica sobie z nim poradzą *)
In[130]:= Clear[x1, x2, x3, x4, x5];
In[131]:= ukladKC = A.{x1, x2, x3, x4, x5} ⩵ B
Out[131]= {2 x1 + x2 + x3 + x4 + x5, -x1 - x2 + x3 - x4 + x5, -x2 + 3 x3 - x4 + 3 x5} ⩵ {1, 3, 7}
In[132]:= (* Co daje komenda Solve dla naszego układu ? *)
In[133]:= Solve[{2 x1 + x2 + x3 + x4 + x5, -x1 - x2 + x3 - x4 + x5, -x2 + 3 x3 - x4 + 3 x5} ⩵ {1, 3, 7},
{x1, x2, x3, x4, x5}]
Solve: Equations may not give solutions for all "solve" variables.
Out[133]= x4 → -1 -3 x1
2- x2, x5 → 2 -
x1
2- x3
NOF_4.nb 15
In[134]:= (* Dostaliśmy rozwiązanie na x4 i x5 zależne od x1,
x2 i x3, co wygląda rozsądnie. *)
In[135]:= x4 = -1 -3 x1
2- x2; x5 = 2 -
x1
2- x3;
In[136]:= (* Sprawdzamy, czy to rozwiązanie na x4 i x5,
uzyskane przy pomocy Solve i zalezne od x1, x2 i x3, spełnia układ równań *)
In[137]:= Simplify[2 x1 + x2 + x3 + x4 + x5 ⩵ 1]
Out[137]= True
In[138]:= Simplify[-x1 - x2 + x3 - x4 + x5 ⩵ 3]
Out[138]= True
In[139]:= Simplify[0 * x1 - x2 + 3 * x3 - x4 + 3 * x5 ⩵ 7]
Out[139]= True
In[140]:= (* A co daje LinearSolve ? *)
In[141]:= LinearSolve[A, B]
Out[141]= {4, -7, 0, 0, 0}
In[142]:= (* Na pewno nie jest to pełne rozwiązanie ! *)
Zobaczmy jeszcze na zakończenie, jak działa twierdzenie, w przypadku układu, który nie posiada
rozwiązania, czyli układu sprzecznego
In[143]:= (* Przykład 2: "z głowy" *)
In[144]:= Clear[A, DAB, X, x1, x2, x3, x4, x5, ukladKC, rA, rDAB];
In[145]:= A = {{1, 2, 3}, {1, 2, 3}, {3, 1, -1}}
Out[145]= {{1, 2, 3}, {1, 2, 3}, {3, 1, -1}}
In[146]:= MatrixForm[A]
Out[146]//MatrixForm=
1 2 31 2 33 1 -1
In[147]:= B = {1, 2, 0}
Out[147]= {1, 2, 0}
In[148]:= MatrixForm[B]
Out[148]//MatrixForm=
120
16 NOF_4.nb
In[149]:= DAB = {{1, 2, 3, 1}, {1, 2, 3, 2}, {3, 1, -1, 0}}
Out[149]= {{1, 2, 3, 1}, {1, 2, 3, 2}, {3, 1, -1, 0}}
In[150]:= MatrixForm[DAB]
Out[150]//MatrixForm=
1 2 3 11 2 3 23 1 -1 0
In[151]:= MatrixRank[A]
Out[151]= 2
In[152]:= MatrixRank[DAB]
Out[152]= 3
In[153]:= ukladKC = A.{x1, x2, x3} ⩵ B
Out[153]= {x1 + 2 x2 + 3 x3, x1 + 2 x2 + 3 x3, 3 x1 + x2 - x3} ⩵ {1, 2, 0}
In[154]:= Solve[ukladKC, {x1, x2, x3}]
Out[154]= {}
In[155]:= (* czyli Solve nie znalazł żadnego rozwiązania *)
In[156]:= LinearSolve[A, B]
LinearSolve: Linear equation encountered that has no solution.
Out[156]= LinearSolve[{{1, 2, 3}, {1, 2, 3}, {3, 1, -1}}, {1, 2, 0}]
Problem własny
Jeśli zachodzi
A.X = λ X,
to znaczy
A11 A12 ... A1nA21 A22 ... A2n... ... ... ...An1 An2 ... Ann
X1X2...Xn
= λX1X2...Xn
dla pewnej liczby λ i wektora X=
X1X2...Xn
≠
00...0
,
to liczbę λ nazywamy wartością własną macierzy A,
NOF_4.nb 17
a wektor X nazywamy wektorem własnym macierzy A związanym z wartością własną λ.
Składowe wektora własnego można uważać za rozwiązanie liniowego i jednorodnego układu n
równań na n niewiadomych
(A - λ Id ). X = 0,
gdzie Id jest macierzą jednostkową (identity matrix) n x n.
Z twierdzenia Kroneckera-Capelli’ego wynika, że taki układ może mieć niezerowe rozwiązanie wtedy i
tylko wtedy, gdy
Det[(A - λ Id )] = 0.
Równanie to nazywamy charakterystycznym (lub wiekowym), a wielomian charakterystyczny dla
zmiennej λ stanowi lewą stronę tego równania.
In[157]:= (* Przykład 1: macierz 2 x 2 *)
In[158]:= Clear[A, X, n];
In[159]:= A = {{0, 1}, {1, 0}}
Out[159]= {{0, 1}, {1, 0}}
In[160]:= MatrixForm[A]
Out[160]//MatrixForm=
0 11 0
In[161]:= Id2 = IdentityMatrix[2]
Out[161]= {{1, 0}, {0, 1}}
In[162]:= Det[A - λ * Id2]
Out[162]= -1 + λ2
In[163]:= (* To jest wielomian charakterystyczny wiekowy *)
In[164]:= rch = Det[A - λ * Id2] ⩵ 0
Out[164]= -1 + λ2 ⩵ 0
In[165]:= (* To jest równanie charakterystyczne na λ *)
In[166]:= Solve[rch, λ]Out[166]= {{λ → -1}, {λ → 1}}
18 NOF_4.nb
In[167]:= (* Mamy dwie wartości własne i możemy poszukać
"ręcznie" wektorów własnych z nimi związanych *)
In[168]:= (* λ=1 *)
In[169]:= Solve[A.{x1, x2} ⩵ {x1, x2}, {x1, x2}]
Solve: Equations may not give solutions for all "solve" variables.
Out[169]= {{x2 → x1}}
In[170]:= (* Rozwiązanie nie może być i nie jest jednoznaczne; oznacza ono,
że każdy wektor postaci {x1,x1} jest wektorem własnym A do wartości własnej 1 *)
In[171]:= A.{x1, x1} ⩵ {x1, x1}
Out[171]= True
In[172]:= (* λ= -1 *)
In[173]:= Solve[A.{x1, x2} ⩵ -{x1, x2}, {x1, x2}]
Solve: Equations may not give solutions for all "solve" variables.
Out[173]= {{x2 → -x1}}
In[174]:= (* Rozwiązanie oznacza, że każdy wektor postaci
{x1,-x1} jest wektorem własnym A do wartości własnej -1 *)
In[175]:= A.{x1, -x1} ⩵ -{x1, -x1}
Out[175]= True
In[176]:= (* Oczywiście Mathematica może wszystko to
za nas zrobić sama. Oto kilka użytecznych komend: *)
In[177]:= (* Wielomian charakterystyczny A w zmiennej λ *)
In[178]:= CharacteristicPolynomial[A, λ]Out[178]= -1 + λ2
In[179]:= (* Wartości własne macierzy A *)
In[180]:= Eigenvalues[A]
Out[180]= {-1, 1}
In[181]:= (* Wektory własne macierzy A *)
In[182]:= Eigenvectors[A]
Out[182]= {{-1, 1}, {1, 1}}
In[183]:= (* Mathematica podaje mozliwie najprostszą postać wektora własnego. Jest jasne,
ze jeśli X jest wektorem własnym, to także c*X jest wektorem własnym,
gdzie c jest dowolną liczbą różną od zera. *)
In[184]:= (* Dwie powyższe komendy można zebrać w jedną: Eigensystem *)
NOF_4.nb 19
In[185]:= pw = Eigensystem[A]
Out[185]= {{-1, 1}, {{-1, 1}, {1, 1}}}
In[186]:= pw[[1]] (* lista wartości własnych *)
Out[186]= {-1, 1}
In[187]:= nww = Length[pw[[1]]]
Out[187]= 2
In[188]:= pw[[2]] (* lista wektorów własnych *)
Out[188]= {{-1, 1}, {1, 1}}
In[189]:= Do[Print[A.pw[[2]][[i]] ⩵ pw[[1]][[i]] * pw[[2]][[i]]], {i, 1, nww}]
True
True
In[190]:= (* Czyli równanie własne jest spełnione dla obu wartości własnych macierzy A*)
In[191]:=
Przypadek ogólny
Twierdzenie: Macierz stopnia n można zdiagonalizować wtedy i tylko wtedy,gdy ma ona n liniowo
niezależnych wektorów własnych. Nie oznacza to, że wszystkie wartości własne macierzy muszą być
różne, bo nawet w tym przypadku można niekiedy znaleźć niezależne liniowo wektory! Z takich
wektorów własnych budujemy macierz U (kolumna obok kolumny). Zachodzi wtedy
U-1 A U =
λ1 0 ... 0
0 λ2 ... 0
0 0 ... 0
0 0 0 λn
,
gdzie λ1, λ2, ..., λn są wartościami własnymi (niekoniecznie różnymi) macierzy A.
Uwaga: wektory własne, z których tworzymy macierz U nie muszą być unormowane.
In[192]:= ClearAll["Global`*"]
20 NOF_4.nb
In[193]:= (* Przykład 2: macierz 3 x 3, która ma trzy różne wartości własne.
H. Arodź, K. Rościszewski, Algebra i geometria analityczna w zadaniach, Wydawnictwo Znak, Kraków 2006 *)
In[194]:= A = {{1, 1, 1 }, {0, 2, 2 }, {0, 0, 3}}
Out[194]= {{1, 1, 1}, {0, 2, 2}, {0, 0, 3}}
In[195]:= MatrixForm[A]
Out[195]//MatrixForm=
1 1 10 2 20 0 3
In[196]:= pw = Eigensystem[A]
Out[196]= {{3, 2, 1}, {{3, 4, 2}, {1, 1, 0}, {1, 0, 0}}}
In[197]:= Um = Array[U, {3, 3}];
In[198]:= Um[[All, 1]] = pw[[2]][[1]]
Out[198]= {3, 4, 2}
In[199]:= (* Nie musimy normować wektorów własnych *)
In[200]:= Um[[All, 2]] = pw[[2]][[2]]
Out[200]= {1, 1, 0}
In[201]:=
Um[[All, 3]] = pw[[2]][[3]]
Out[201]= {1, 0, 0}
In[202]:=
MatrixForm[Simplify[Inverse[Um].A.Um]]
Out[202]//MatrixForm=
3 0 00 2 00 0 1
In[203]:=
In[204]:= ClearAll["Global`*"]
In[205]:= (* Przykład 3: macierz 3 x 3, która ma podwójną wartość własną
http://en.wikipedia.orgwikiDiagonalizable_matrix#Diagonalization
*)
NOF_4.nb 21
In[206]:= A = {{-1, 3, -1 }, {-3, 5, -1 }, {-3, 3, 1}}
{{-1, 3, -1}, {-3, 5, -1}, {-3, 3, 1}}
Out[206]= {{-1, 3, -1}, {-3, 5, -1}, {-3, 3, 1}}
Out[207]= {{-1, 3, -1}, {-3, 5, -1}, {-3, 3, 1}}
In[208]:= MatrixForm[A]
Out[208]//MatrixForm=
-1 3 -1-3 5 -1-3 3 1
In[209]:=
pw = Eigensystem[A]
Out[209]= {{2, 2, 1}, {{-1, 0, 3}, {1, 1, 0}, {1, 1, 1}}}
In[210]:=
Um = Array[U, {3, 3}];
In[211]:= Um[[All, 1]] = pw[[2]][[1]]
Out[211]= {-1, 0, 3}
In[212]:= (* Nie musimy normować wektorów własnych *)
In[213]:=
Um[[All, 2]] = pw[[2]][[2]]
Out[213]= {1, 1, 0}
In[214]:=
Um[[All, 3]] = pw[[2]][[3]]
Out[214]= {1, 1, 1}
In[215]:=
MatrixForm[Simplify[Inverse[Um].A.Um]]
Out[215]//MatrixForm=
2 0 00 2 00 0 1
In[216]:=
Czy rzeczywistą macierz diagonalizuje zawsze macierz rzeczywista?
In[217]:= ClearAll["Global`*"]
22 NOF_4.nb
In[218]:= (* Przykład 4: macierz 2 x 2,
której nie da się zdiagonalizować przy pomocy rzeczywistej
macierzy. Trzeba użyć macierzy zespolonej !
http://en.wikipedia.orgwikiDiagonalizable_matrix#Diagonalization
*)
In[219]:= A = {{0, 1}, {-1, 0}}
Out[219]= {{0, 1}, {-1, 0}}
In[220]:= MatrixForm[A]
Out[220]//MatrixForm=
0 1-1 0
In[221]:= pw = Eigensystem[A]
Out[221]= {{ⅈ, -ⅈ}, {{-ⅈ, 1}, {ⅈ, 1}}}
In[222]:= Um = Array[U, {2, 2}];
In[223]:= Um[[All, 1]] = pw[[2]][[1]]
Out[223]= {-ⅈ, 1}
In[224]:= (* Nie musimy normować wektorów własnych *)
In[225]:=
Um[[All, 2]] = pw[[2]][[2]]
Out[225]= {ⅈ, 1}
In[226]:=
MatrixForm[Um]
Out[226]//MatrixForm=
-ⅈ ⅈ1 1
In[227]:= (* Macierz diagonalizująca macierz rzeczywistą jest zespolona *)
In[228]:= MatrixForm[Simplify[Inverse[Um].A.Um]]
Out[228]//MatrixForm=
ⅈ 00 -ⅈ
In[229]:=
(* Macierz A ma dwa liniowo niezależne wektory własne,
więc dała się jej zdiagonalizować ! *)
In[230]:=
NOF_4.nb 23
Czy wszystkie macierze można zdiagonalizować ?
In[231]:=
ClearAll["Global`*"]
In[232]:= (* Przykład 5: macierz, której nie da się zdiagonalizować.
http://en.wikipedia.orgwikiDiagonalizable_matrix#Diagonalization
*)
In[233]:= A = {{0, 1}, {0, 0}}
Out[233]= {{0, 1}, {0, 0}}
In[234]:= MatrixForm[A]
Out[234]//MatrixForm=
0 10 0
In[235]:= pw = Eigensystem[A]
Out[235]= {{0, 0}, {{1, 0}, {0, 0}}}
In[236]:= Um = Array[U, {2, 2}];
In[237]:= Um[[All, 1]] = pw[[2]][[1]]
Out[237]= {1, 0}
In[238]:= Um[[All, 2]] = pw[[2]][[2]]
Out[238]= {0, 0}
In[239]:=
MatrixForm[Simplify[Inverse[Um].A.Um]]
Inverse: Matrix {{1, 0}, {0, 0}} is singular.
Out[239]//MatrixForm=
Inverse[{{1, 0}, {0, 0}}].{{0, 0}, {0, 0}}
In[240]:=
(* Ta macierz nie ma dwóch liniowo niezależnych wektorów własnych,
więc nie da się jej zdiagonalizować ! *)
In[241]:=
Macierze hermitowskie (symetryczne)
Przypomnienie: macierze hermitowskie to takie macierze, które jednoczesna operacja transpozycji i
sprzężenia zespolonego (czyli sprzężenie hermitowskie) pozostawia bez zmiany. Rzeczywista macierz
hermitowska jest macierzą symetryczną.
24 NOF_4.nb
Macierze hermitowskie grają bardzo ważną role w fizyce kwantowej!
Przytoczę najprostszą postać twierdzenia, którego ogólna postać przedstawiana jest na wykładzie z
algebry.
Zakładamy, że hermitowska macierz A (A=A†) o wymiarach n x n ma n różnych wartości własnych λ1 <
λ2 < ... < λn . Niech wektory v1, v2, ..., vn. będą odpowiednimi wektorami własnymi. Można pokazać, że
wszystkie wartości własne są rzeczywiste oraz że zachodzi
vk† vi = 0 dla i ≠ k,
czyli iloczyn skalarny dwóch różnych wektorów własnych jest równy zero. Załóżmy jeszcze, że każdy
wektor jest unormowany do jedności:
vi† vi = 1 .
Z takich wektorów własnych budujemy macierz U (kolumna obok kolumny). Zachodzi wtedy
U† A U =
λ1 0 ... 0
0 λ2 ... 0
0 0 ... 0
0 0 0 λn
.
In[242]:= ClearAll["Global`*"]
In[243]:= (* Przykład 6: macierz hermitowska 2 x 2 *)
In[244]:= A = {{0, I}, {-I, 0}}
Out[244]= {{0, ⅈ}, {-ⅈ, 0}}
In[245]:= MatrixForm[A]
Out[245]//MatrixForm=
0 ⅈ-ⅈ 0
In[246]:= pw = Eigensystem[A]
Out[246]= {{-1, 1}, {{-ⅈ, 1}, {ⅈ, 1}}}
In[247]:= Um = Array[U, {2, 2}]
Out[247]= {{U[1, 1], U[1, 2]}, {U[2, 1], U[2, 2]}}
In[248]:= v1 = Normalize[pw[[2]][[1]]]
Out[248]= - ⅈ2
,1
2
NOF_4.nb 25
In[249]:= v2 = Normalize[pw[[2]][[2]]]
Out[249]= ⅈ2
,1
2
In[250]:= MatrixForm[v1]
Out[250]//MatrixForm=
- ⅈ2
1
2
In[251]:= MatrixForm[v2]
Out[251]//MatrixForm=
ⅈ2
1
2
In[252]:= Um[[All, 1]] = v1
Out[252]= - ⅈ2
,1
2
In[253]:= Um[[All, 2]] = v2
Out[253]= ⅈ2
,1
2
In[254]:= MatrixForm[Um]
Out[254]//MatrixForm=
- ⅈ2
ⅈ2
1
2
1
2
In[255]:= MatrixForm[ConjugateTranspose[Um].A.Um]
Out[255]//MatrixForm=
-1 00 1
In[256]:=
In[257]:= ClearAll["Global`*"]
In[258]:= (* Przykład 7: macierz hermitowska 3 x 3 *)
In[259]:= A = {{1, 0, 1 - I}, {0, 1, 3}, {1 + I, 3, 2}}
Out[259]= {{1, 0, 1 - ⅈ}, {0, 1, 3}, {1 + ⅈ, 3, 2}}
26 NOF_4.nb
In[260]:= MatrixForm[A]
Out[260]//MatrixForm=
1 0 1 - ⅈ0 1 3
1 + ⅈ 3 2
In[261]:= pw = Eigensystem[A]
Out[261]= 32
1 + 5 , -3
2-1 + 5 , 1,
2 - 2 ⅈ1 + 3 5
,6
1 + 3 5, 1, - 2 - 2 ⅈ
-1 + 3 5, -
6
-1 + 3 5, 1, {-3 + 3 ⅈ, 2, 0}
In[262]:= nww = Length[pw[[1]]]
Out[262]= 3
In[263]:= Do[Print[A.pw[[2]][[i]] ⩵ pw[[1]][[i]] * pw[[2]][[i]]], {i, 1, nww}]
True
True
True
In[264]:= Um = Array[U, {3, 3}]
Out[264]= {{U[1, 1], U[1, 2], U[1, 3]}, {U[2, 1], U[2, 2], U[2, 3]}, {U[3, 1], U[3, 2], U[3, 3]}}
In[265]:= v1 = Normalize[pw[[2]][[1]]]
Out[265]= 2 - 2 ⅈ
1 + 3 5 1 + 44
1+3 5 2
,6
1 + 3 5 1 + 44
1+3 5 2
,1
1 + 44
1+3 5 2
In[266]:= v2 = Normalize[pw[[2]][[2]]]
Out[266]= - 2 - 2 ⅈ
-1 + 3 5 1 + 44
-1+3 5 2
, -6
-1 + 3 5 1 + 44
-1+3 5 2
,1
1 + 44
-1+3 5 2
In[267]:= v3 = Normalize[pw[[2]][[3]]]
Out[267]= - 3 - 3 ⅈ22
,2
11, 0
In[268]:= Simplify[Conjugate[v1].v1]
Out[268]= 1
In[269]:= Simplify[Conjugate[v2].v1]
Out[269]= 0
In[270]:= Simplify[Conjugate[v3].v1]
Out[270]= 0
NOF_4.nb 27
In[271]:= Simplify[Conjugate[v1].v2]
Out[271]= 0
In[272]:= Simplify[Conjugate[v2].v2]
Out[272]= 1
In[273]:= Simplify[Conjugate[v3].v2]
Out[273]= 0
In[274]:= Simplify[Conjugate[v1].v3]
Out[274]= 0
In[275]:= Simplify[Conjugate[v2].v3]
Out[275]= 0
In[276]:= Simplify[Conjugate[v3].v3]
Out[276]= 1
In[277]:= MatrixForm[v1]
MatrixForm[v2]
MatrixForm[v3]
Out[277]//MatrixForm=
2-2 ⅈ
1+3 5 1+44
1+3 52
6
1+3 5 1+44
1+3 52
1
1+44
1+3 52
Out[278]//MatrixForm=
- 2-2 ⅈ
-1+3 5 1+44
-1+3 52
- 6
-1+3 5 1+44
-1+3 52
1
1+44
-1+3 52
Out[279]//MatrixForm=
- 3-3 ⅈ22
2
11
0
28 NOF_4.nb
In[280]:= Um[[All, 1]] = v1
Out[280]= 2 - 2 ⅈ
1 + 3 5 1 + 44
1+3 5 2
,6
1 + 3 5 1 + 44
1+3 5 2
,1
1 + 44
1+3 5 2
In[281]:= Um[[All, 2]] = v2
Out[281]= - 2 - 2 ⅈ
-1 + 3 5 1 + 44
-1+3 5 2
, -6
-1 + 3 5 1 + 44
-1+3 5 2
,1
1 + 44
-1+3 5 2
In[282]:= Um[[All, 3]] = v3
Out[282]= - 3 - 3 ⅈ22
,2
11, 0
In[283]:= MatrixForm[Simplify[Um.ConjugateTranspose[Um]]]
Out[283]//MatrixForm=
1 0 00 1 00 0 1
In[284]:= (* To oznacza, że macierz U jest unitarna ! *)
In[285]:= pw[[1]]
Out[285]= 32
1 + 5 , -3
2-1 + 5 , 1
In[286]:= MatrixForm[Simplify[ConjugateTranspose[Um].A.Um]]
Out[286]//MatrixForm=
3
21 + 5 0 0
0 - 3
2-1 + 5 0
0 0 1
NOF_4.nb 29