Computeralgebra met Maxima
9. Matrices en vectoren 9.1. Vectoren In Maxima is een vector een datatype bestaande uit een geordende lijst (rij) van gelijksoortige elementen welke via een index kunnen worden geselecteerd. In de meeste programmeertalen spreekt men bij dit datatype van een array ; een vector kunnen we dan dus zien als eendimensionale matrix. Voorbeeld : Het selecteren van de elementen van een vector gebeurt via een index, die tussen vierkante haakjes wordt geplaatst , bijvoorbeeld a[1] voor het eerste element van de vector a. De index n is een positief geheel getal en definieert het n-de element gerekend vanaf het linker einde van de vector.
Overzicht van functies en operatoren voor de vectorrekening: +, -
Optellen, aftrekken van vectoren
*, /
Vermenigvuldigen met resp. delen door een getal.
. (een punt)
Inwendig (scalair) product van twee vectoren Vectorieel of uitwendig product van twee vectoren. Tevoren moet eerst met de opdracht load (“vect”) het betreffende pakket geladen worden. Het uitwendig of vectorieel product van a en b wordt dan verkregen door de opdracht express (a~b) Bepaalt de dimensie van een vector = het aantal elementen van de vector
~
length
1
Matrices en vectoren
9.1.1. Optellen van vectoren Het spreekt vanzelf dat bij het optellen en aftrekken van vectoren, deze van gelijke lengte dimensie moeten zijn.
Het optellen/aftrekken van vectoren gebeurt dus elementsgewijs. Bij vermenigvuldiging met een getal wordt elk element van de vector daarmee vermenigvuldigd
9.1.2. Het inwendig product (scalair product) De begrippen inproduct, lengte, hoek en eenheidsvector hebben in elke dimensie betekenis!
De vectoren b en c staan dus loodrecht op elkaar. Met behulp van het inproduct is het bijvoorbeeld ook vrij een eenvoudig het middelloodvlak van het lijnstuk AB te bepalen. Hierbij zijn A en B de eindpunten van de vectoren a resp. b. Het midden van AB heeft de plaatsvector (a+b)/2. Het middelloodvlak mvab bestaat nu uit punten met plaatsvectoren [x,y,z] waarvoor geldt dat [x, y, z] – (a+b)/2 loodrecht staat op b-a.
2
Computeralgebra met Maxima
9.1.3. Lengte (norm) van een vector De lengte van een vector wordt berekend met behulp van de tweedemachtswortel uit de som van de kwadraten van de elementen (kentallen) van de vector. De wiskundige notatie voor de lengte van een vector v : v De lengte van een vector is dus niets anders dan de tweedemachtswortel uit het inproduct van de vector met zichzelf :
We kunnen hiervan nog een functie maken:
3
Matrices en vectoren
9.1.4. Hoek tussen twee vectoren Voor de hoek ϕ tussen de vectoren p en q geldt : p.q = p ⋅ q ⋅ cos(ϕ ) . Bij gegeven vectoren p en q kan hieruit ϕ worden bepaald via de betrekking: cos(ϕ ) =
p.q p⋅q
Opgave 9.1 Schrijf een functie hoek(p,q) welke bij twee gegeven vectoren p en q de scherpe hoek tussen p en q bepaalt. Bepaal met behulp van deze functie ∠ ABC in ABC met A(1,2), B(4,2) en C(4,6). 9.1.5. Het uitwendig product (vectorieel product) Het uitwendig product is, evenals het inproduct, het product van twee vectoren. Maar er is een groot verschil met het inproduct! Het uitproduct is alleen gedefinieerd in de 3 . Bovendien is de uitkomst weer een vector in de 3 en wel een vector die loodrecht staat op de vectoren waarmee u begon. De wiskundige notatie is p × q . Voor de lengte van de vector p × q geldt: p × q = p ⋅ q ⋅ sin(ϕ ) .
4
Computeralgebra met Maxima
Merk op dat de vectoren p × q en q × p tegengesteld zijn. De vectoren p × q en q × p staan loodrecht op de vectoren p en q
We kunnen nu nog met behulp van Maxima controleren of inderdaad geldt dat p × q = p ⋅ q ⋅ sin(ϕ ) .
Opgave 9.2 Bepaal in driehoek ABC met A(-5,-2), B(6,-1) en C(2,7) de middelloodlijnen van AB en BC, Evenals de straal en het middelpunt van de omgeschreven cirkel van driehoek ABC.
9.2. Matrices In deze cursus verstaan we onder een matrix een rechthoekig getallenschema. Een matrix wordt gekenmerkt door het aantal rijen en het aantal kolommen. Bijvoorbeeld : een 4 × 3 matrix is een matrix met 4 rijen en 3 kolommen, ofwel een matrix bestaande uit 4 vectoren elk met 3 elementen. De invoer van matrices kan in Maxima op twee verschillende manieren: • Via het menu “Algebra → Enter matrix” komt u in een dialoogvenster : opgave van de dimensies van de matrix en de invoer van de elementen • Directe invoer via het toetsenbord middels de opdracht matrix ( ). Bijvoorbeeld A: matrix ([3,2], [1,2], [1,0])
5
Matrices en vectoren
De elementen van een matrix kunnen worden geselecteerd door middel van twee indices n en m A [n][m] is het element uit rij n en kolom m.
6
Computeralgebra met Maxima
Overzicht van functies en operatoren voor de matrixrekening : +, -
Matrixoptelling, -aftrekking
matrix_size(A) A.B
A*k
Geeft het aantal rijen en kolommen van A retour. Vermenigvuldiging van matrices (productmatrix). Twee matrices kunnen alleen vermenigvuldigd worden als het aantal kolommen van de linker matrix gelijk is aan het aantal rijen van de rechter matrix! A(5×2) * B(2×3) levert een matrix C(5×3) op; algemeen: A(i × j) * B(j × k) → C(i × k). Opgelet: MAXIMA kent ook nog de componentsgewijze vermenigvuldiging/deling – invoer met *, /. Vermenigvuldiging van matrix A met vector b. Hierbij moet de vector b even lang zijn als de rijen van de matrix A Vermenigvuldiging van een matrix met een reëel getal k.
rank(A)
Rang van een matrix – aantal lineair onafhankelijke rijen
transpose(A)
Getransponeerde van A
A.b
invert(A)
of A^^-1
Inverse matrix van A
A^^n
De n-de macht van A volgens de . matrixvermenigvuldiging
A^n
De componentsgewijze n-de macht van A
determinant(A) diagmatrix(3,x)
Determinant van A Creëert een 3x3 diagonaalmatrix (alle diagonaalelementen worden gelijk aan "x" gemaakt, alle andere elementen krijgen de waarde 0). Creëert een 3x3 eenheidsmatrix (alle diagonaalelementen worden gelijk aan "1" gemaakt, alle andere elementen krijgen de waarde 0).
ident(3)
7
Matrices en vectoren
Vermenigvuldiging van een matrix P met een vector q:
Hetzelfde resultaat kunnen we ook bereiken als we van q een 2×1 matrix maken:
8
Computeralgebra met Maxima
De gewone machtsverheffing van een matrix P : P^^2 = P.P
De componentsgewijze machtsverheffing P^2 (elk element wordt gekwadrateerd):
9.2.1. Oplossen lineaire stelsels vergelijkingen Los het volgende stelsel op met behulp van matrices en controleer het antwoord met linsolve. x − 2y + z = 4 2 x + y + z = −1 x + 5 y − 3z = 7
1 −2 1 x 4 ⇔ 2 1 1 y = −1 1 5 −3 z 7
⇔
9
x 4 r r r r A ⋅ x = b met x = y en b = −1 z 7
Matrices en vectoren
Als we de oplossing willen controleren met linsolve dan moeten we dus eerst de drie vergelijkingen invoeren :
r r r r A ⋅ x = b → x = A−1 ⋅ b
Opgave 9.3 Los het volgende stelsel vergelijkingen op twee manieren op 2x + 3y x + 4y x + 2y
+ 7 z = 12 + 2z = 3 + 3z = 5
9.2.2. Toepassing -draaiing Een tweedimensionale draaiing kan met behulp van een draaiingsmatrix worden beschreven. Een draaiingsmatrix heeft steeds de gedaante: cos(α ) sin(α ) draai(α ) = − sin(α ) cos(α )
Door vermenigvuldiging van deze matrix met een tweedimensionale figuur (bijv. een driehoek) ontstaat de gedraaide figuur.
10
Computeralgebra met Maxima
We passen dit toe op een driehoek met hoekpunten (0,0) , (5,0) en (9,2). De driehoek voeren we in als een 4 × 2 matrix :
We definiëren nu 24 draaiingen over opeenvolgende veelvouden van 15 graden en de gedraaide figuren leggen we vast in een lijst
Tenslotte maken we een plot van deze lijst :
De “startdriehoek” met hoekpunten (0,0) , (5,0) en (9,2) is gevuld weergegeven.
11