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

Similar documents
Mathcad sa algoritmima

Sveučilišni studijski centar za stručne studije. Zavod za matematiku i fiziku. Uvod u Matlab. Verzija 1.1

Projektovanje paralelnih algoritama II

AUTOMATIZACIJA AUTOMATIZACIJA. Proces kontrole i upravljanja zahtijeva kontinuirano mjerenje. znanje i informacije. Osnovni tipovi sustava

TEORIJA SKUPOVA Zadaci

ENGR Spring Exam 2

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

January 18, 2008 Steve Gu. Reference: Eta Kappa Nu, UCLA Iota Gamma Chapter, Introduction to MATLAB,

MATLAB for Chemical Engineering

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Metode izračunavanja determinanti matrica n-tog reda

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom.

TOPIC 2 Computer application for manipulating matrix using MATLAB

SIGNALS AND LINEAR SYSTEMS LABORATORY EELE Experiment (2) Introduction to MATLAB - Part (2) Prepared by:

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

A Mini course on MATLAB

Introduction to MATLAB

Using MATLAB. Linear Algebra

Manual of Time Scales Toolbox for MATLAB

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1

PREDAVANJA. Igor Vujović. Split, 2016.

Lecture 4: Linear Algebra Review, Part III

3. Array and Matrix Operations

Kratak kurs MatLab-a

Lab 2: Static Response, Cantilevered Beam

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA

O MATLAB-U Što je MATLAB? MATLAB je naročito dobar za. Elektrotehnika. Kako se i gdje sve Matlab koristi u tehnici?

Simetrične matrice, kvadratne forme i matrične norme

CISE 302 Linear Control Systems Laboratory Manual

L3: Review of linear algebra and MATLAB

MATLAB Examples. Mathematics. Hans-Petter Halvorsen, M.Sc.

Optimization and Calculus

Math 307: Problems for section 3.1

ALGORITAM FAKTORIZACIJE GNFS

Uvod u relacione baze podataka

Introduction to MatLab

+ MATRIX VARIABLES AND TWO DIMENSIONAL ARRAYS

4 Funkcije. 4.1 Definicija funkcije

Matlab Section. November 8, 2005

1.1 Uvod. 1.1 Uvod Značajke programskog jezika Python Interpretacija me dukôda

In this LAB you will explore the following topics using MATLAB. Investigate properties of the column space of a matrix.

Matlab for Review. NDSU Matlab Review pg 1

Computational Foundations of Cognitive Science

Input: A set (x i -yy i ) data. Output: Function value at arbitrary point x. What for x = 1.2?

An Introduction to MatLab

3. Programiranje u Matlab-u

ALGORITMI. Pojam algoritma Blok dijagram

Linear Algebra March 16, 2019

Homework 2 - Solutions MA/CS 375, Fall 2005

MATH.2720 Introduction to Programming with MATLAB Vector and Matrix Algebra

Hornerov algoritam i primjene

Chapter 3 Differentiation Rules (continued)

Solutions to Systems of Linear Equations

Numerical solution of ODEs

Lecture 4: Matrices. Math 98, Spring Math 98, Spring 2018 Lecture 4: Matrices 1 / 20

SECTION 2: VECTORS AND MATRICES. ENGR 112 Introduction to Engineering Computing

Introduction to Matlab

Identity Matrix: EDU> eye(3) ans = Matrix of Ones: EDU> ones(2,3) ans =

Classes 6. Scilab: Symbolic and numerical calculations

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

Linear Algebra and Matrices

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

Least squares regression

AMSC/CMSC 466 Problem set 3

Examples and MatLab. Vector and Matrix Material. Matrix Addition R = A + B. Matrix Equality A = B. Matrix Multiplication R = A * B.

Vektori u ravnini i prostoru. Rudolf Scitovski, Ivan Vazler. 10. svibnja Uvod 1

Matrix Arithmetic. j=1

JUST THE MATHS UNIT NUMBER DIFFERENTIATION 3 (Elementary techniques of differentiation) A.J.Hobson

Basic Linear Algebra in MATLAB

Matrix & Linear Algebra

Linear Algebra Using MATLAB

COLUMN VECTORS a=[1;2;3] b. a(1) = first.entry of a

pretraživanje teksta Knuth-Morris-Pratt algoritam

MATLAB BASICS. Instructor: Prof. Shahrouk Ahmadi. TA: Kartik Bulusu

Položaj nultočaka polinoma

LINEAR SYSTEMS, MATRICES, AND VECTORS

2D Plotting with Matlab

Nilpotentni operatori i matrice

University of British Columbia Math 307, Final

Solution of Linear systems

EEE161 Applied Electromagnetics Laboratory 1

Differential Equations DIRECT INTEGRATION. Graham S McDonald

Scilab Textbook Companion for Linear Algebra and Its Applications by D. C. Lay 1

Prsten cijelih brojeva

Homework 2. Matthew Jin. April 10, 2014

Prepared by: M. S. KumarSwamy, TGT(Maths) Page

Companion. Jeffrey E. Jones

MATLAB crash course 1 / 27. MATLAB crash course. Cesar E. Tamayo Economics - Rutgers. September 27th, /27

Chapter 5 Roots of Equations: Bracketing Models. Gab-Byung Chae

Chapter I: Hands-on experience in SCILAB operations

1 Pogreške Vrste pogrešaka Pogreške zaokruživanja Pogreške nastale zbog nepreciznosti ulaznih podataka

A matrix over a field F is a rectangular array of elements from F. The symbol

ELEMENTARY LINEAR ALGEBRA

Chapter I. Linear Equations

NIPP. Implementing rules for metadata. Ivica Skender NSDI Working group for technical standards.

Table 1 Principle Matlab operators and functions Name Description Page reference

7.1. Calculus of inverse functions. Text Section 7.1 Exercise:

DRUGI KOLOKVIJ ZADACI ZA VJEŽBU. 1. zadatak. Za rad s bazom podataka moja_baza koristimo naredbu:

SINTAKSNA I ALGORITAMSKA NOTACIJA

Transcription:

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./

M. Essert: Matlab interaktivno 3 C=A.*B znači 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)=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. STRING NIZ ZNAKOVA 'nesto' - niz znakova (nesto), string SISTEMSKI ZNAKOVI.. - prethodni directorij, roditeljski (parent) folder! - pozivanje sistemske naredbe

4 M. Essert: Matlab interaktivno ZNAKOVI S VEKTORIMA (MATRICAMA) horzcat - [a b], [a, b] nadoveza elemenata u retku. vertcat - [a; b] stupčana nadoveza elemenata. transpose -.' za transpoziciju vektora (matrice) ctranspose - ' kompleksno konjugirana transpozicija colon - : ili dvotočje, za raspon vrijednosti argumenata SLOŽENI 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 acsc, acsch cot, coth acot, acoth - sekans, hiperbolični sekans - inverzni kosekans, inverzni hiperb. kosekans - kotangens, hiperbolični kotangens - inverzni kotangens,inverzni hiperb. kotangens Eksponencijalne exp log log10 - eksponencijalna - prirodni logaritam. - 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 5x5 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 sparse(i,j,v) - sparse matrica, na (i,j) mjestu v-ti element

M. Essert: Matlab interaktivno 9 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 programski 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 programski 13 SCRIPTA 6.1 ime1.m h=input('korak h= '); x=0:h:2; y=x.^2 2*x+1; y1=sin(x); plot(x,y,'r-.',x,y1,'g:<') 6.2 ime2.m h=input('korak h= '); x=0:h:pi; y=cos(x).*(x<=pi/2)+(-x+pi/2).*(x>pi/2); plot(x,y) 6.3 epicikloida.m a=12; b=5; t=0:0.005:10*pi; x=(a+b)*cos(t)-b*cos((a/b+1)*t); y=(a+b)*sin(t)-b*sin((a/b+1)*t); plot(x,y) axis equal axis ([-25 25-25 25]) grid on title('epicikloida: a=12, b=5') xlabel('x(t)'), ylabel('y(t)') 6.4 % 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 Računalna matematika, FSB Zagreb, 2008.

14 M. Essert: Matlab programski INLINE FUNKCIJA 6.5 f=inline('exp(x)-1'),f(2) f=inline('log(a*x)/(1+y^2)') f=inline('log(a*x)/(1+y^2)','x','y','a') 6.6 fd_deriv.m function y=fd_deriv(f,x,h) %FD_DERIV Aproksimacija derivacije if nargin < 3, h=sqrt(eps); y=(feval(f,x+h) -feval(f,x))/h; fd_deriv(@sqrt,0.1) f=inline('exp(-x)/(1+x^2)'); fd_deriv(f,pi) M-FUNKCIJE 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.

M. Essert: Matlab programski 15 6.7 maxentry.m function y=maxentry(a) %MAXENTRY Nalazi najveci broj u matrici A y=max(max(abs(a))); maxentry([1 2; 11-4; 8 2]) 6.8 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)); 6.9 flogist.m function [f,fprime]=flogist(x,a) %FLOGIST logističa funkcija i njena derivacija f= x.* (1-a*x); fprime=1-2*a*x; f=flogist(2,.1) [f,fprime]=flogist(2,.1) flogist(1:4,2) 6.10 comfun.m function comfun(x,y,z) %COMFUN prikaz funkcije s tri string argumenta disp(x), disp(y) disp(z) comfun('ab','ac','ad') comfun ab cd eg disp('hello'), disp hello diary ('moja.txt'), diary moja.txt sqrt 2 % sto nam daje???? Računalna matematika, FSB Zagreb, 2008.

16 M. Essert: Matlab programski 6.11 marks.m function [x_sort, x_mean, x_med, x_std]=marks(x) % MARKS statistička analiza vektora x_sort=sort(x); if nargout>1, x_mean=mean(x); if nargout>2, x_med=median(x); if nargout>3, x_std=std(x); marks([12 3 4 5-4 5]) [a,b]=marks([12 3 4 5-4 5]) [a,b,c]=marks([12 3 4 5-4 5]) [a,b,c,d]=marks([12 3 4 5-4 5]) 6.12 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) 6.13 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;

M. Essert: Matlab programski 17 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!') REKURZIVNE FUNKCIJE 6.14 function koch(pl,pr,level) %KOCH Recursively generated Koch curve. % KOCH(PL, PR, LEVEL) recursively generates a Koch curve, % where PL and PR are the current left and right points % and LEVEL is the level of recursion if level==0 plot([pl(1),pr(1)], [pl(2),pr(2)]); %Join pl and pr hold on else A=(sqrt(3)/6)*[0 1; -1 0]; % Rotate/scale matrix pmidl=(2*pl + pr)/3; koch(pl,pmidl,level-1) % Left branch ptop=(pl + pr)/2 + A*(pl-pr); koch(pmidl,ptop,level-1) pmidr=(pl + 2*pr)/3; koch(ptop,pmidr,level-1) koch(pmidr, pr, level-1) % Left mid branch % Right mid branch % Right branch a) pl=[0;0]; pr=[1;0]; for k=1:4 subplot(2,2,k) koch(pl,pr,k) axis('equal') title(['koch curve: level = ', num2str(k)], 'FontSize',16) b) level=4; edges=7; for k=1:edges pl=[cos(2*k*pi/edges); sin(2*k*pi/edges)]; pr=[cos(2*(k+1)*pi/edges); sin(2*(k+1)*pi/edges)]; koch(pl,pr,level) axis('equal') title('koch snowflake','fontsize',16,'fontangle','italic') Računalna matematika, FSB Zagreb, 2008.

18 M. Essert: Matlab programski Fibonacci sequence 6.15 a) function f = Fib1(n) % Returns the nth number in the % Fibonacci sequence. F=zeros(1,n+1); F(2) = 1; for i = 3:n+1 F(i) = F(i-1) + F(i-2); f = F(n); b) function f = Fib2(n) % Returns the nth number in the % Fibonacci sequence. if n==1 f = 0; elseif n==2 f = 1; else f1 = 0; f2 = 1; for i = 2:n-1 f = f1 + f2; f1=f2; f2 = f; c) function f = Fib3(n) % Returns the nth number in the % Fibonacci sequence. if n==1 f = 0; elseif n==2 f = 1; else f = Fib3(n-1) + Fib3(n-2); d) function f = Fib4(n) % Returns the nth number in the % Fibonacci sequence. A = [0 1;1 1]; y = A^n*[1;0]; f=y(1);

M. Essert: Matlab programski 19 FUNKCIJE S VARIJABILNIM BROJEM ARGUMENATA 6.16 Moments.m function varargout=moments(x) %MOMENTS Moments of a vector. % [m1,m2,...,m_k]=moments(x) returns the first, second,..., % k'th moments of the vector X, where the j'th moment % is SUM(X.^j)/LENGTH(X). for j=1:nargout, varargout(j)={sum(x.^j)/length(x)}; >> m1=moments(1:4) m1 = 2.5000 >> [m1,m2,m3]=moments(1:4) 6.17 companb.m function C=companb(varargin) %COMPANB Block companion matrix % C=COMPANB(A_1,A_2,...,A_m) is the block companion matrix % corresponeding to the n-by-n matrices A_1,A_2,...,A_m. m=nargin; n=length(varargin{1}); C=diag(ones(n*(m-1),1),-n); for j=1:m Aj=varargin{j}; C(1:n,(j-1)*n+1:j*n)= -Aj; >> X=ones(2); C=companb(X,2*X,3*X) C = -1-1 -2-2 -3-3 -1-1 -2-2 -3-3 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 Računalna matematika, FSB Zagreb, 2008.

20 M. Essert: Matlab programski POLINOMI 6.18 Legeandre-ovi polinomi zadani su rekurzivnom jednadžbom: (n+1)p (n+1) (x)=(2n+1)xp n (x) np n-1 (x), P 0 =0; Nacrtajte prva četiri Legeandrova polinoma. Legre.m x=-1:.01:1; p1=x; p2=(3/2)*x.^2-1/2; p3=(5/2)*x.^3-(3/2)*x; p4=(35/8)*x.^4-(15/4)*x.^2+3/8; plot(x,p1,'r:',x,p2,'g--',x,p3,'b-.',x,p4,'m-') box off leg('\itn=1','n=2','n=3','n=4',4) xlabel('x','fontsize',12,'fontangle','italic') ylabel('p_n','fontsize',12,'fontangle','italic') title('legre Polynomials','FontSize',14) text(-.6,.7,'(n+1)p_{n+1}(x)=(2n+1)x P_n(x) - n P_{n-1}(x)',... 'FontSize',12,'FontAngle','Italic') Primjetite: leg-a se može pozicionirati uz pomoć zadnjeg argumenta: -1: nadesno od crteža, 0: automatski (na 'najboljoj' poziciji), 1: gore desno (pretpostavljena vrijednost), 2: gore lijevo; 3: dolje lijevo, 4: dolje desno. Polinom n-tog reda: y=p(x)= a 1 x n + a 2 x n-1 +... + a n x 1 + a n+1 uz poznate koeficijente [a 1 a 2... a n a n1 ] za poznatu vrijednost x može se izračunati direktno po gornjoj formuli: poli.m y=0; n=length(a)-1; for k = 1:n + 1 y = y + a(k)*x.^(n-k+1) >> a=[2-7 -2]; x=3; dok za više vrijednosti, područje vrijednosti x-a, program se samo proširuje vektorom y vrijednosti: polinom.m n = length(a)-1; nx = length(x); y = zeros(1,nx); for k = 1:n + 1 y = y + a(k)*x.^(n-k+1) >> a=[2-7 -2]; x=[3:.2:10];

M. Essert: Matlab programski 21 Isto se može načiniti i s pomoću funkcije polyval. >> help polyfun polyval polyfit polyder polyint conv deconv spline - izračunava polinom - traži koeficijente polinoma koji predstavlja podatke - derivira polinom - integrira polinom analitički - množi polinome - dijeli polinome - interpolira kubični spline % korijeni (nule) polinoma P = [1-12 0 25 116]; %polinom roots(p) ans = 11.7473 2.7028-1.2251 + 1.4672i -1.2251-1.4672i r = ans; PP = poly(r) PP = 1.0000-12.0000-0.0000 25.0000 116.0000 % množenje polinoma a = [1 2 3 4]; b = [4 9 16]; c = conv(a,b) c = 4 17 46 75 84 64 % vrijednost polinoma u točki(-ama) polyval(a, 2) ans = 26 polyval(a, [2 13-6 19]) Fitting Zadano je m-točaka: { X i, Y i } m I=1 Treba naći polinom p stupnja n tako da je p(x i ) priblžno jednako y i za sve i=1:m. To se postiže funkcijom polyfit koja za zadani red polinoma n daje koeficijente polinoma p tako da je suma od i=1:m za kvadrat razlike odsupanja (p(x i )-y i ) 2 minimalna. x = [1 3 7 21]; %fitting y = [2 9 20 55]; polyfit(x,y,2) ans = -0.0251 3.1860-0.8502 Nađite polinom trećeg reda koji u 20 točaka u intervalu [-2,2] po metodi najmanjih kvadrata aproksimira funkciju f(x)=1/(x+(1-x)^2). x=linspace(-2,2,20); Računalna matematika, FSB Zagreb, 2008.

22 M. Essert: Matlab programski y=1./(x+(1-x).^2); p=polyfit(x,y,3); plot(x,y,'*',x,polyval(p,x),' '); Objasnite dobivene koeficijente polinoma p: -0.1170-0.2067 0.4599 0.9426 Nađite egzaktnu interpolacija zadanih podataka preko spline funkcije. x=linspace(-2,2,20); y=1./(x+(1-x).^2); xx=linspace(-2,2,60); yy=spline(x,y,xx); plot(x,y,'*',xx,yy,' ') 6.19 polifit.m p=[1 6 11 6]; x=0:.25:4; y=polyval(p,x)+randn(1,length(x)); plot(x,y, * ), Title( Ulazni podaci ), pause while 1 n=input( Red polinoma n= ); if n<=0, break, c=polyfit(x,y,n) fit=polyval(c,x) plot(x,fit,x,y, o ), pause 6.20 inter.m xd = 1 : 4; yd = [0 1 0 2]; x = 1 : 0.1 : 4; y = polyval(polyfit(xd,yd,length(xd)-1),x); plot(x,y,xd,yd,'o')