2.6 Lineaarialgebraa
Matriisit ja vektorit
> restart:
Maplessa lista ja vektori ovat kaksi eri asiaa. Vektori määritellään komennolla vector , ja se on aina oletusarvoisesti vaakavektori.
> a:=vector([1,2,3]);
Vektorien yhteen- ja vähennyslasku tapahtuu suoraan kirjoittamalla. On kuitenkin huomattava, että evaluointisääntöjen vuoksi Maple ei kirjoita vektoreita auki ilman evalm -komentoa:
> a+a;
> evalm(a+a);
> evalm(a-vector([x,y,z]));
Pistetulon symbolina on &*. Samaa merkkiä käytetään myös matriisitulon symbolina.
> evalm(a&*a);
> evalm(a&*vector([x,y,z]));
Matriisi muodostetaan Maplessa komennolla matrix . Komennossa luetellaan joko aluksi matriisin koko ja sitten alkiot yhtenä listana, tai matriisi riveittäin.
> A:=matrix(3,2,[1,2,2,3,6,6]);
> A:=matrix([[1,2],[2,3],[6,6]]);
Matriisin tai vektorin alkioon viitataan alkiota vastaavilla indekseillä, matriiseissa tyyliin [rivi, sarake]. On huomattava, että rivien ja sarakkeiden indeksointi alkaa ykkösestä eikä nollasta.
> a[2];
> A[2,1];
Komento nops ilmaisee objektien lukumäärän. Koska Maplessa vektori ja lista ovat kaksi eri asiaa, ohjelma ymmärtää vektorin yhdeksi objektiksi, mutta ilmoittaa vastaavan listan alkioiden lukumäärän.
> evalm(a);
> b:=[1,2,3];
> nops(a);
> nops(b);
Vektorin alkoiden lukumäärä ja matriisin koko voidaan laskea komennolla dimensions . Komennon käyttöä varten on ladattava käyttöön pakkaus Matlab .
> with(Matlab):
Error, (in Matlab/OpenEngine) can't find Matlab's engine library, libeng.dll
> dimensions(A);
Dimensions laskee matriisin kokoja, joten vektori on määriteltävä laskemista varten komennossa matriisiksi:
> dimensions(matrix([a]));
> restart:
Matriisin ominaisarvot ja -vektorit
> restart:
Määritellään tarkasteluja varten matriisi A:
> A:=matrix([[2,2,2],[3,3,3],[3,3,3]]);
Matriisin ominaisarvot lasketaan komennolla eigenvalues . Ominaisarvojen laskemista varten on käyttöön ladattava pakkaus linalg .
> with(linalg):
Warning, new definition for norm
Warning, new definition for trace
> eigenvalues(A);
Matriisin ominaisvektorit lasketaan komennolla eigenvectors . Maple tulostaa vastauksen muodossa [ominaisarvo, algebrallinen monikerta, {ko. ominaisvektorit}].
> eigenvectors(A);
Määritelmän mukaan A
x
=
x,
missä A on matriisi,
ominaisarvo ja
x
kyseistä ominaisarvoa vastaava ominaisvektori. Todetaan, että tämä tulos on voimassa määritellyn matriisin A ominaisarvoa 8 vastaavalle ominaisvektorille [ 1,
,
].
> Ax:=evalm(A&*vector([1,3/2,3/2]));
> lx:=evalm(8*vector([1,3/2,3/2]));
> restart:
Käänteismatriisi ja determinantti
> restart:
Ladataan tarkasteluja varten käyttöön pakkaus linalg :
> with(linalg):
Warning, new definition for norm
Warning, new definition for trace
Halutun kokoinen yksikkömatriisi muodostetaan komennolla array . Yksikkömatriisin koko määritellään määreellä identity .
> evalm(array(identity, 1..4,1..4));
Yksikkömatriisin muodostamiseen voi käyttää myös lävistäjämatriisin muodostuskomentoa diag :
> diag(3,2,1);
> diag(1,sin(x),2);
> diag(1$10);
Määritellään tarkasteluja varten matriisi M:
> M:=matrix([[8,9],[8,7]]);
Käänteismatriisi muodostetaan komennolla inverse :
> iM:=inverse(M);
Määritelmän mukaisesti matriisin ja käänteismatriisin tulo sekä käänteismatriisin ja matriisin tulo on vastaavan kokoinen yksikkömatriisi:
> evalm(M&*iM);
> evalm(iM&*M);
Matriisin determinantti lasketaan komennolla det :
> det(M);
> restart:
Lineaarinen yhtälöryhmä matriisimuodossa
> restart:
Tarkastellaan lineaarista yhtälöryhmää
.
Kyseinen yhtälörymä on matriisimuodossa:
.
Ladataan käyttöön pakkaus linalg , sekä määritellään kerroinmatriisi A ja vakiot sisältävä vektori b:
> with(linalg):
Warning, new definition for norm
Warning, new definition for trace
> A:=matrix([[1,3,1],[3,7,6],[3,5,7]]);
> b:=vector([-1,-4,-3]);
Lineaarinen yhtälöryhmä voidaan nyt ratkaista komennolla
linsolve
. Komennossa on mainittava kerroinmatriisi ja vakiot sisältävä vektori. Maple palauttaa myös ratkaisun vektorimuodossa
x
= [
,
,
].
> linsolve(A,b);
> restart: