Wyznacznik macierzy kwadratowej -...

29
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 A ik . Utwórzmy iloczyn A 1 α 1 A 2 α 2 ... A nα 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 ) A 1 α 1 A 2 α 2 ... A nα 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 (14) 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 42, potem 32 lub ich inna liczba, ale zawsze parzysta ! *)

Transcript of Wyznacznik macierzy kwadratowej -...

Page 1: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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 ! *)

Page 2: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 3: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 4: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 5: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 6: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 7: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 8: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 9: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 10: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 11: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 12: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 13: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 14: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 15: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 16: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 17: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 18: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 19: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 20: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 21: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 22: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 23: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 24: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 25: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 26: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 27: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 28: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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

Page 29: Wyznacznik macierzy kwadratowej - users.uj.edu.plusers.uj.edu.pl/~golak/NOF18-19/NOF_4.pdfPrzytaczając definicję liczb zespolonych, wyznacznika, wypowiedź twierdzenia Cramera oraz

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