MATLAB matrični laboratorij Interaktivni alat (kalkulator), programski jezik, grafički procesor

Like dokumenter
1 REALNE FUNKCIJE REALNE VARIJABLE

Strukture. Strukturirani (složeni) tip podataka koji definiše korisnik. Razlike u odnosu na niz

Neprekidne funkcije nestandardni pristup

MAT1120 Plenumsregningen torsdag 26/8

Složeni tipovi podataka

Kapittel august Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 2.

Start MATLAB. Start NUnet Applications Statistical and Computational packages MATLAB Release 13 MATLAB 6.5

Matematikk Øvingsoppgaver i numerikk leksjon 4 Løsningsforslag

Zadatak 1 strukture (C110) P2: Jedanaesta nedelja Strukture i liste. Strukture na jeziku C (2) Strukture na jeziku C (1)

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

Riješeni zadaci: Funkcije

START MED MATLAB. Når du starter Matlab, kommer du inn i kommandovinduet. Dersom du har versjon 6.1, ser du dette :

L A TEX Sage i SageTEX

Ord og begreper. Norsk Morsmål: Tegning (hvis aktuelt)

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag

Programiranje 1 grupno spremanje (zadaci) datoteke

TMA Kræsjkurs i Matlab. Oppgavesett 1/3

MINIMARK stampac za industrijsko obelezavanje

4. Grafič ke funkčije

Lynkurs i shellprogrammering under Linux

Del 1 En oversikt over C-programmering

BYFE/EMFE 1000, 2012/2013. Numerikkoppgaver uke 33

UNIVERSITETET I OSLO. Oppgaver med Løsningsforslag

Introduksjon til Matlab. Håvard Berland

Matematikk Øvingsoppgaver i numerikk leksjon 3 Funksjoner og plotting

Matematikk Øvingsoppgaver i numerikk leksjon 2 Funksjoner og plotting

Eksamen i TMA4123/TMA4125 Matematikk 4M/N

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

UNIVERSITETET I OSLO

En innføring i MATLAB for STK1100

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Matematikk Øvingeoppgaver i numerikk leksjon 1 Å komme i gang

Kondisjonstest. Algoritmer og datastrukturer. Python-oppgaver. Onsdag 6. oktober Her er noen repetisjonsoppgaver i Python.

Kapittel Oktober Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 14.

Læringsmål og pensum. Oversikt

EKSAMEN I MATEMATIKK 1000

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag

Matematikk Øvingeoppgaver i numerikk leksjon 1 Å komme i gang

Second Order ODE's (2P) Young Won Lim 7/1/14

1. 0BLINEARNE STRUKTURE PODATAKA

Grunnleggende elementer i Matlab

BYFE/EMFE 1000, 2012/2013. Numerikkoppgaver uke 34

Vi skal se på lambda-uttrykk. Følgende er definerte og vil bli brukt gjennom oppgaven

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 7 Løsningsforslag

Tru64: Uvod - alati i naredbe. Dinko Korunić, InfoMAR d.o.o. v1.2, travanj 2006.

1. DHB-E 18/21/24 Sli art ELEKTRONIČKI PROTOČNI GRIJAČ VODE

Ditt og Datt i MATLAB. En introduksjon til Matlab og Simulink for ferske kybernetikk-studenter

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

LISP PVV-kurs 25. oktober 2012

Dagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene

Del 3: Evaluere uttrykk

Maple Basics. K. Cooper

MATLABs brukergrensesnitt

Oblig 2 - MAT1120. Fredrik Meyer 23. september 2009 A =

Øvingsforelesning i Matlab TDT4105

Matematikk Øvingsoppgaver i numerikk leksjon 6. Løsningsforslag

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)

Noen innebygde funksjoner - Vektorisering

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

Introduksjon til Marinteknikk

Løsningsforslag til eksamen i INF103

MAT Oblig 1. Halvard Sutterud. 22. september 2016

Korreksjoner til fasit, 2. utgave

18. (og 19.) september 2012

Noen innebygde funksjoner - Vektorisering

ZBIRKA PRAKTIČNIH RADOVA IZ KOMPLETA DIJELOVA MT- radio

Matematikk Øvingsoppgaver i numerikk leksjon 6 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 3 Funksjoner og plotting

SAS-feil kavalkade. Viggo Skar Oslo Universitetssykehus HF (OUS)

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

INF2100. Oppgaver 26. september til 1. oktober 2007

Matematičke metode u kemiji Numeričke metode u kemiji

Noen MATLAB-koder. 1 Plotte en vanlig funksjon. Fredrik Meyer. 23. april 2013

Objektno orijentisano programiranje 2. Tipovi podataka u C#

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

/* Adresu promenjive x zapamticemo u novoj promeljivoj. Nova promenljiva je tipa pokazivaca na int (int*) */ int* px;

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

Eksamensoppgave i TMA4135 Matematikk 4D

Bioberegninger, ST november 2006 Kl. 913 Hjelpemidler: Alle trykte og skrevne hjelpemidler, lommeregner.

Matematikk Øvingsoppgaver i numerikk leksjon 1 Løsningsforslag

For det aktuelle nullpunktet, som skal ligge mellom 0 og, kan vere eit greit utgongspunkt.

Control Engineering. MathScript. Hans-Petter Halvorsen

Øvingsforelesning TDT4105 Matlab

Løsningsforslag. Innlevering i BYFE/EMFE 1000 Oppgavesett 1 Innleveringsfrist: 14. september klokka 14:00 Antall oppgaver: 3.

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 04. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Dagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene

with plots plot sin x, x =KPi..Pi Pi 3 eval tan eval cos K1 1 > evalf sin 3 2 K 2 $Pi

INF2100. Oppgave 1, 2 og 3. Løsningsforslag til oppgaver 23. og 24. september Her er det mange mulige løsninger her er én: import java.io.

SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM

Trigonometric Substitution

Læringsmål og pensum. Oversikt. Læringsmål Forstå og bruke cell array og strukturer. Pensum Matlab, Chapter 8

Høgskolen i Oslo og Akershus. sin 2 x cos 2 x = 0, x [0, 2π) 1 cos 2 x cos 2 x = 0 2 cos 2 x = 1 cos 2 x =

INF2100. Oppgaver 23. og 24. september 2010

Hydrostatikk/Stabilitet enkle fall

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Obligatorisk oppgave 1

Transkript:

M. Essert: Matlab interaktivno 1 MATLAB matrični laboratorij Interaktivni alat (kalkulator), programski jezik, grafički procesor Program = algoritam + strukture podataka Tipovi podataka temeljni tip - kompleksna matrica brojevi - double (s pretvorbama u integer-e (u)int8,16,32,64 ) nepopunjena matrica - sparse znak i niz znakova unutar jednostrukih navodnika - char, string ćelija - cell, polje različitih tipova struktura - struct, polje različitih tipova funkcijski tip - function handle @ (funkcija kao argument) objekti - Java i INLINE object. Konstante i varijable pi - 3.141592... i,j - kompleksne veličine, sqrt(-1) eps - relativna točnost, najmanji iznos između dva realna broja inf, NaN - beskonačno (infinitum) i nije broj (not a number) realmax, realmin - najveći i najmanji realni broj bitmax - najveći cijeli broj (floating point) integer. ans - varijabla odgovora (ansver) ime_varijable - alfanumerički niz znakova, početni znak slovo, bez posebnih znakova, osjetljivost na velika i mala slova. Jednom definirana varijabla x može se ispisati jednostavnim pozivom imena x i tipke enter (return). Funkcija Poziv: [iz1, iz2,...] = ime_funkcije (ul1, ul2,...) Definicija: Function [iz1, iz2,...] = ime_funkcije (ul1, ul2,...) gdje su: ul1, ul2,... - ulazni argumenti u funkciju iz1, iz2,... - izlazna rješenja funkcije (potprograma) ugrađene (bilt-in function) abs(), sin(), sqrt(), exp(),... Zagrade ( ) - grupiranje izraza, grupiranje funkcijskih argumenata, indeksiranje vektora (matrica) [ ] - grupiranje vektorskih (matričnih) elemenata { } - ćelije = polja različitih tipova podataka s klasičnim indeksiranjem

2 M. Essert: Matlab interaktivno Radno okruženje Command window radni prozor Workspace memorijski radni prostor (who varijable) Current directory trenutačni radni prostor Command history povijesni redoslijed naredbi File->New->M-file (CTRL+N) editor za m-datoteke Znakovi na naredbenoj liniji >> - Matlabov upit korisniku, engl. prompt, - odvajanje naredbi ; - sprječavanje ispisa rezultata... - nastavak naredbe u idućoj liniji % - komentar (od znaka udesno) Početak rada help - poziva pomoć help ops - pomoć o operatorima help format pomoć o formatima help elfun pomoć o elementarnim funkcijama... intro - uvod o Matlabu demo - demonstracija primjera lookfor - pretraživanje pojmova CTRL+C - prekid izvođenja diary - vođenje dnevnika rada quit - završetak rada Operatori Arithmetički operatori = - pridružba, assignment plus, uplus - plus, unarni plus + minus, uminus - minus, unarni minus - mtimes - matrično množenje * mldivide - matrično dijeljenje s lijeva \ mrdivide - matrično dijeljenje s desna / mpower - matrično potenciranje ^ Točka. - decimalna točka pristup polju strukture, npr. A(i).field Operatori nad elementima - upotreba Hadamard-ovog ('točka', engl. 'dot') operatora. power - potenciranje nad poljem.^ times - množenje elemenata u polju.* ldivide - lijevo dijeljenje u polju.\ rdivide - desno dijeljenje u polju./ C=A.*B znači c(i,j)=a(i,j)b(i,j)

M. Essert: Matlab interaktivno 3 C=A./B znači C=A.\B znači C=A.^B znači C=A.^r znači C=r.^A znači c(i,j)=a(i,j)/b(i,j) c(i,j)=b(i,j)/a(i,j) c(i,j)=a(i,j)^{b(i,j)} c(i,j)=a(i,j)^r, r je broj. c(i,j)=r^{a(i,j)} Relacijski operatori eq - jednako == ne - nejednako ~= lt - manje nego < gt - veće nego > le - manje ili jednako <= ge - veće ili jednako >= Logički operatori logički I (AND) među izrazima && logički ILI (OR) među izrazima and - logički I (AND) elemenata & or - logički ILI (OR) elemenata not - logički NE (NOT) ~ xor - logički exclusivni ILI (XOR) any - Istina (True, 1) ako je bilo koji element vektora različit od nule all - Istina (True, 1) ako su svi elementi vektora različit od nule Operatori na razini bita bitand - I (AND) na razini bita. bitcmp - komplement bitova. bitor - ILI (OR) na razini bita. bitxor - EX-ILI (XOR) na razini bita. bitset - Postavi bit bitget - Provjeri bit. bitshift - Pomak (shift) bitova. Operatori skupova union - unija skupova. unique - jedincatost (unique) skupa. intersect - presjek (intersection) skupova. setdiff - razlika (difference) skupova. setxor - Ex-Ili (exclusive-or) skupova. ismember - Istina (True) ako član (member) skupa. Znakovi 'nesto' - niz znakova (nesto), string Sistemski znakovi.. - prethodni directorij, roditeljski (parent) folder! - pozivanje sistemske naredbe Znakovi s vektorima (matricama) horzcat - [a b], [a, b] nadoveza elemenata u retku.

4 M. Essert: Matlab interaktivno vertcat - [a; b] stupčana nadoveza elemenata. transpose -.' za transpoziciju vektora (matrice) ctranspose - ' kompleksno konjugirana transpozicija colon - : ili dvotočje, za raspon vrijednosti argumenata Strukturirani podaci Structures spline, solve, diff. i optimisation solvers, OOP; Cells varargin, vargout, text in graphics, switch-case; Polje struktura: ime(1...dim).polje_x ili struct('polje_x',{podaci}) Polje ćelija: Ime_polja_celija={elem 1, elem 2,..., elem n } Poziv: Ime_polja_celija{element/-i} Primjeri 1. a=[1 2 3] c=[4; 5; 6] a*c dot(a,c) b=a' A=c*a a*a a.*a b=a.^2 a.*b exp(a) log(ans) sqrt(a) format long sqrt(a) format 2^(-24) n=4; testmat(1).ime='hilbert'; testmat(1).mat=hilb(n); testmat(2).ime='pascal'; testmat(2).mat=pascal(n); testmat(1).mat testmat(2).ime Moja_celija={pi*n, magic(3); 'Mario radi', rand(5)} Moja_celija{4} Moja_celija{4}(2,1) Cellplot(Moja_celija) Moja_celija{2}(1,3) Neke elementarne matematičke funkcije Trigonometrijske sin, sinh asin, asinh cos, cosh acos, acosh tan, tanh atan, atanh atan2 sec, sech asec, asech - sinus, hiperbolični sinus - inverzni sinus, inverzni hiperbolični sinus - kosinus, hiperbolični kosinus - inverzni kosinus, inverzni hiperb. kosinus - tangens, hiperbolični tangens - inverzni tangens, inverzni hiperb. tangens - inverzni tangens u četvrtom kvadrantu - sekans, hiperbolični sekans - inverzni sekans, inverzni hiperbolični sekans

M. Essert: Matlab interaktivno 5 csc, csch - sekans, hiperbolični sekans acsc, acsch - inverzni kosekans, inverzni hiperb. kosekans cot, coth - kotangens, hiperbolični kotangens acot, acoth - inverzni kotangens,inverzni hiperb. kotangens Eksponencijalne exp - eksponencijalna log - prirodni logaritam. log10 - obični (baza 10) logaritam log2 - logaritam po bazi 2 pow2 - potencija po bazi 2 realsqrt - kvadratni korijen broja >= 0 sqrt - kvadratni korijen Kompleksne abs angle complex conj imag real isreal - apsolutna vrijednost - fazni kut - Komplesni broj iz realnog i imaginarnog dijela - Konjugirani kompleksni broj - Imaginarni dio kompleksnog broja - realni dio kompleksnog broja - True (istina) za realna polja Zaokruživanje i ostatak fix - zaokruživanje prema nuli floor - zaokruživanje prema minus beskonačnom ceil - zaokruživanje prema plus beskonačnom round - zaokruživanje na najbliži cijeli broj mod - modulo funkcija (kao rezultat ostatka dijeljenja). rem - ostatak nakon dijeljenja sign - funkcija predznaka Tvorba vektora a) Utipkavanje elemenata vektora unutar [] ili programsko generiranje s pomoću petlje (engl. loop). b) Tvorba s rubovima i razmakom {početak} : {korak} : {dočetak} ako je korak=1 može se pisati samo {početak} : {dočetak} Korak može biti i negativan, a ako je pritom 'početak' manji od 'dočetka' onda će generirani vektor biti prazan ([]). c) preko funkcija 'linspace()' i 'logspace()' U oba slučaja prva dva argumenta su početak i dočetak vektora (u drugom kao potencije broja 10), a treći je broj elemenata između njih. Razlika je što su prvi linearno, a drugi logaritamski udaljeni jedni od drugih.

6 M. Essert: Matlab interaktivno Crtanje help plot PLOT Linear plot. PLOT(X,Y) crta vektor Y prema vektoru X. Različite tipovi linija, simbola i boja mogu se postići s naredbom PLOT(X,Y,S) gdje je S niz znakova (string) dobiven iz bilo kojeg od tri(ili svih) stupaca ispod: b plava. točka - čvrsto g zelena o kružić : točkasto r crvena x x-znak -. crt_točka c cyan + plus -- crtkano m magenta * zvijezda y žuta s kvadratić k crna d romb v trokut (dolje) ^ trokut (gore) < trokut (lijevo) > trokut (desno) p pentagram h hexagram Na primjer, PLOT(X,Y,'c+:') crta cyan točkastu liniju s + znakom na svakoj točki; PLOT(X,Y,'bd') crta rombove na svakoj točki podatka, ali ih ne povezuje linijom. PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) kombinira grafove definirane trojcima (X,Y,S), gdje su X i Y vektori ili matrice, a S su stringovi. Na primjer, PLOT(X,Y,'y-',X,Y,'go') crta podatke dvaput, s punom žutom linijom interpolirajući zelenim kružićima točke podataka. Uz Plot() obično se koriste i funkcije: TITLE('tekst') dodaje tekst na vrh grafa. XLABEL('tekst'), YLABEL('tekst') dodaje tekst uz X-os ili Y-os. TEXT(X,Y,'string') dodaje string u navodnicima na (X,Y) poziciju. subplot(nmk) crta k-ti podgraf u (n x m) matrici grafova Primjeri 2. 2.1 x = linspace(0,1,11) ; y = sin(2*pi*x) ; plot(x,y) 2.2 x=logspace(.01,1,15); y=log(x); plot(x,y,x,y,'*')

M. Essert: Matlab interaktivno 7 2.3 %Generiranje signala sa 'šumom' (noise): x=0:.025:2; y=sin(pi*x); yn=y+.25*(rand(size(x)) -.5); plot(x,y,'--',x,yn) title(['crtkana linija: sin(pi*x),'... ' cvrsta linija: podaci sa šumom']) xlabel(['šum je slucajan iz [-1/8,1/8]']) 2.4 %Ubrzanje računanja preko odsječaka: m=5; n=4*m+1; x=linspace(0,1,n) ; % [x(1),x(2),... x(21)], x(j)-x(j-1)=.05 y=zeros(1,n); xf=x( 1:(2*m+1) ) ; % the values [0,.05,...,.5] y(1:(2*m+1))=sin(2*pi*xf); y( (2*m+2):n )= -y(2:(2*m+1)) ; % koristi se činjenica da je % sin(x+pi)=-sin(x) plot(x,y) Ključno je ovo: ako je J=[J(1),J(2),...,J(k)] vektor indeksa vektora x=[x(1),x(2),...,x(n)], onda je w=x(j) vektor w= [x(j(1)),...,x(j(k))]. Tvorba matrica 1. Mogu se utipkati elementi: npr. A=[2 4 5; 2 6 3; -l 6 2] što daje 3 x 3 matricu. Ulazni podaci se tipkaju u redu (elementi se odvajaju prazninom ili zarezom), a s točkom-zarez (;) deklarira se početak novog retka. S naredbom rand(n) ili rand(n,m) generira se matrica reda (n x n) odnosno (n x m) sa slučajnim elementima koji su raspršeni preko normalne razdiobe između 0 i 1. 2. Naredbe a=fix(10*rand(5)) b=round(10*rand(5)) generiraju 5 x 5 matrice s cjelobrojnim elementima. Ako su A = [d ij ] i B = [b ij ] (n x m) matrice i C = [c ij ] je (m x p) matrica, onda imamo sljedeće matrične aritmetičke operacije: (a) A + B = [a ij + b ij ] i A B = [a ij - b ij ] (b) A * C = D gdje je D (n x p) matrica s veličinama dobivenim matričnim množenjem. 3. Općenito za (n x m) matricu A vrijedi: (a) veličina (tj. broj redaka i stupaca) dobiva se kao [n,m]=size(a) (b) i-ti redak je A(i,:) (c) j-ti stupac je A(:,j) (d) podmatrica B sa i do j redaka i p do q stupaca je B=A(i:j,p:q)

8 M. Essert: Matlab interaktivno Primjeri 3. 3.1 A=[1 2 5 ; -2 1 4] B=[4 2 0 ; 4 2-7] C=[3 6 ; -2 1 ;-4 2] A+B A*C 3*A 3.2 A=[3 1;5 2] A^2, A^3 A^(-1), inv(a) A*A^(-1) C=A^(-2) C*A^2 3.3 A=[1 2; 3 4]; B=[1 2; 2 4] T1= A == B T2= A <= B T3= A > B T4= A <= 3 T5= A ~= B T1=[1 1; 0 1]; T2=[1 0; 0 0] T=T1 & T2 T=T1 T2 T=~T1 bitand(13,7) bitxor(13,7) 3.4 Inverz matrice Matrica ima inverz ako joj je determinanta različita od nule. A=[3 1; 5 2] d=det(a) Problem određivanja kada kvadratna matrica ima inverz nema lak odgovor. A=[3 1; 5 2] B=[3 1; 6 2] Matrica A nije singularna onda i samo onda kad vrijedi jedno od slijedećih zaključaka: (a) det A 0 det (A) det (B) (b) Reducirani 'row echelon' forma od A je identitet rref(a) rref(b) (c) A ima inverz inv(a) inv(b) (d) Jedino rješenje jednadžbe Ax = 0 je x = 0, tj., nul-prostor je nul-vektor. Matlab naredba "null" računa bazu za nul-prostor. Primjetite da ona ne ispisuje nul-vektor. null(a) null(b) (e) Matrica A ima puni rang. Ako je A reda (n x n) onda je rang od A jednak n. rank(a) rank(b) Neke matrične funkcije size( ) - veličina matrice, broj redaka i stupaca ' - transpozicija matrice diag() - dijagonalna matrica eye() - jedinična (identity) matrica zeros() - nul matrica

M. Essert: Matlab interaktivno 9 sparse(i,j,v) - sparse matrica, na (i,j) mjestu v-ti element Polinomi kao matrice roots - nalazi korijen polinioma poly - pretvara korijen u polinom Primjeri 4. A=[5 7 9; 1-3, -7] B=[-1,2,5;9 0 5] C=[0,1;3,-2;4,2] D=[1:5; 6:10; 11:2:20] size(a) size(ans) [r c]=size(a'), S=size(A') D, D' size(d), size(d') P=ones(2,3) Z=zeros(2,3), zeros(size(p')) S=[2-1 0; -1 2-1; 0-1 2] St=S' S-St I=eye(3), x=[8; -4; 1], I*x D=[-3 0 0; 0 4 0; 0 0 2] diag(d) d=[-3 4-2], D=diag(d) F=[0 1 8 7; 3-2 -4-2; 4 2 1 1] diag(f) x=[8; -4; 1] G=[C x] A, B, H=[A;B] J=[1:4; 5:8; 9:12; 20 0 5 4] K=[diag(1:4) J; J' zeros(4,4)] spy(k),grid J(1,1), J(2,3), J(4,5) J(4,1)=J(1,1)+6 J(1,1)=J(1+1)-3*J(1,2) J(:,3) J(:,2:3) J(4,:) J(2:3,2:3) A,B,A.*B A.*C A.*C' i=[1,3,5]; j=[2,3,4]; v=[10 11 12] S=sparse(i,j,v) T=full(S) roots([1-3 2]) poly(ans) Kontrolne strukture programiranja INPUT naredba: x=input('neki tekst') dozvoljava interaktivan unos za x varijablu u izvođenju programa. Na zaslonu se pritom ispisuje neki tekst. x=input('neki tekst',s) sprema uneseni tekst kao string u varijablu x. IF kontrolna struktura odgovara na pitanje ako onda inače: if {relacija} {naredbe} ili još općenitije: if {relacija} {naredbe} elseif { relacija } { naredbe } else { naredbe }

10 M. Essert: Matlab interaktivno SWITCH struktura izabire vrijednost između više ponuđenih izraza. switch {izraz} case {slučaj_1}, naredba,..., naredba case {slučaj2, slučaj3,...} naredba,..., naredba... otherwise, naredba,..., naredba Izraz može biti skalar ili string. Postoji dva tipa petlji: (a) for petlja. Sintaksa je for {varijabla} = {vektor vrijednosti brojila} {naredba/-e} (b) while petlja odgovara na pitanje 'sve dok je istina čini': while {relacije} {naredbe} Programske funkcije: break - završava izvođenje for ili while petlje continue - prebacuje kontrolu na iduću iteraciju petlje try - početak TRY bloka catch - početak CATCH bloka eval - izvršava string s MATLAB izrazom. feval - izračunava funkciju specificiranu stringom run - izvršava script-a function global return nargin nargout varargin varargout disp fprintf sprintf pause error warning - dodaje novu (korisničku) funkciju - definira globalne varijable - povratak iz pozvane funkcije - broj ulaznih argumenata funkcije - broj izlaznih argumenata funkcije - lista promjenljive duljine ulaznih argumenata - lista promjenljive duljine izlaznih argumenata - ispis polja (obično stringa) - ispis formatirane poruke - ispis formatirane poruke u string - čekanje na korisnikov odziv (pauza) - ispis pogreške poruke ili prekidne funkcije - prikaz poruke upozorenjawarning message

M. Essert: Matlab interaktivno 11 Primjeri 5. 5.1 for i=1:3 x(i)=i^2 5.2 for i=1:5 for j=1:5 a(i,j)=1/(i+j) aa=hilb (5) 5.3 n=4 clear A for i=1:n for j=1:n if i < j A(i,j)=-1; elseif i > j A(i,j)=0; else A(i,j)=1; A AA=eye(n)-triu(ones(n),1) 5.4 j=1 while j <= 10 k(j)=cos(j*pi); j=j+1; k % usporedi sa: kk=cos((1:10)*pi) 5.5 x=(1:5)*2*pi; sprintf(' %5.3f',x) x=(1:5)*2*pi; sprintf(' %5.3f\n',x) 5.6 n=input(' unesi cijeli broj n = '); v=(1:2:n).^2 5.7 % Naći najmanji pozitivni % cijeli broj q za koji % vrijedi 2 -q = 0: x=1; q=0; while x>0 x=x/2; q=q+1; q 5.8 % Naći najmanji cijeli broj p % tako daje 1 + 2 -p = 1 % u aritmetici s pomičnim % zarezom: x=1; p=0; y=1; z=x+y; while x~=z y=y/2; p=p+1; z=x+y; p 2*y eps Primjetite da 2*y daje najmanji realni broj različit od nule u Matlab-u, tj. eps. 5.9 method = 'bilinear'; switch lower(method) case {'linear','bilinear'} disp('method is linear') case 'cubic' disp('method is cubic') case 'nearest' disp('method is nearest') otherwise disp('unknown method.')

12 M. Essert: Matlab interaktivno 5.10 %Formatirani ispis dobiva se upotrebom sprintf funkcije: disp('n sum(1:n) n*(n+1)/2 ') disp('------------------------------') for n=1:10 disp(sprintf(' %3.0f %5.0f %5.0f'...,n,sum(1:n),n*(n+1)/2)); 5.11 % Script file SineTable.m % % Ispisuje kratku tablicu proračuna sinusa. % n = 21; x = linspace(0,1,n); y = sin(2*pi*x); disp(' ') disp(' k x(k) sin(x(k))') disp('------------------------') for k=1:21 degrees = (k-1)*360/(n-1); disp(sprintf(' %2.0f %3.0f %6.3f'...,k,degrees,y(k))); disp( ' '); disp('x(k) je dan u stupnjevima.') disp(sprintf('jedan stupanj = %5.3e radijana',pi/180)) 5.12 % Script File Zoom % % Nacrtajte (x-1)^6 uz točku x=1 sa % slijedno povećanom skalom. % Izračunavanje (x-1)^6 preko % x^6-6x^5 + 15x^4-20x^3 + 15x^2-6x +1 % dovodi do ozbiljnih promišljanja. close all k=0; for delta = [.1.01.008.007.005.003 ] x = linspace(1-delta,1+delta,100)'; y = x.^6-6*x.^5 + 15*x.^4-20*x.^3... + 15*x.^2-6*x + ones(100,1); k=k+1; subplot(2,3,k) plot(x,y,x,zeros(1,100)) axis([1-delta 1+delta -max(abs(y)) max(abs(y))])

M. Essert: Matlab interaktivno 13 m-skripta i funkcija 5.13 % ovo je test m-datoteka nazvana test.m h=input('mesh size h = '); x=(0:h:1); lx=length(x); y=x.^2; int=(h/2)*(y(1)+2*sum(y(2:(lx-1)))+y(lx) ) % trapezno pravilo za integral s egzaktnom vrijednošću 1/3 5.14 FUNCTION dodaje novu funkciju. Nove funkcije sadržavaju stare, a spremaju se u datoteku s imenom istim kao ime funkcije, uz ekstenziju '.m'. Početak datoteke je sintaktički čvrsto određen. Komentar poslije funkcijske definicije koristi se u help-u. Primjer: function [mean,stdev] = stat(x) %STAT Interesting statistics. n = length(x); mean = sum(x) / n; stdev = sqrt(sum((x - mean).^2)/n); Podfunkcija (subfunction) koja je vidljiva drugim funkcijama unutar iste datoteke definira se nakon već napisane funkcije. function [mean,stdev] = stat(x) %STAT Interesting statistics. n = length(x); mean = avg(x,n); stdev = sqrt(sum((x-avg(x,n)).^2)/n); %------------------------- function mean = avg(x,n) %MEAN subfunction mean = sum(x)/n; Podfunkcije nisu vidljive izvan datoteke u kojoj su definirane. 5.15 function [x,iter]=sqrt_newton(a,tol) % SQRT_NEWTON - traženje kvadratnog korijena Newtonovom metodom % X=SQRT_NEWTON(A,TOL) vraća X kao rješenje korijena koji je >= 0 % TOL je tolerancija konvergencije (pretpostavljena je EPS) % [X, ITER]=SQRT_NEWTON(A,TOL) vraća također i broj iteracija ITER if nargin < 2, tol=eps; x=a; iter=0; xdiff=inf; fprintf(' k x_k rel_promjena\n') while xdiff>tol iter=iter+1; xold=x; x=(x+a/x)/2;

14 M. Essert: Matlab interaktivno xdiff=abs(x-xold)/abs(x); fprintf('%2.0f: %20.16e %9.2e\n',iter,x,xdiff) if iter>50 error('ne konvergira nakon 50 iteracija!') 5.16 defn.m function z=defn(x,y) z=-x*y; moja5-16.m clear % ovaj program poziva funkciju de_fn.m a=input('lijeva krajnja točka a = '); b=input('desna krajnja točka b = '); N=input(' broj podintervala, N = '); ya=input('početna vrijednost u x=a, ya= '); h=(b-a)/n; x=a+h*(1:(n+1)); lx=length(x); y(1)=ya; for j=1:n y(j+1)=y(j)+h*defn(x(j),y(j)); plot(x,y) 5.17 area.m function [A]=area(a,b,c) %Izračunava površinu trokuta koji ima stranice % dužine a, b i c % Inputs: % a, b,c duljine stranica % Output: % A površina trokuta % Usage: % Pov = area(2,3,4) % Napisao M.M., FSB Zagreb, 05.03.2003. s = (a+b+c)/2; A=sqrt(s*(s-a)*(s-b)*(s-c)); %------------ konac -------------------------