Veiksmai su vektoriais ir matricomis Įvadas Šiame skyriuje bus kalbama apie operacijas, kurias galima atlikti su vektoriais ir matricomis. Pirmiausiai bus kalbama apie paprasčiausias operacijas sudėtį ir atimtį. Kitos operacijos (daugyba, dalyba, kėlimas laipsniu) gali būti atliekamos dviem būdais: pagal tiesinės algebros taisykles ir paelemenčiui. e to, MTL dar turi atvirkštinės dalybos operaciją. Sudėtis ir atimtis Sudėti ir atimti galima tik vienodo dydžio vektorius ar matricas. Sudedami ar atimami atitinkami vektorių ar matricų elementai. Taip pat galima pridėti prie (atimti iš) vektoriaus ar matricos skaliarą. Skaliaras pridedamas prie (atimamas iš) visų elementų. Matricų daugyba Sistemoje MTL matricų daugyba atliekama pagal tiesinės algebros taisykles. * * * * * * * * * * * * * Daugyba galima tik tuo atveju, jei matricos stulpelių skaičius sutampa su matricos eilučių skaičiumi. Gautos matricos stulpelių skaičius sutaps su matricos, o eilučių skaičius su matricos. Jei matricos ir kvadratinės, * *. Du vektorius galima sudauginti tik jei jų ilgiai sutampa ir pirmasis yra eilutė, o antrasis stulpelis. Gautas rezultatas yra skaliaras ir vadinamas skaliarine sandauga.
Skaliarinei sandaugai apskaičiuoti galima panaudoti ir vidinę funkciją dot(a, b), šiuo atveju vektoriai gali būti tiek eilutės, tiek stulpeliai. Dauginant stulpelio vektorių iš eilutės vektoriaus, kurių ilgiai lygūs n, gausime nxn dydžio matricą. Naudojant matricų daugybą patogu užrašyti tiesinių lygčių sistemą: matriciniu pavidalu x x x Matricų dalyba Matricų dalyba taip pat susijusi su tiesine algebra, tačiau ji sudėtingesnė, todėl bus pateiktas tik trumpas paaiškinimas. Vienetinė matrica Vienetinė matrica I tai kvadratinė matrica, kurios įstrižainėje vienetai, o kiti elementai nuliai. Ją galima sukurti komanda eye. Dauginant matricą iš vienetinės matricos gaunama ta pati matrica, t. y. *I=I*=. tvirkštinė matrica Matrica vadinama matricos atvirkštine matrica, jei *=*=I. Pvz.: 8,5 5,5,5 5,5 8 tvirkštinė matrica paprastai žymima -. Norint apskaičiuoti matricos atvirkštinę matricą, reikia arba pakelti - laipsniu, arba pasinaudoti vidine funkcija inv(). Ne kiekviena matrica turi atvirkštinę. Matrica turi būti kvadratinė ir jos determinantas turi būti nelygus. Determinantas Determinantas tai funkcija, matricai priskirianti skaičių. Paprastai žymima det() arba. Determinantas apskaičiuojamas funkcija det(). Determinantas apskaičiuojamas pagal specialias taisykles, paprasčiausiu atveju x dydžio matricos determinantas apskaičiuojamas taip:
a a aa aa. a a Dalyba Dalyba naudojama spręsti lygčių sistemą: C=D CC - =DC - =D/C tvirkštinė dalyba tvirkštinė dalyba \ naudojama spręsti tiesines lygčių sistemas: = - = - = - arba =\ Nors pastarieji du užrašymo būdai turėtų duoti tą patį rezultatą, tačiau naudojami skaičiavimo būdai skiriasi. Pirmuoju atveju apskaičiuojama atvirkštinė matrica - ir padauginama iš, antruoju atveju sprendinys randamas skaitiniu būdu naudojant Gauso eliminavimo metodą. Rekomenduojama naudoti atvirkštinę dalybą. Paelementės operacijos Kaip matėme sistemoje MTL vektorių arba matricų sudėtis ir atimtis atliekama paelemenčiui, o daugyba ir dalyba pagal tiesinės algebros taisykles. Yra ir daugiau operacijų, kurias galima atlikti paelemenčiui, šiuo atveju prieš operacijos ženklą rašomas taškas. Operacijas paelemenčiui galima atlikti tik su vienodo dydžio vektoriais ar matricomis..* daugyba paelemenčiui..^ kėlimas laipsniu paelemenčiui../ dalyba paelemenčiui..\ atvirkštinė dalyba paelemenčiui (.\ =./). >> = [ ; 5 ] = 5 >> = [- - -; ] = - - - >>.* - -6 - >>.^..5.
. 5. >>./ -.5 -.6667 -. Inf.5 Paelementės operacijos labai naudingos norint apskaičiuoti funkcijos reikšmę daugelyje taškų. Tai atliekama iš pradžių apibrėžiant vektorių su nepriklausomo kintamojo reikšmėmis, o po to naudojant paelementes operacijas apskaičiuojama funkcijos reikšmė šiuose taškuose. Tarkime, norime apskaičiuoti funkcijos y = (x +6x)/(x -8) reikšmes taškuose,,...,. Tai atliekama trijų paelemenčių operacijų pagalba: >> x = [::] x = 5 7 9 >> y = (x.^ + 6*x)./(*x.^ - 8) y = -..68..7698.9.95 Vektorių ir matricų panaudojimas vidinėse matematinėse MTL funkcijose Vidinės MTL funkcijos parašytos taip, kad kaip argumentą perdavus vektorių ar matricą, operacija atliekama su kiekvienu elementu. Kaip rezultatas gaunamas tokio pat dydžio vektorius ar matrica. >> x = [:pi/6:pi] x =.56.7.578.9.68.6 >> y = sin(x) y =.5.866..866.5. >> M = [ 9 6; 5 6 9 6] M = 9 6 5 6 9 6 >> N = sqrt(m) N = 5 6 7 8 Vidinės funkcijos vektorių ir matricų analizei MTL turi aibę funkcijų vektorių ir matricų analizei: mean(v) vektoriaus elementų vidurkis.
d = max(v) didžiausias vektoriaus elementas. D = max(m) grąžina eilutės vektorių su kiekvieno matricos stulpelio didžiausiomis reikšmėmis. [d, n] = max(v) didžiausias vektoriaus elementas ir jo pozicija. Jei kelios didžiausios reikšmės, grąžina pirmąją. d = min(v), D = min(m), [d, n] = min(v) analogiška max, tik randa mažiausias reikšmes. sum(v) vektoriaus elementų suma. sort(v) surūšiuoja vektoriaus elementus didėjimo tvarka. median(v) randa vektoriaus medianos reikšmę. std(v) vektoriaus elementų standartinis nuokrypis (angl. standard deviation). det(m) kvadratinės matricos determinantas. dot(v, U) vektorių skaliarinė sandauga. Vektoriai gali būti tiek eilutės, tiek stulpeliai. cross(u, V) vektorių vektorinė sandauga. Vektoriai privalo turėti po tris elementus. inv(m) kvadratinės matricos atvirkštinė matrica. >> V = [6 7 7] V = 6 7 7 >> mean(v) 5 >> [d, n] = max(v) d = 7 n = >> min(v) >> sum(v) 5 >> sort(v) 6 7 7 >> median(v) 6 >> V = [ ]; >> U = [ 5 6]; >> dot(u, V) 5
>> cross(u, V) 8-7 >> M = [ 5; ]; >> det(m). >> inv(m). -.5 -..5 >> M*ans... tsitiktinių skaičių generavimas Komanda rand Komanda rand generuoja atsitiktinius skaičius tolygiai pasiskirsčiusius intervale [, ]. Priklausomai nuo parametrų ši komanda gali priskirti atsitiktinę reikšmę skaliarui, vektoriaus ar matricos elementams. rand vienas atsitiktinis skaičius. rand(, n) n ilgio atsitiktinių skaičių eilutės vektorius. rand(n) nxn dydžio atsitiktinių skaičių matrica. rand(m, n) mxn dydžio atsitiktinių skaičių matrica. randprm(n) n ilgio atsitiktinių sveikų skaičių eilutės vektorius, elementų reikšmės - nuo iki n. >> rand.87 >> rand(, ).958.7.9.6 >> rand().975.569.785.9575 >> rand(,).969.976.85.576.957.8 >> randperm(7) 6
7 6 5 Jei reikia atsitiktinių skaičių, tolygiai pasiskirsčiusių intervale [a, b], galima rand grąžintą reikšmę modifikuoti pagal formulę a+(b-a)*rand. Tarkime, intervalas [-, ]. >> v = - + ( - (-))*rand(,6) v = 6.986 8.6799.577 5.58.866 -.555 Komanda randi Komanda randi generuoja tolygiai pasiskirsčiusius sveikuosius skaičius. Priklausomai nuo parametrų ši komanda gali priskirti atsitiktinę reikšmę skaliarui, vektoriaus ar matricos elementams. randi(imax) vienas atsitiktinis sveikas skaičius nuo iki imax. randi(imax, n) nxn dydžio matrica su sveikais atsitiktiniais skaičiais nuo iki imax. randi(imax, m, n) mxn dydžio matrica su sveikais atsitiktiniais skaičiais nuo iki imax. >> randi() >> randi(, ) 5 6 >> randi(,, ) 7 7 Jei reikia atsitiktinio sveiko skaičiaus iš kokio nors sveikų skaičių intervalo, vietoje imax galima nurodyti intervalą [imin imax]. >> randi([8 9], ) 8 8 8 88 Komanda randn Komanda randn generuoja atsitiktinius skaičius, pasiskirsčiusius pagal normalųjį pasiskirstymą su vidurkiu ir standartiniu nuokrypiu. Priklausomai nuo parametrų ši komanda gali priskirti atsitiktinę reikšmę skaliarui, vektoriaus ar 7
matricos elementams. Komandos parametrai analogiški komandos rand parametrams. >> randn().9 -. -.869 -.69 tsitiktinio dydžio vidurkį ir standartinį nuokrypį galima pakeisti atitinkamai pridedant prie gautos reikšmės norimą vidurkį ir padauginant iš norimo standartinio nuokrypio. Tarkim, vidurkis lygus 5, o standartinis nuokrypis lygus. >> randn(,6)*+5 5.55 5.865 5.85 8.77 5.57 7.578 Literatūra. Gilat,. (). MTL: an introduction with applications. th Edition. John Willey & Sons, Inc. (6-8 psl.) 8