Linalg.nb 1 Lineaire Algebra André Heck © 2001 AMSTEL Instituut, Universiteit van Amsterdam Werk het notebook aandachtig door en maak de (genummerde) oefeningen aan het einde van elke sectie. Succes! Å Introductie In dit Mathematica notebook behandelen we elementaire berekeningen uit de lineaire algebra zoals: - basis van vectorruimte en de som en doorsnede van vectorruimten - inproduct en uitproduct van vectoren - optellen, vermenigvuldigen en machtsverheffen van matrices - rang, kern, rijruimte en kolomruimte van matrices Å Telkens opnieuw beginnen met In[23]:= Clear "ë" Å é Vectorruimten Definiëren van vectoren Een vector wordt in Mathematica gerepresenteerd als een lijst (coëfficiënten tussen accolades). Bijvoorbeeld: In[24]:= 4, 3, 5 Out[24]= 4, 3, 5 Deze vector kan in kolomnotatie op het scherm afgedrukt worden. Twee manieren zijn: In[25]:= MatrixForm % Out[25]//MatrixForm= 4 3 5 Linalg.nb 2 In[26]:= ColumnForm %% Out[26]= 4 3 5 Let op: deze opdrachten zijn er alleen om een vector in mooie gedaante op het scherm te krijgen. Je kunt met de uitvoernotatie niet rekenen zoals onderstaande opdracht aantoont: In[27]:= % + % Out[27]= 2 4 3 5 Het is vervelend om bij een grote vector alle componenten zelf in te toetsen. Meestal kan je met behulp van het Mathematica commando Table een vector wel op een slimmere manier definiëren. Drie voorbeelden van vectoren met steeds 100 componenten illustreren dit: - Een vector random gevuld met gehele getallen tussen 0 en 5: In[28]:= Table Random Integer, 5 , Out[28]= 3, 2, 1, 4, 1, 2, 2, 4, 3, 2, 3, 3, 5, 0, 2, 0, 5, 2, 3, 1, 100 3, 3, 4, 5, 1, 0, 1, 3, 2, 1, 0, 3, 3, 2, 2, 1, 1, 4, 1, 1, 3, 2, 1, 4, 5, 1, 3, 2, 3, 5, 0, 4, 3, 3, 5, 4, 0, 2, 1, 3, 3, 1, 4, 2, 2, 3, 0, 5, 4, 3, 5, 4, 1, 4, 0, 3, 3, 2, 1, 5, 4, 4, 2, 3, 1, 4, 0, 5, 3, 4, 0, 2, 4, 5, 3, 4, 0, 4, 5, 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - Een nulvector In[29]:= Table 0, Out[29]= 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100 0, 0, 0, 0, 0, 0, 0, 0, - Een vector met als i -de component i2 : In[30]:= Table i ^ 2, Out[30]= é i, 100 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401, 2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969, 4096, 4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241, 6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836, 9025, 9216, 9409, 9604, 9801, 10000 Elementaire bewerkingen Het resultaat van optelling van vectoren en van scalaire vermenigvuldiging wordt gewoonweg uitgerekend: In[31]:= 4, 3, 5 Out[31]= 6, 4, 8 + 2, 1, 3 Linalg.nb 3 In[32]:= 2 * 4, 3, 5 Out[32]= 8, 6, 10 Maar let op: Mathematica houdt niet altijd zelf bij of symbolen voor een vector, matrix of iets anders staan. Dit verklaart resultaten zoals In[33]:= 4, 3, 5 Out[33]= 4 + v, 3 + v, 5 + v + v Gebruik het commando Dot of de operator . om het inproduct tussen twee vectoren uit te rekenen. In[34]:= Dot x1, x2, x3 , y1, y2, y3 Out[34]= x1 y1 + x2 y2 + x3 y3 In[35]:= a, b, c . x, y, z Out[35]= a x + b y + c z Het uitproduct van twee vectoren kan als volgt berekend worden: In[36]:= Cross Out[36]= - x1, x2, x3 , y1, y2, y3 x3 y2 + x2 y3, x3 y1 - x1 y3, - x2 y1 + x1 y2 Om een component van een vector te kiezen gebruik je dubbele rechte haken. Een voorbeeld maakt dit duidelijk: In[37]:= v a, b, c, d ; v = 3 Out[37]= c é Basis, som en doorsnede van vectorruimten We bekijken de volgende vier vectoren: In[38]:= u1 = u2 w1 w2 = 2, 3, 1, 5, = = 3, 4, - 1, - 4, - 1, 0, 1, 0, 0 1 0 3 ; ; ; ; Maak een matrix met de vectoren u1 en u2 als rijvectoren: In[42]:= u1, u2 2, Out[42]= - 3, 1, 0 , 3, In[43]:= MatrixForm % Out[43]//MatrixForm= 2 3 - 3 1 0 4 0 1 Bereken de kern van deze matrix: - 4, 0, 1 Linalg.nb 4 In[44]:= NullSpace %% Out[44]= - 3, - 2, 0, 1 , 4, 3, 1, 0 Dit betekent dat het opspansel van u1 en u2 de oplossingsverzameling is van het stelsel - 3 x1 - 2 x2 + x4 = 0, 4 x1 + 3 x2 + x3 = 0 is. Het uitrekenen van een basis voor de som van twee vectorruimten is eenvoudig. Zet voortbrengers van de vectorruimten als rijvectoren in een matrix.Veeg met rijen tot kanonieke vorm. De niet-nulrijen vormen een basis van de somruimte. Als voorbeeld berekenen we een basis van het opspansel van u1, u2, w1 en w2. In[45]:= u1, u2, w1, w2 2, Out[45]= - 3, 1, 0 , 3, - 4, 0, 1 , 1, - 1, 1, 0 , 5, - 4, 0, 3 In[46]:= MatrixForm % Out[46]//MatrixForm= 2 3 1 5 3 4 -1 -4 1 0 1 0 - 0 1 0 3 Vegen met rijen levert een basis op: In[47]:= RowReduce %% Out[47]= 1, 0, 0, 1 , 0, 1, 0, 1 , 0, 0, 1, 2 þþþþ 1 , 0, 0, 0, 0 2 - þþþþ In[48]:= MatrixForm % Out[48]//MatrixForm= 1 0 0 0 1 0 0 0 1 0 0 0 1 1 2 1 - þþþþ 2 þþþþ 0 0 1 1 0 De somruimte is 3-dimensionaal met basis , en 0 0 1 1 þþþþ 2 1 0 0 0 2 0 Of voor wie niet van breuken houdt: , en . 0 0 2 1 1 -1 0 0 1 . 1 2 - þþþþ Het uitrekenen van de doorsnede van twee vectorruimten is ingewikkelder. Als voorbeeld nemen we de doorsnede van de vectorruimten opgespannen door u1, u2 en door w1, w2. In[49]:= NullSpace Out[49]= - 3, - 2, 0, 1 , 4, 3, 1, 0 In[50]:= NullSpace Out[50]= - 3, - u1, u2 w1, w2 3, 0, 1 , 4, 5, 1, 0 Linalg.nb 5 In[51]:= Join %%, % Out[51]= - 3, - 2, 0, 1 , 4, 3, 1, 0 , - 3, - 3, 0, 1 , 4, 5, 1, 0 In[52]:= NullSpace % Out[52]= 1, 0, - 4, 3 In[53]:= MatrixForm % 1 Out[53]//MatrixForm= 1 0 -4 3 1 0 De doorsnede is 1-dimensionaal en wordt opgespannen door de vector . -4 3 é 1. Vectorruimte In ¶5 beschouwen we twee deelvectorruimten V1 en V2 . V1 is de oplossingsruimte van het stelsel vergelijkingen 3 x1 - 2 x2 + 2 x3 + 2 x4 - 3 x5 = 0, 2 x1 + 5 x2 - 5 x3 - 5 x4 - 2 x5 = 0, - x1 - x2 + x3 + x4 + x5 = 0 V2 is het opspansel van v1 , v2 , v3 en v4 gegeven door v1 = 1 2 1 , v2 = 3 3 3 2 - 1 , v3 = 1 1 1 3 2 en v4 = 2 2 3 1 -2 2 2 Bereken een basis van V1 , V2 , V1 + V2 en V1 Å é V2 . Ga in dit voorbeeld na dat de dimensiestelling klopt. Matrices Definiëren van matrices In[54]:= Clear "ë" Een matrix wordt in Mathematica gerepresenteerd als een lijst van lijsten. Bijvoorbeeld: In[55]:= 1, 2, 5 , 3, 4, 3 Out[55]= 1, 2, 5 , 3, 4, 3 In traditionele matrixnotatie komt dit overeen met: Linalg.nb 6 In[56]:= MatrixForm % Out[56]//MatrixForm= 1 2 5 3 4 3 Let op: MatrixForm is alleen bedoeld voor mooie matrixnotatie, niet om mee te rekenen. Kijk maar: In[57]:= A MatrixForm = 1, 2 , 3, 4 Out[57]//MatrixForm= 1 2 3 4 In[58]:= A Out[58]= 2 + A 1 2 3 4 Met behulp van het Mathematica commando’s Table en Outer kun je een matrix soms op een slimmere manier definiëren. Enkele voorbeelden: In[59]:= Table x ^ i * y ^ j, i, 4 , j, 4 x y, x y2 , x y3 , x y4 , x2 y, x2 y2 , x2 y3 , x2 y4 , x3 y, x3 y2 , x3 y3 , x3 y4 , x4 y, x4 y2 , x4 y3 , x4 y4 Out[59]= In[60]:= MatrixForm % Out[60]//MatrixForm= x y x y2 x y3 x y4 x2 y x2 y2 x2 y3 x2 y4 x3 y x3 y2 x3 y3 x3 y4 x4 y x4 y2 x4 y3 x4 y4 In[61]:= Table 0, 5 , 5 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0 Out[61]= In[62]:= MatrixForm % Out[62]//MatrixForm= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Een matrixcoëfficient kun je kiezen met dubbele rechte haken. Je kunt ook een hele rij aanwijzen. Een voorbeeld maakt dit duidelijk: In[63]:= A = 1, 2, 3 , 4, 5, 6 , 7, 8, 9 Out[63]//MatrixForm= 1 2 3 4 5 6 7 8 9 ; MatrixForm A Linalg.nb 7 In[64]:= A 2, 3 Out[64]= 6 2 In[65]:= A 4, 5, 6 Out[65]= é Elementaire bewerkingen Het resultaat van optelling en vermenigvuldiging van matrices en van scalaire vermenigvuldiging wordt gewoonweg uitgerekend: In[66]:= A = 1, 2 , 3, 4 ; MatrixForm A Out[66]//MatrixForm= 1 2 3 4 In[67]:= B = a, 2 , b, 3 ; MatrixForm B Out[67]//MatrixForm= a 2 b 3 In[68]:= A + B Out[68]= 1 + a, 4 , 3 + b, 7 In[69]:= MatrixForm % Out[69]//MatrixForm= 1+a 4 3+b 7 In[70]:= c * A Out[70]= c, 2 c , 3 c, 4 c In[71]:= MatrixForm % Out[71]//MatrixForm= c 2c 3c 4c Maar let op: Mathematica houdt niet altijd zelf bij of symbolen voor een vector, matrix of voor iets anders staan. Dit verklaart resultaten zoals In[72]:= 1, 2 , 3, 4 Out[72]= 1 + M, 2 + M , 3 + M, 4 + M + M Gebruik het commando Dot of de operator . om het product tussen twee matrices of het matrix-vector product uit te rekenen. Linalg.nb 8 In[73]:= A 1, 2, 3 , 4, 5, 6 = ; MatrixForm A Out[73]//MatrixForm= 1 2 3 4 5 6 In[74]:= B a, 2 , b, 3 , c, 4 = ; MatrixForm B Out[74]//MatrixForm= a 2 b 3 c 4 In[75]:= A.B a + 2 b + 3 c, 20 , 4 a + 5 b + 6 c, 47 Out[75]= In[76]:= MatrixForm % Out[76]//MatrixForm= a + 2 b + 3 c 20 4 a + 5 b + 6 c 47 In[77]:= B.A 8 + a, 10 + 2 a, 12 + 3 a , 12 + b, 15 + 2 b, 18 + 3 b , 16 + c, 20 + 2 c, 24 + 3 c Out[77]= In[78]:= MatrixForm % Out[78]//MatrixForm= 8 + a 10 + 2 a 12 + 3 a 12 + b 15 + 2 b 18 + 3 b 16 + c 20 + 2 c 24 + 3 c In[79]:= v = 7, 8, 9 ; MatrixForm v Out[79]//MatrixForm= 7 8 9 In[80]:= A . v Out[80]= 50, 122 In[81]:= MatrixForm % Out[81]//MatrixForm= 50 122 In[82]:= %% . A Out[82]= 538, 710, 882 In[83]:= MatrixForm % Out[83]//MatrixForm= 538 710 882 Linalg.nb 9 Nogmaals: het symbool * is voor scalaire vermenigvuldiging en voor elementsgewijze vermenigvuldiging en niet voor matrix-vermenigvuldiging of voor matrix-vector-rmenigvuldiging. In[84]:= 1, 2 , 3, 4 Out[84]= a, 2 b , 3 c, 4 d * a, b , c, d Net zo: Het symbool ^ is bedoeld voor elementsgewijs machtsverheffen en niet voor machtsverheffen van vierkante matrices. Hiervoor moet je het commando MatrixPower gebruiken. In[85]:= A = 1, 2, 3 , 4, 5, 6 , 7, 8, 9 Out[85]= 1, 2, 3 , 4, 5, 6 , 7, 8, 9 In[86]:= A ^ 2 1, 4, 9 , 16, 25, 36 , 49, 64, 81 Out[86]= In[87]:= MatrixPower A, 2 30, 36, 42 , 66, 81, 96 , 102, 126, 150 Out[87]= In[88]:= A . A 30, 36, 42 , 66, 81, 96 , 102, 126, 150 Out[88]= In[89]:= MatrixPower A, 10 132476037840, 162775103256, 193074168672 , 300005963406, 368621393481, 437236823556 , 467535888972, 574467683706, 681399478440 Out[89]= é Basisopdrachten We bekijken de volgende matrix In[90]:= A 5, = - 1 , 3, 1 ; MatrixForm A Out[90]//MatrixForm= 5 3 1 1 - De getransponeerde van A, genoteerd als At , bereken je met het commando Transpose. Dit stelt je in staat om matrixoperaties met kolommen te herschrijven in termen van rij-operaties en vice versa. In[91]:= Transpose A 5, 3 , Out[91]= - 1, 1 In[92]:= MatrixForm % Out[92]//MatrixForm= 5 3 1 1 - De inverse bereken je als volgt: Linalg.nb 10 In[93]:= Inverse A 1 1 , þþþþ , 8 8 Out[93]= þþþþ 3 5 , þþþþ 8 8 - þþþþ In[94]:= MatrixForm % Out[94]//MatrixForm= 1 8 3 - þþþþ 8 1 8 5 þþþþ 8 þþþþ þþþþ In[95]:= MatrixPower A, 1 1 , þþþþ , 8 8 Out[95]= þþþþ - 1 3 5 , þþþþ 8 8 - þþþþ En niet d.m.v. In[96]:= A ^ - 1 1 , 5 Out[96]= þþþþ - 1 , 1 ,1 3 þþþþ We bekijken nu de volgende matrix: In[97]:= M 3, 2, 1 , 2, 1, 0 , = - 1, 2, 5 ; MatrixForm M Out[97]//MatrixForm= 3 2 1 2 1 0 -1 2 5 De kern en een basis van de rijruimte van de matrix worden berekend met de commando’s NullSpace en RowReduce. In[98]:= NullSpace M Out[98]= 1, - 2, 1 In[99]:= RowReduce M Out[99]= 1, 0, - 1 , 0, 1, 2 , 0, 0, 0 De (rij)rang van M lees je af en is gelijk aan 2. Er zijn geen ingebouwde commando’s om een basis van de kolomruimte van M te bereken. Maar dit kun je eenvoudig zelf doen d.m.v. rijreductie van de getransponeerde matrix M t . In[100]:= MatrixForm M Out[100]//MatrixForm= 3 2 1 2 1 0 -1 2 5 In[101]:= Transpose M Out[101]= 3, 2, - 1 , 2, 1, 2 , 1, 0, 5 Linalg.nb 11 In[102]:= RowReduce % 1, 0, 5 , 0, 1, Out[102]= - 8 , 0, 0, 0 In[103]:= Transpose % 1, 0, 0 , 0, 1, 0 , 5, Out[103]= - 8, 0 In[104]:= MatrixForm % Out[104]//MatrixForm= 1 0 5 0 0 1 0 -8 0 Het is gemakkelijk om zelf een procedure kolomreductie te introduceren: In[105]:= kolomreductie a_ := Transpose RowReduce Transpose a In[106]:= kolomreductie M 1, 0, 0 , 0, 1, 0 , 5, Out[106]= - 8, 0 Waarschuwing: waar je wel op moet letten is dat Mathematica geen speciale gevallen onderscheidt. Stel dat we in de matrix M het element op plaats (3,3) vervangen door een onbepaalde, zeg x. In[107]:= M 3, 3 = x; MatrixForm M Out[107]//MatrixForm= 3 2 1 2 1 0 -1 2 x Als we nu om een basis van de rijruimte vragen, dan krijgen we 3 basisvectoren! Dit antwoord is correct voor alle waarden van x behalve voor x= 5. In[108]:= RowReduce M Out[108]= 1, 0, 0 , 0, 1, 0 , 0, 0, 1 Mathematica lost dus alleen het algemene geval op en laat speciale gevallen buiten beschouwing. Kortom, wanneer een matrix behalve getallen ook symbolen bevat, dan moet je heel erg goed op je tellen passen. Je kunt natuurlijk wel zelf het veegproces aansturen en Mathematica alleen als rekenhulp gebruiken. In ons voorbeeld: begin met vegen m.b.v. eerste rij in M. We werken in een kopie, zeg m. Linalg.nb 12 In[109]:= m = M; MatrixForm m m 2 = m 1, 1 MatrixForm m * m 2 - m 2, 1 * m 1 ; m 3 = m 1, 1 MatrixForm m * m 3 - m 3, 1 * m 1 ; Out[110]//MatrixForm= 3 2 1 2 1 0 -1 2 x Out[112]//MatrixForm= 3 0 -1 2 1 2 - 1 2 x - Out[114]//MatrixForm= 3 0 0 2 1 1 -2 8 1+3x - Ga nu door met vegen m.b.v. de tweede rij: In[115]:= m 1 = m 2, 2 MatrixForm m * m 1 - m 1, 2 * m 2 ; m 3 = m 2, 2 MatrixForm m * m 3 - m 3, 2 * m 2 ; Out[116]//MatrixForm= 3 0 0 0 3 1 -2 8 1+3x - - Out[118]//MatrixForm= 3 0 0 0 3 1 -2 0 15 - 3 x - - Nu zie je een nulrij ontstaan als 15 - 3 x = 0, oftwel als x = 5. é 2. Matrixrekening Neem de volgende vijf matrices: 0 0 0 9 -3 2 1 þþþþ 0 0 0 0 1 2 A= ,B= ,C= 1 7 4 0 þþþþ3 0 0 1 2 0 0 þþþþ2 0 3 (i) Bereken A 1 , A B, A5 - A, Bt A. - 3 4 4 - 1 7 3 - 0 -2 10 , D = 12 -3 6 - 2 -5 7 20 en E = -4 11 - 2 1 1 - 14 10 - 13 8 6 -8 Linalg.nb 13 (ii) Bereken M 2 , M 3 , M 4 en M 5 voor M willekeurig gekozen natuurlijk getal n. Å = C, M = D en M = E . Geef een formule voor M n , voor een Stelsels van lineaire vergelijkingen Mathematica kent commando’s waarmee je een stelsel vergelijkingen kunt omzetten in matrix- en in vectorvorm. We beginnen met een schone lei en introduceren 3 vergelijkingen in 3 onbekenden: In[119]:= Clear "ë" ; v1 v2 v3 = = = 3 * x + 2 * y + z ç 39; 2 * x + 3 * y + z ç 34; x + 2 * y + 3 * z ç 26; Met het volgende commando maken we een matrix m en een vector b uit het gegeven stelsel vergelijkingen. Eerst laden we nog het nodige pakket: In[123]:= LinearAlgebra‘; m, b = LinearEquationsToMatrices << 3, 2, 1 , 2, 3, 1 , 1, 2, 3 Out[124]= v1, v2, v3 , x, y, z , 39, 34, 26 Je kunt nu met m en b verder werken: In[125]:= MatrixForm m Out[125]//MatrixForm= 3 2 1 2 3 1 1 2 3 In[126]:= MatrixForm b Out[126]//MatrixForm= 39 34 26 We maken een vector w voor de onbekenden: In[127]:= w = x, y, z ; Het stelsel vergelijkingen is nu als volgt te schrijven met behulp van matrixvermenigvuldiging (punt!): In[128]:= m.w Out[128]= ç b 3 x + 2 y + z, 2 x + 3 y + z, x + 2 y + 3 z == 39, 34, 26 Je ziet hier drie vergelijkingen in één. Het is een vergelijking in vectorvorm. Het resultaat zou je zelf waarschijnlijk als volgt noteren: In[129]:= Map MatrixForm, % Out[129]= 3x+2y+z 2x+3y+z x+2y+3z == 39 34 26 Linalg.nb 14 We kunnen deze vergelijking in vectorvorm nog steeds oplossen. In[130]:= Solve %%, x Out[130]= é x, y, z 37 17 11 , y þþþþþþþ , z þþþþþþþ 4 4 4 þþþþþþþ 3. Stelsel van lineaire vergelijkingen Veronderstel dat het volgende stelsel van vergelijkingen in x, y en z oplosbaar is. 3 x - 5 y + 7 z = 11 4 x - 6 y + 8 z = 12 5 x - 8 y + 11 z = a 6 x - 9 y + 12 z = 18 Bepaal a en de oplossingsverzameling hiervoor. Å Lineaire afbeeldingen In[131]:= Clear "ë" Mathematica is handig in het gebruik om rij- en kolom-operaties op matrices uit te voeren. Dus ook om lineaire afbeeldingen te bestuderen. Ter illustratie nemen we de lineaire afbeelding van ¶4 naar ¶3 met de volgende matrix: In[132]:= A = 3, 2, 1, 1 , 2, 3, 2, MatrixForm A - 1 , 1, - 1, - 1, 2 ; Out[133]//MatrixForm= 3 2 1 2 3 -1 1 2 -1 1 1 2 - Dit is het voorbeeld uit hoofdstuk 3, paragraaf 4 van het dictaat ’Lineaire algebra 1A’, dat de dimensieformule voor lineaire afbeeldingen behandelt. We bepalen een basis voor de kern en het beeld van de afbeelding op een manier zoals beschreven in het dictaat. Er zijn twee verschillen: 1) In Mathematica werekn we bij voorkeur met rijoperaties i.p.v. met kolomoperaties: we zullen dus steeds naar getransformeerde matrices kijken. 2) We voegen de identiteitsmatrix niet aan de bovenkant van de gegeven matrix toe, maar aan de onderkant omdat de rijreductie in Mathematica alleen van boven naar beneden werkt en niet zoals in het dictaat op een deelmatrix slaat. Eerst voegen we aan deze matrix met het commando Join aan de onderkant een identieke matrix toe. Linalg.nb 15 In[134]:= a = Join A, IdentityMatrix 4 ; MatrixForm a Out[134]//MatrixForm= 3 2 1 1 0 0 0 2 3 -1 0 1 0 0 1 2 -1 0 0 1 0 1 1 2 0 0 0 1 - We transponeren de matrix en gaan dan met rijen vegen: In[135]:= a = RowReduce Transpose a ; MatrixForm a Out[135]//MatrixForm= 1 0 0 1 1 - 1 3 1 þþþþ 3 5 - þþþþ 3 5 - þþþþ 3 0 0 þþþþ 1 0 0 0 0 0 1 0 0 0 0 0 1 2 3 1 - þþþþ 3 4 - þþþþ 3 1 - þþþþ 3 þþþþ We transponeren opnieuw. In[136]:= a = Transpose a ; MatrixForm a Out[136]//MatrixForm= 1 0 1 0 0 0 1 -1 0 0 1 3 2 þþþþ 3 1 3 1 - þþþþ 3 þþþþ þþþþ 0 0 0 1 0 5 3 4 þþþþ 3 0 0 0 0 1 5 3 1 þþþþ 3 - þþþþ - þþþþ - - Wat we gedaan hebben kun je ook zien als kolom-operaties losgelaten op a. 1 De eerste drie rijen vormen de kolom-gereduceerde matrix van A. Een basis van Im(A) is dus 0 , 1 controle: 0 1 . Ter -1 In[137]:= Transpose RowReduce Transpose A 1, 0, 0, 0 , 0, 1, 0, 0 , 1, Out[137]= - 1, 0, 0 In[138]:= MatrixForm % Out[138]//MatrixForm= 1 0 1 0 0 0 1 0 0 -1 0 0 De kolommen van de onderste 4×4 submatrix vormen een basis van 4 en worden door de lineaire transformatie 1 0 0 1 afgebeeld op de kolommen erboven. Dus is een basis van ker(A ) gevonden: 5 , 5 ¶ - þþþþ 3 4 - þþþþ 3 - þþþþ 3 1 - þþþþ 3 Linalg.nb 16 3 0 0 3 of voor wie niet van breuken houdt: , . -5 -5 -4 -1 We controleren dat deze vectoren inderdaad op 0 worden afgebeeld: In[139]:= A. 3, 0, Out[139]= é 5, - 4 - 5, - 1 0, 0, 0 In[140]:= A. 0, 3, Out[140]= - 0, 0, 0 4. Lineaire afbeelding De lineaire afbeelding L : 4 ¶ 3 ¶ is gedefinieerd door: x1 x2 L x3 x4 (i) Bepaal bases van beeld en kern van L (ii) Wat is de matrix van L 1 0 als basis in ¶4 : , 1 0 en als basis in 3 ¶ : wanneer je kiest 1 1 -1 1 -1 1 , , 0 1 0 0 0 1 2 1 , -1 - 1 1 1 en 1 2 1 - = x1 + 2 x2 - x3 2 x1 + 2 x3 - x4 3 x1 + 2 x2 + x3 - x4