MATA23 Laskennallinen lineaarinen algebra ja geometria Mikko Parviainen Luennot: Mikko Parviainen, mikko.j.parviainen at jyu.fi, MaD 36 Kurssisivu: http://users.jyu.fi/~miparvia/llag/ Laajuus: op Luennot: 2 2h ennen pääteohjauksia. Ohjaukset: 4 2h (läsnäolopakko). Ohjausryhmiin ilmoittautuminen Korpissa. Harjoitustyö: Pareittain tehtävän työn ohje löytyy kurssisivulta viimeisten ohjausten jälkeen. Huom! Tämä kurssi vastaa aiempien ( 27) kurssien Vektorit ja matriisit 2 ja Lineaarinen algebra ja geometria 2 tietokonedemoja. Jos olet suorittanut aiemmin jonkin yo. kurssin tietokonedemot, et saa tästä kurssista enää opintopistettä. Harjoitustyö tulee tehdä parityönä (toki yksinkin saa tehdä). Harjoitustyötä ei saa kopioida muilta, vaan työ tulee tehdä itsenäisesti. Työn tekeminen kannattaa aloittaa ajoissa; deadline ei jousta (ainakaan ilman painavaa syytä). 3 Matlab 4 3. Matlab ja Mathematica............................ 4 3.2 Matlabin käynnistäminen........................... 4 3.3 Ohjeet...................................... 4 3.4 Muuttujat ja perustoimintoja......................... 4 3. Matriisien luontifunktioita........................... 6 3.6 M-tiedostot ja omat funktiot......................... 6 3.7 Silmukat, ehtolauseet ym............................ 6 3.8 Grafiikka.................................... 7 3.9 Ohjelmointistrategiasta............................ 8 3. Muita tietotyyppejä.............................. 9 3. Datan lataus ja tallennus........................... 9 3.2 Sudenkuoppia.................................. 9 3.3 Omat laajennokset............................... Sisältö Numeriikkaa. Äärellinen esitystarkkuus............................2 IEEE 74.................................... 2.3 Äärellisen esitystarkkuuden etuja ja haittoja................. 2.4 Virhekäsitteitä................................. 2 2 Lineaarialgebraa 2 2. Matriisit ja häiriöalttius............................ 3 2.2 Yhtälöryhmän ratkaisun virhe......................... 3 2.3 Matriisikäsitteitä, kertaus........................... 3 2.4 Singulaariarvohajotelma ja pseudoinverssi.................. 3 2. Pienimmän neliösumman menetelmä (least squares)............ 3. Luennot perustuvat osittain Matti Viholan vuoden 2 luentomonisteeseen. Numeriikkaa Mihin tarvitset numeerisia menetelmiä? Tulosten havainnollistaminen (esim. kouluopetuksessa) Sovellukset: (esim. luonnontieteet, tekniikka). Hahmotteluun: likiarvoiset vastaukset antavat vihiä siitä, voisiko jokin väite pitää paikkaansa vai ei.. Äärellinen esitystarkkuus Tietokoneen muistiin (tai paperille) ei voida tallentaa mielivaltaista lukua. Käytännön laskuissa luvut on pakko esittää äärellisellä esitystarkkuudella. Fysiikassa/tekniikassa mittausten tarkkuus sanelee usein esitystarkkuuden. Tietokoneissakäytetään lukujen esittämiseen useimmiten ns. liukulukuja (floating point number).
Kutakin lukua varten on käytössä kaksi muistipaikkaa: toinen mantissa ja toinen eksponentille. Esim..2 IEEE 74. = +. 2 missä mantissa +. esitetään seitsemällä merkitsevällä numerolla ja etumerkillä, ja kokonaislukueksponentti -2 kolmella luvulla ja etumerkillä. + - 2 Yleisin liukulukujen esitys on standardin IEEE 74 2 mukainen. Usein ns. tieteellisessä laskennassa käytetään erityisesti kaksoistarkkuisia (double precision), eli 64-bittisiä liukulukuja. Eksponentti bittiä, mantissa 3 bittiä. Itseisarvoltaan pienimmät luvut ovat Itseisarvoltaan suurimmat luvut ovat ±2 74 ± 324 ±(( (/2) 3 )2 24 ) ±.8 38 Lisäksi käytössä ± ja seuraavat luvut : +Inf, -Inf (positiivinen ja negatiivinen äärettömyys), ja NaN (Not a Number).3 Äärellisen esitystarkkuuden etuja ja haittoja Äärellisenesitystarkkuudenilmeinen haitta on,että voimmeesittää vain äärellisen joukon eri lukuja. Siitä huolimatta laskenta-algoritmit voidaan tehdä siten, että useimmiten virhe ei kasva niin suureksi, että sillä olisi käytännön merkitystä. Joissain tapauksissa äärellinen esitystarkkuus saattaa kuitenkin aiheuttaa lopputuloksessa merkittävän virheen. Käyttäjänpitääosatatulkita numeerisenlaskennantuloksia;ovatkoneluotettavia vai eivät. IEEE 74 -liukulukuesityksen etuna on, että tavallisilla kotitietokoneilla voidaan tehdä yksinkertaisia laskutoimituksia nopeasti (luokkaa miljardi laskutoimitusta sekunnissa). 2. Kts. esim. http://en.wikipedia.org/wiki/ieee_74..4 Virhekäsitteitä Absoluuttinen virhe: Jos oikea arvo on x, ja saatu arvo x, absoluuttinen virhe on x missä x := x x. Suhteellinen virhe: x x, kun x. Pyöristysvirhe (roundoff error): Virhe, joka tehdään, kun luku esitetään jossain äärellisessä esityksessä. Esimerkkejä: + esitettynä IEEE 74 kaksoistarkkuuden liukulukuna on, joten (absoluuttinen) pyöristysvirhe on. Ylivuoto (overflow) tapahtuu, kun laskun tulos menee yli lukualueen. (tuloksena Inf). Alivuoto(underflow) tapahtuu, kun laskuntulos ei ole nolla,mutta itseisarvoltaan niin pieni, että vastaus pyöristetään nollaksi. tämä saattaa aiheuttaa esim. nollalla jaon seuraavassa vaiheessa! ±Inf tai NaN Kone-epsilon: Etäisyys luvun ja sitä seuraavaksi suuremman luvun välillä (2 2 IEEE 74 kaksoistarkkuudessa). Yleisemmin, ǫ(x) on etäisyys luvun x ja sitä seuraavan itseisarvoltaan suuremman luvun välillä. Vertaa esim.... ja... Vastaavasti esim. luvuille... 2 3 ja... 2 3. Absoluuttinen virhe kasvaa suunnilleen lineaarisesti luvun koon suhteen. Suhteellinen virhe pysyy suunnilleen vakiona. 2 Lineaarialgebraa Seuraava esim. kuvastaa ratkaisun stabiiliutta. Yhtälöryhmällä 3 [ ] [ ] 2 2 6 x = 2 2. 6. on yksikäsitteinen ratkaisu x = [,2] T. Oletetaan, että käytössä olisi kolmen desimaalin esitystarkkuus. Tällöin ratkaistaisiinkin yhtälöryhmää [ ] [ ] 2. 2. 6. ˆx = 2. 2. 6. jonka yksikäsitteinen ratkaisu on ˆx = [2.,.] T. Matriisin esityksessä vain yhteen komponenttiin tuli suhteellista virhettä 2. 2. /2..2, mutta ratkaisussa virhettä on [2,] T [,2] T / [,2] T.63. 3. Esimerkki otettu opintomonisteesta A. Perttula: Lisää lineaarialgebraa. 2
2. Matriisit ja häiriöalttius Tällä kurssilla käytetään vektoreille x R n aina Euklidista normia x := n k= x2 k ja matriiseille sen indusoimaa (operaattori)normia: Huomaa Ax A x Ax A := max x x = max Au. u = kaikilla A R m n ja x R n ja AB A B kaikilla A R m n ja B R n p. Matriisin kuntoluku tai häiriöalttiusluku (condition number) cond(a) := A A kuvaa matriisiin liittyvän yhtälöryhmän ratkaisun stabiiliutta. 2.2 Yhtälöryhmän ratkaisun virhe Oletetaan, että haluttaisiin ratkaista x yhtälöryhmästä Ax = b, missä A on tunnettu kääntyvä matriisi ja b tunnettu vektori. Käytössämme olevalla tietokoneella ei voida kuitenkaan esittää A:ta ja b:tä tarkasti, vaan likimääräisesti, jolloin ratkaisemmekin ˆx:n yhtälöryhmästä ˆx = ˆb. Olemmekiinnostuneita,kuinkasuuriratkaisunsuhteellinenvirhe ˆx x x on. Mikäli  = A, nähdään että ˆx x x A ˆb b x cond(a) ˆb b b, sillä b = Ax A x. Laskennan virheiden lisäksi on mahdollista, että matriiseihin A ja b sisältyy muutakin virhettä kuin pelkkä äärellisen esityksen aiheuttama pyöristysvirhe, esim. mittausvirhe. 2.3 Matriisikäsitteitä, kertaus Ax = λx ja x, x on ominaisvektori ja λ ominaisarvo. A T transpoosi A = A T symmetrinen matriisi. Symmetrisen matriisin ominaisarvotovat reaaliset. AA T = A T A = I ortogonaalinen matriisi eli A = A T Muistutus: matriisi esittää lineaarikuvausta, joten niillä pystytytään esim. venyttämään, pyörittämään jne. tietokonekuvia. Olkoon A R m n, B R n p C R l q, D R q o, E R m q, F R n o, G R l n ja H R q p. Tällöin lohkomatriisien tulo on [ ][ ] [ ] A E B F AB +EH AF +ED = G C H D GB +CH GF +CD 2.4 Singulaariarvohajotelma ja pseudoinverssi Olkoon A R m n. On olemassa ortogonaaliset matriisit U R m m, V R n n ja diagonaalinenmatriisi Σ R m n nollastapoikkeavinaalkioinaan[σ] ii = σ i jotka on järjestettyσ σ p,jajoillea = UΣV T.TämäonA:nsingulaariarvohajotelma (singular value decomposition, SVD). (vrt. Purmonen: LAG2, Lause 2.7) MatriisinA R m n pseudoinverssiona + := VΣ + U T R n m,missäσ + R n m on diagonaalimatriisi, jonka ainoat nollasta poikkeavat alkiot ovat [Σ + ] ii = σ i kaikilla i joille σ i >. (vrt. Purmonen: LAG2, Määritelmä 2.9) Mikäli A R n n on kääntyvä, niin singulaariarvot σ... σ n >, käänteismatriisi ja pseudoinverssi yhtyvät A = A +. Lisäksi A = σ ja A = σ n, joten cond(a) = σ σ n. 2. Pienimmän neliösumman menetelmä (least squares) Purmonen: LAG2, luvut.8 ja 2., jossa käytetään PNS-menetelmästä nimitystä Paras ratkaisuapproksimaatio. Olkoon A R m n matriisi ja b R n vektori. Vektori ˆx on yhtälöryhmän Ax = b pienimmän neliösumman ratkaisu, jos Aˆx b Ax b kaikilla x R n. Mikäli rank(a) = n, eli A:n sarakkeet ovat lin. riippumattomat, ratkaisu ˆx on yksikäsitteinen, ja se saadaan ratkaisemalla normaaliryhmä A T Aˆx = A T b. Tällöin ratkaisu voidaan lausua pseudoinverssin avulla ˆx = A + b. 3
3 Matlab Matlab ( Matrix laboratory ) on MathWorksin kaupallinen numeerisen laskennan ohjelmisto, jota käytetään nykyään laajasti tekniikassa ja luonnontieteissä. Alkuperäisen nimenkin mukaan, Matlab keskittyy erityisesti matriisilaskentaan. Ohjelmiston etuna nykyään myös monipuoliset tulosten visualisointimahdollisuudet, sekä lukuisat valmiit työkalupakit (toolbox) eri alojen tarpeisiin. Vaikka Matlab onkin kaupallinen ja suljettu tuote, on olemassa myös ilmainen avoimen lähdekoodin vaihtoehto GNU Octave (http://www.octave.org/). Octave on jo niin hyvin Matlab-yhteensopiva, että kurssin tehtäviä voi halutessaan aivan hyvin tehdä myös Octavella. Muita samankaltaisia ohjelmistoja ovat mm. SciLab (http://www.scilab.org/) GNU R (http://www.r-project.org/), joka on tehty erityisesti tilastotieteen tarpeisiin. 3. Matlab ja Mathematica Sekä Matlab että Mathematica ovat tulkkaavia matemaattisia ohjelmistoja. Matlab on numeeriseen ja Mathematica symboliseen laskentaan erikoistunut. Matlab:in etuna Mathematicaan on, että sillä voi käsitellä melko suuria tietomääriä, ja se on suhteellisen nopea. Mathematica taas lyö Matlab:in symbolisella laskennalla, jota Matlab ei osaa lainkaan 4. Matlab:in voi sijoittaa oikeiden ohjelmointikielten ja symbolisten matemaattisten ohjelmistojen välimaastoon. 3.2 Matlabin käynnistäminen Matlab R27b on valmiiksi asennettu yliopiston koneille. Kaksoisklikkaa linkkiä tai etsi Käynnistä-valikosta. Kunkomentoikkunaaukeaa,aseta CurrentDirectory -alasvetovalikostahakemisto sopivaksi, esim. U:\MATA23 (jos hakemistoa ei ole, luo se tavalliseen tapaan tai kirjoita Matlabin komentotulkissa mkdir( U:\MATA23 ).) Alasvetovalikon lisäksi voit vaihtaa hakemistoa kirjoittamalla Matlabin komentotulkissa cd U:\MATA23. Muuttujat tallentuvat tähän nyt hakemistoon, ja hakemistoon kirjoittamiasi ohjelmia voidaan kutsua Matlabista. 4. Matlab:iinkin saa Maple-toolboxin, jolloin Matlab:ia voi käyttää myös symboliseen laskentaan. 3.3 Ohjeet doc: avaa interaktiivinen ohje lookfor: etsi hakusanalla funktioita help: näytä ohje (funktiosta), >> lookfor identity EYE Identity matrix. SPEYE Sparse identity matrix. >> help eye EYE Identity matrix. EYE(N) is the N-by-N identity matrix.... >> a=eye(2) 3.4 Muuttujat ja perustoimintoja Perustietotyyppinä Matlab:issa on matriisi. Skalaari on -matriisi, vektorit joko N (pysty) tai N (vaaka). Muuttujien (ja funktioiden) nimet alkavat kirjaimella (a-za-z, isot ja pienet kirjaimet ovat eri merkkejä), muita sallittuja merkkejä ovat numerot (-9) ja alaviiva ( ) Syntaksista: Yhtäsuuruusmerkki = on sijoitusmerkki, vasemmalla puolella olevaan muuttujaan sijoitetaan oikean puolen arvo. Rivin vaihto <Enter> on komentoerotin. Kun komentokehotteessa painaa <Enter>, kyseisen rivin komento suoritetaan. Puolipiste ; ja, toimivat myös komentoerottimina. Mikäli komennon perään laitetaan puolipiste, lopputulos jätetään näyttämättä. Huom: Muista lisätä puolipiste komennon perään aina, kun käsittelet suuria matriiseja! Hakasulkeita[ ] käytetään matriiseja syötettäessä, lohkomatriiseja koottaessa, sekä sellaisia funktioita kutsuttaessa, joista tulee useampi kuin yksi ulostulo. Matriiseja syöttäessä, ja <Space> ovat alkion erottimia, ja ; tai <Enter> rivin vaihto. Huom: Kaikki tavalliset laskutoimitukset +, -, *, /, \, ^ ovat matriisilaskutoimituksia!!! 4
Esimerkki: matriisien/vektorien luonti ja perusoperaatioita. >> a=[ 3; 2,4] 3 2 4 >> x = [;6] x = 6 >> x2=a*x x2 = 23 34 >> x2*x??? Error using ==> mtimes Inner matrix dimensions must agree. >> x2+x 28 4 >> pi*a 3.46 9.4248 6.2832 2.664 Lisää syntaksista: Komponenteittaiset laskutoimitukset saadaan lisäämällä operaattorin eteen piste:.*,./,.\,.^. Sulkeita ( ) käytetään matriisien ja vektoreiden indeksoinnissa sekä funktiokutsuissa. Yksittäinen lainausmerkki on Hermiten transpoosi ja. transpoosi (reaalisilla matriiseilla sama asia!). Yksittäisiä lainausmerkkejä käytetään myös merkkijonojen syöttämiseen. Kompleksiluvut voidaan antaa käyttäen imaginaariyksikköä (i tai j). Desimaalieroitin on piste. Prosenttimerkki % on kommenttimerkki: loput rivistä jätetään huomiotta. Rivin voi katkaista laittamalla rivin loppuun kolme pistettä:... Matemaattiset alkeisfunktiot: sin, cos, tan, asin, log, exp, sqrt, abs,... toimivat myös kompleksiarvoisille suureille, ja vektoreille/matriiseille alkioittain. (lisää: help elfun) >> y=sin(x); % Lasketaan sini x:n alkioista >> y -.989 -.2794 >> x2.*x 24 >> x2 *x 39 >> a*[+3i; 2.] 8. + 3.i 2. + 6.i Matriisien indeksoinnista: matriisista voidaan poimia alkioita sulkeilla. Huom: Matlab:issa indeksointi alkaa ykkösestä, ei nollasta! Yksittäisten indeksien lisäksi on mahdollista antaa useampi indeksi, ja poimia esim. sarakkeita tai rivejä, tai alimatriiseja. Kaksoispisteellä : voi luoda vektorin, jossa on peräkkäisiä kokonaislukuja. Yksistään : tarkoittaa kaikkia rivin tai sarakkeen alkioita. >> a 4 7 2 8 3 6 9 >> a(,2) 4 >> a(,:) 4 7 >> a(:,2:end) 4 7 8 6 9 >> b = :3 b =
2 3 >> a(b, [ 3]) 7 2 8 3 9 >> a(:2,:2) = eye(2) 7 8 3 6 9 3. Matriisien luontifunktioita diag, eye, ones, zeros, rand: Luo diagonaali-, identiteetti-, ykkös-, nolla-, tai satunnaislukuja välillä (, ) sisältävä matriisi. (help elmat) >> a=rand(3).9.486.46.23.893.8.668.762.824 >> b=ones(3,) b = >> c=zeros(,3) c = >> d = [a b;c 42] d =.9.486.46..23.893.8..668.762.824. 42. >> diag(d).9.893.824 42. >> e = diag([pi exp()]) e = 3.46 2.783 3.6 M-tiedostot ja omat funktiot Matlab:issa on mahdollista tehdä ns. M-tiedo (M-file), esim. mfile.m, joka sisää listan ajettavia komentoja. N = 3; ones(n,); x = [a, rand(n,n)] Tämä vastaa sitä, että käskyt kirjoitettaisiin komentotulkkiin. M-tiedostoja voi olla myös itse tehty funktio, jolle siis annetaan parametrit ja se palauttaa arvon/arvoja. Perusperiaate on, että kutakin funktiota varten tehdään vastaavan niminen tiedosto. Esimerkiksi halutessamme tehdä funktion foo, luomme tiedoston foo.m. >> edit foo (kirjoita funktio editorissa ja tallenna se) >> z = foo(,4) z =.242 Tiedoston foo.m sisältö: function d = foo(x, y) d = sqrt(x^2+y^2); Funktion alun pitää olla aina ylläolevaa muotoa! 3.7 Silmukat, ehtolauseet ym. Matlab:issa on muistakin ohjelmointikielistä tutut ehtolauseet ja silmukat. if-ehtolause suorittaa lausekkeen sisäisen arvon, mikäli ehto on tosi. for-silmukka käy läpi annetun (vaaka)vektorin alkiot. while-silmukka jatkuu niin pitkään, kun ehtolausekkeen arvo on tosi. Ehtolauseissa voi käyttää mm. relaatioita <, <=, ==, ~=, &, (help relop).. Ehtolauseke on tosi, mikäli se ei ole nolla. 6
N = 6; eye(n); for k=:n j = ; while j<k if mod(k,j) == a(k,j) = ; end j = j+; end end Loogiset relaatiot toimivat myös vektori/matriisiargumenteille >> :, b = rand(,)* 2 3 4 b =.38.9936 3.9.369.994 >> a<b Huomaa tavat luoda vektoreita >> x=:.:. x =.8.6.4.2.2.4.6.8 8 6 4 2 2 4 6 8..2.3.4. >> x=linspace(,.,) x =.2.2.37. 3.8 Grafiikka Yksi Matlab:in vahvuusalueista ovat sen visualisointiominaisuudet. Matlab:issaonvalmiina erilaisiavisualisointifunktioita,mutta jätetty myösmahdollisuus säätää lähes kaikkia visualisoinnin yksityiskohtia. Grafiikankin perusideana on numeriikka: sen sijaan että käskettäisiin esimerkiksi Piirrä funktio sin(x) kun 2π x 2π, lasketaankin funktion (liki)arvot tietyissä pisteissä ko. välillä, ja käsketään Matlab:in vain visualisoida saadut numerot: >> x = linspace(-2*pi,2*pi,); >> y = sin(x); >> plot(x,y) Lisätään samaan kuvaan toinen käyrä, ja kustomoidaan kuvan asetuksia: >> hold on >> plot(x,.*cos(x), r-- ) >> axis tight, grid on, box off >> xlabel x ; ylabel y ; title Esimerkkikuva >> set(gca, tickdir, out ); >> set(gcf, paperposition,[ 7 ]); >> print -depsc example.eps 7
Esimerkkikuva surf(x,y,f) y... x Kahden muuttujan funktion visualisointia. Ensin tarvitaan funktio meshgrid: x = 2 3 y = 8 9 >> [X,Y]=meshgrid(x,y) X = 2 3 2 3 2 3 Y = 8 8 8 8 9 9 9 9 Jatketaan visualisointia... >> x = linspace(-2*pi,2*pi,); y=x; >> [xx,yy] = meshgrid(x,y); >> f = sin(xx).*cos(yy)....*exp(-(sqrt(xx.^2+yy.^2)-).^2); >> surf(x,y,f); >> imagesc(x,y,f); colorbar >> contour(x,y,f). imagesc(x,y,f) 3.9 Ohjelmointistrategiasta.. contour(x,y,f) For-silmukat ovat hitaita! Ne kannattaa korvata Matlabin sisäänrakennetuilla matriisilaskutoimituksilla! Ei näin: n=; x=linspace(,2*pi,n); y=linspace(pi,3*pi,n); for i=:n, for j=:n, X(i,j)=x(i); Y(i,j)=y(j); Z(i,j)=sin(x(i))*cos(y(j)); 8
end end mesh(x,y,z) Vaan näin: n=; x=linspace(,2*pi,n); y=linspace(pi,3*pi,n); [X,Y]=meshgrid(x,y); Z=sin(X).*cos(Y); mesh(x,y,z) 3. Muita tietotyyppejä Matriisien alkiot voivat olla liukulukujen lisäksi merkkejä, jolloin vektorit voivat sisältää merkkijonoja. >> foo foo >> a() f Matlab osaa käsitellä myös ns. harvoja (sparse) matriiseita. >> s = sparse([ ; 2; 3 ]) s = (,) (3,2) 3 (2,3) 2 Matriisien lisäksi Matlab:illa voi luoda useampiulotteisia taulukoita. >> zeros(2,2,2); >> a(:,:,) = eye(2); a(:,:,2) = rand(2) a(:,:,) = a(:,:,2) =.3.44.7468.938 3. Datan lataus ja tallennus Muuttujia voi tallentaa tiedostoon komennolla save, ja ladata niitä komennolla load >> a=:; >> save foo >> clear >> a??? Undefined function or variable a. >> load foo >> a 2 3 4 Matlab:issa on myös mahdollistaladata muista ohjelmista tiedostoja. Esimerkiksi useimmista taulukko-ohjelmista saa tallennettua datan ns. CSV-muodossa (Comma Separated Values). Tällaista dataa voi lukea Matlab:iin komennoilla csvread tai dlmread. Binääristä dataakin voi käsitellä, kts. esim. help fread ja help fwrite. 3.2 Sudenkuoppia Matlab:issa voi määritellä itse uudelleen lähes minkä tahansa muuttujan tai funktion. >> cos(2*pi) >> pi=3; >> cos(2*pi).962 >> cos =.96; >> cos(2*pi)??? Index exceeds matrix dimensions. >> clear pi >> cos(2*pi)??? Subscript indices must either be real positive integers or logicals. >> clear 9
>> cos(2*pi) Syötettäessä matriiseja, tyhjä merkki yksinään on alkioiden erotin. >> a=[; +3i]??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns. >> [; +3i].. + 3.i Käytät muuttujaa, joka on jo olemassa. Tästä pääsee eroon poistamalla olemassaolevat muuttujat clear( x ), clear all 3.3 Omat laajennokset Matlab:iin voi kirjoittaa helpohkosti omia ns. MEX-laajennoksia C/C++ ja Fortran-kielillä. Laajennoksia voi tarvita laskennan nopeuttamiseksi, tai vaikkapa jonkin mittauslaitteiston ohjaamiseksi Matlab:ista käsin.