La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Matlab 1 Annalisa Massini. Matlab 2 Introduzione MATLAB è un linguaggio di supporto per il calcolo scientifico, cioè per sviluppo, implementazione e analisi.

Presentazioni simili


Presentazione sul tema: "Matlab 1 Annalisa Massini. Matlab 2 Introduzione MATLAB è un linguaggio di supporto per il calcolo scientifico, cioè per sviluppo, implementazione e analisi."— Transcript della presentazione:

1 Matlab 1 Annalisa Massini

2 Matlab 2 Introduzione MATLAB è un linguaggio di supporto per il calcolo scientifico, cioè per sviluppo, implementazione e analisi di algoritmi numerici e non, che utilizzino appropriati modelli matematici La storia di MATLAB comincia negli anni 70 con le librerie matematiche LINPACK e EISPACK (in fortran) per la risoluzione di problemi di algebra lineare Negli anni 80 Cleve Moler scrive la prima versione di MATLAB allo scopo di sviluppare un calcolatore grafico interattivo: infatti MATLAB è lacronimo di MATrix LABoratory

3 Matlab 3 Introduzione MATLAB si compone di cinque parti principali: – Il linguaggio MATLAB con gestione delle principali strutture di programmazione – Ambiente di lavoro MATLAB e sua gestione – Ambiente grafico e sua gestione – Libreria di funzioni matematiche – Libreria per linterazione con programmi scritti in C o Fortran

4 Matlab 4 Introduzione Comprende un vasto set di funzioni predefinite e numerose librerie (toolbox) per svariate applicazioni Le potenzialità di MATLAB possono essere facilmente estese (è semplice creare nuovi toolbox) E' possibile convertire un programma MATLAB in codice C e C++ in modo automatico

5 Matlab 5 Variabili e espressioni All'avvio di MATLAB appare il prompt "»" Vi sono due tipi di istruzioni: – assegnamenti » variabile = espressione – valutazione di espressioni » espressione La valutazione di un' espressione genera una matrice che viene assegnata alla variabile indicata. Se non si specifica la variabile a cui assegnare il risultato, viene assegnata la variabile di sistema ans. Esempi: » 8+2 ans = 10 » a = 5*ans a = 50

6 Matlab 6 Variabili e espressioni Se unespressione non termina con ; il risultato della valutazione viene mostrato sullo schermo. In MATLAB le variabili non devono essere dichiarate. La dichiarazione coincide con il primo assegnamento. MATLAB è case-sensitive Esempi: » b = 6+a; » b b = 56

7 Matlab 7 Alcune istruzioni di uso comune help richiama lhelp in linea – help comando visualizza lhelp relativo al comando indicato who/whos elencano le variabili in uso dir elenca i files contenuti nella directory corrente clear all elimina tutte le variabili della sessione corrente – clear var1 var2 elimina le variabili var1 e var2

8 Matlab 8 Matrici Una matrice può essere definita con la sintassi seguente: » A = [7 8; 8.9 7; 9 8]» B = [1 2 3 A = 4 5 6] B = uno spazio o una virgola delimitano gli elementi di un stessa riga un punto e virgola o un cambio di riga indicano la fine di una riga

9 Matlab 9 Matrici sono presenti funzioni predefinite per la generazione di particolari matrici: – zeros(n,m)matrice di zeri – ones(n,m)matrice di uno – eye(n,m)matrice identità – rand(n,m)matrice di numeri casuali – diag([a11, a22, a33,..., aNN])matrice diagonale

10 Matlab 10 Matrici » A = [7 8; 8.9 7; 9 8] A = A(n,m) estrae lelemento (n,m) della matrice A » A(1,2) ans = 8 A(n,:) estrae ln-esima riga della matrice A » A(2,:) ans = A(:,m) estrae lm-esima colonna della matrice A » A(:,1) ans = Accesso agli elementi di una matrice:

11 Matlab 11 Estensione di una matrice È possibile estendere matrici già esistenti aggiungendo una riga o una colonna (di dimensione opportuna) A = [ 1 2; 3 4; 5 6 ]; A = [ A [7; 8; 9] ](oppure [ A [7 8 9] ] ) A =

12 Matlab 12 Istruzioni su matrici diag applicata ad una matrice ne estrae la diagonale, applicata ad un vettore crea una matrice diagonale. » A=[5 6 ; 7 8] A = » diag(A) ans = 5 8 » diag(ans) ans =

13 Matlab 13 Istruzioni su matrici sum : applicata ad una matrice fornisce un vettore che contiene le somme per colonna degli elementi; applicata ad un vettore fornisce uno scalare dato dalla somma degli elementi » A=[0 1 2 ;3 4 5 ;6 7 8 ] A = » B=sum(A) » sum(B) B = ans =

14 Matlab 14 Definizione di vettori Un vettore può essere creato con la stessa sintassi utilizzata per le matrici oppure con le istruzioni: » x = 1:6 x = a : [step :] bcrea un vettore riga di estremi a e b. Il parametro opzionale step indica lintervallo tra ciascun elemento del vettore » x = 0.5:0.1:0.9 x =

15 Matlab 15 Definizione di vettori linspace(a,b,N) crea un vettore riga di estremi a e b, costituito da N punti equispaziati » x = linspace(-1,1,4) x =

16 Matlab 16 Funzioni elementari per scalari Gli operatori aritmetici presenti in MATLAB sono: + (somma), - (differenza), * (prodotto), / (quoziente), ^(elevamento a potenza) Funzioni trigonometriche – sin, cosseno, coseno – tantangente – asin, acosarco seno, arco coseno – atanarco tangente

17 Matlab 17 Funzioni elementari per scalari Funzioni matematiche elementari: – absvalore assoluto di un numero complesso – conjcomplesso coniugato – expesponenziale in base e – real, imag parti reale e immaginaria di un numero complesso – log, log10 logaritmo naturale ed in base 10 – sqrtradice quadrata Le variabili i e j sono predefinite come unità immaginarie, cioè uguali alla radice quadrata di -1

18 Matlab 18 Funzioni elementari per matrici Gli operatori elementari per le matrici sono: +, -, *, /, \,.*,./,.^ – L'operazione di somma o di sottrazione è definita tra matrici aventi le stesse dimensioni. Se uno dei due operandi è uno scalare, esso viene sommato o sottratto a tutti gli elementi della matrice. – X = B/A è la soluzione dell'equazione X*A = B – X = A\ B è la soluzione dell'equazione A*X = B –.*,./ e.^ effettuano le corrispondenti operazioni sui singoli elementi delle matrici coinvolte.

19 Matlab 19 Funzioni elementari per matrici Le funzioni matematiche elementari e trigonometriche, quando applicate alle matrici, si riferiscono ai singoli elementi della matrice Principali operazioni matriciali: – Matrice trasposta A' – Matrice inversa inv(A) – Determinante det(A) – Autovalorieig(A) – Polinomio caratteristicopoly(A) – Rangorank(A) – Dimensionisize(A)

20 Matlab 20 Funzioni matematiche Per visualizzare lelenco di funzioni matematiche elementari si può digitare: – help elfun – le funzioni sono suddivise in trigonometriche, esponenziali, complesse e di arrotondamento Per un elenco più avanzato delle funzioni matematiche e delle matrici digitare: – help specfun funzioni matematiche specializzate, funzioni di teoria dei numeri (fattoriale, primalità, ecc.), trasformazioni di coordinate – help elmat funzioni su matrici: funzioni elementari, funzioni di info su matrici, variabili e costanti, funzioni di manipolazione su matrici, funzioni specializzate su matrici

21 Matlab 21 Il comando FORMAT In Matlab tutti i valori sono in doppia precisione. Il comando format permette di mostrare un valore in diversi formati. Consideriamo il x = 4/3 format short virgola fissa 5 bit default format long virgola fissa 15 bit format short e e virgola mobile 5 bit format long e e virgola mobile 15 bit format short g migliore tra virgola fissa e mobile format long g migliore tra virgola fissa e mobile format bank formato per denaro dollari o euro format rat4/3 - approssimazione al rapporto format hex 3ff formato esadecimale

22 Osservazioni L errore di arrotondamento che si commette sostituendo un numero reale x con il suo rappresentante in virgola mobile fl(x) è generalmente piccolo e si può calcolare con il comando eps: eps (x) è la differenza posistiva tra abs(x) e il valore più vicino in virgola mobile (nella stassa precisione) realmin è il più piccolo valore positivo rappresentato ed è 2^(-1022), circa e-308 realmax è il più grande valore positivo rappresentato ed è circa e+308 Matlab 22

23 Matlab 23 Grafica con Matlab La funzione plot produce grafici bidimensionali e può essere chiamata con diverse modalità Esempio » n = 31 » x = linspace(0,2*pi,n) » y = sin(x) » plot(x,y) permette di ottenere una rappresentazione grafica raccordando con segmenti di retta nel piano xy i valori (x(i),y(i)) per i che va da 1 a 31

24 Matlab 24 Grafica con Matlab La sintassi del comando plot è: plot(vettore1, vettore2, opzioni) dove vettore1 costituisce le ascisse, vettore2 le ordinate e opzioni definisce colore, tipo di linea e di simbolo usati help plot Per tracciare quattro funzioni di x, ciascuna con un colore diverso, nello stessa finestra grafica: y2 = sin(x -.40); y3 = sin(x -.8); y4 = sin(x - 1.2); plot(x,y,x,y2,x,y3,x,y4) oppure plot(x,[y;y2;y3;y4])

25 Matlab 25 Grafica con Matlab Un altro modo per rappresentare sullo stesso grafico più curve: – dati y1 e y2 » x = linspace(0,2*pi) » y1 = cos(x) » y2 = sin(x) – possiamo disegnare i grafici sovrapposti con » plot(x,y1,-) » hold on » plot(x,y2,--) » hold off

26 Matlab 26 Grafica con Matlab E' possibile impostare titolo e etichette per gli assi: » title(titolo del grafico) » xlabel(asse x) » ylabel(asse y) axis permette di scegliere dimensione e aspetto degli assi legend permette di aggiungere una legenda text permette di porre una scritta su un grafico alle coord specificate: » text(x(70)+0.5,r(70),'r = -2x') Si può specificare la griglia con il comando » grid on oppure specificando grid nel comando plot

27 Matlab 27 Grafica con Matlab Altre funzioni che si possono utilizzare nella visualizzazione di grafici 2-D, sono: – logloggrafico logaritmico in x e y – semilogxgrafico logaritmico in x e lineare in y – semilogygrafico logaritmico in y e lineare in x – bargrafico a barre – stairsgrafico a scala – meshgrafico 3D

28 Matlab 28 Grafica con Matlab Il comando subplot permette di dividere una finestra grafica in una matrice di sottofinestre. » subplot(m,n,p) specifica che si usa una matrice di sottofistre con m righe e n colonne e che si disegna nella sottofinestra p, numerando le finestre per righe dallalto verso il basso

29 Matlab 29 Visualizzazione di funzioni Il comando fplot permette di disegnare il grafico di una funzione indicata esplicitamente tra apici (o mediante il nome del m-file) Il comando fplot(fun, lims) visualizza il grafico della funzione indicata nella stringa fun sull intervallo [lims(1), lims(2)] Esempio: » fun=1/(1+x^2); lims=[-5,5]; fplot(fun,lims); o equivalentemente » fplot(1/(1+x^2), [-5,5]); N.B. il grafico viene fatto nellintervallo definito dalle ascisse [ xmin,xmax ]; le ordinate ymin, ymax si possono omettere e, in tal caso, vengono determinate automaticamente

30 Matlab 30 Visualizzazione di funzioni Il grafico prodotto da Matlab è una rappresentazione approssimata, a meno del 2%, del grafico della funzione f ed è ottenuto su un opportuno insieme non equispaziato di ascisse. Per aumentare laccuratezza della rappresentazione si può richiamare fplot con lopzione tol che permette di specificare la tolleranza relativa richiesta e lopzione n che specifica il numero di punti utilizzato per disegnare il grafico: fplot(funzione, [xmin,xmax,ymin,ymax], tol,n) Lopzione LineSpec è una stringa che specifica il tratto grafico fplot(fun, lims, - -) oppure fplot(fun, lims, r -) Si può specificare tra apici anche un array di funzioni, in tal caso vengono disegnati i grafici di tutte le funzioni Esempio fplot([sin(t), sin(t-.25), sin(t-.5)],[0,2*pi]) Si può usare anche ezplot.

31 Matlab 31 Visualizzazione di funzioni Si possono produrre grafici di funzioni in due variabili : si preparano i valori della griglia, tramite una matrice delle x e una matrice delle y, e i corrispondenti valori di z = f(x,y) si disegna usando il comando mesh (oppure surf, surfl, contour) Esempio » n=7; m=n; » x=linspace(-2,2,n); » y=linspace(-2,2,n); » [X,Y]=meshgrid(x,y); % matrici X e Y, griglia di coordinate » Z=(1-Y).*cos(X.^2)+(X-1).*cos(Y.^2); » mesh(X,Y,Z);

32 Sulle funzioni Per valutare le funzioni in un punto x o su un insieme di punti memorizzati nel vettore x, si possono utilizzare i comandi eval o feval. Il calcolo di uno zero o radice di una funzione fun vicino ad un certo valore x0, reale o complesso, può essere fatto con il comando fzero(fun,x0) oltre al valore approssimato dello zero in uscita viene fornito lintervallo entro il quale il programma ha cercato lo zero Matlab 32

33 Matlab 33 Polinomi Un polinomio è rappresentato da un vettore riga che contiene i coefficienti del polinomio medesimo in ordine decrescente rispetto alle potenze. Il polinomio 3x 3 + 2x + 8 si rappresenta come: » pol= [ ] Per valutare un polinomio in uno o più punti si usa il comando polyval specificando in ingresso i due vettori pol e x, che rappresentano i coefficienti e le ascisse: » polyval(pol, 1) ans = 13

34 Polinomi Il comando roots serve per calcolare in maniera approssimata gli zeri di un polinomio e richiede in ingresso il solo vettore pol. Esempio: il polinomio x 3 -6 x x – 6 » p= [ ]; format long; » roots(p) ans = Matlab 34

35 Polinomi N.B. Non sempre si ottengono risultati esatti come nellesempio. I metodi numerici utilizzati incidono in particolare nel caso di radici multiple: un esempio è quello di p(x)=(x+1) 7 i cui coefficienti sono [ ]. p=conv(p1,p2) calcola i coefficienti del polinomio prodotto [q,r]=deconv(p1,p2) calcola il quoziente e il resto della divisione polyfit calcola gli n+1 coefficienti di un polinomio p di grado n una volta noti i valori di p in n+1 punti distinti Matlab 35

36 Matlab 36 Programmazione in MATLAB Scripts e Funzioni I files che contengono codice MATLAB sono chiamati M-files. Possono essere generati usando un qualsiasi editor di testo, lambiente Matlab fornisce un editor che può essere richiamato con il comando edit. Ci sono due generi di M-file: Scripts M-files - possono essere usati come comandi MATLAB (cioè digitando solo il nome del file al prompt di MATLAB), - operano su dati nel workspace Functions M-files - possono essere richiamate da un altro modulo o direttamente dalla finestra comandi - accettano argomenti in ingresso e producono argomenti in uscita, - le variabili di una function sono locali.

37 Matlab 37 Programmazione in MATLAB Il simbolo % è usato per indicare un commento. I commenti posizionati allinizio del file vengono visualizzati tramite help nome del programma Function Le funzioni hanno variabili proprie che vengono cancellate automaticamente dalla memoria al termine della funzione. La prima riga di una function deve avere la seguente struttura: Function parametri in uscita = NomeFunzione(parametri in ingresso) N.B. La funzione va salvata come NomeFunzione.m Nella funzione devono essere assegnati i valori ai parametri in uscita

38 Matlab 38 Programmazione in MATLAB Esempio % TrovaMedie calcola la media di un % vettore di valori casuali la media tra % il valore massimo e il valore minimo v=rand(5,1) media= valmed (v) medmm= minmax (v) function m= valmed (v) n=length(v) m=sum(v)/n function mm= minmax (v) minimo=min(v) massimo=max(v) mm=(minimo+massimo)/2

39 Matlab 39 Programmazione in MATLAB Consideriamo alcuni costrutti fondamentali per la programmazione che permettono lesecuzione ripetuta di istruzioni e lesecuzione condizionata di alcune parti. Ciclo incondizionato for… end – for Indice=Inizio:Incremento:Fine ( oppure Indice=vettore) blocco istruzioni end – Esempi (media senza usare sum e doppio ciclo): n=length(v); somma=0; for k=1:n somma=somma+v(k) end somma=somma/n N.B. E buona norma scrivere il blocco di istruzioni interne al ciclo for indentato e allineato con lespressione che governa il ciclo. for i=1:m for j=1:n H(i,j)=1/(i+j); end

40 Matlab 40 Programmazione in MATLAB Quando si ha la necessità di ripetere delle operazioni diverse volte a seconda che una certa condizione sia verificata oppure no, si usa Ciclo condizionato while… end while Condizione blocco istruzioni end Condizione è unespressione che Matlab valuta numericamente e interpreta come vera se diversa da 0; gli operatori sono =, >, ~=, & (and), | (or), ~ (not), Esempio: >> a=10; b=3; c=25; >> a==b ans= 0 >> a>b ans= 1 >> a+b > c ans= 0

41 Matlab 41 Programmazione in MATLAB Esempi di while x = 3.; while x < 25. x = x + 2 end Successione di Fibonacci a(1)=1; a(2)=1; n=2; while a(n) < c a(n+1) = a(n) + a(n-1); n=n+1; end disp(a(n-1))

42 Matlab 42 Programmazione in MATLAB Può essere necessario eseguire un blocco di istruzioni solo nel caso in cui una particolare condizione risulti verificata ed eseguire un blocco di istruzioni diverso in caso contrario Tale verifica può essre effettuata tramite il costrutto: if… elseif… else…end La sintassi è: if Condizione1 blocco istruzioni elseif Condizione2 blocco istruzioni … else blocco istruzioni end Esempio if x >= 0 y = sqrt(x); elseif x == 0 y = 0; else y = NaN; disp(non definito) end

43 Matlab 43 Programmazione in MATLAB Quando è possibile, utilizzare le funzioni MATLAB, le sequenze (:) o gli operatori. invece dei cicli: aumento di velocità Vettorizzazione – La vettorizzazione è importante per ottenere la maggior velocità. MATLAB può usare operazioni su vettori o matrici dove gli altri linguaggi di programmazione userebbero cicli for o do. – Esempio ( tavola di logaritmi) x = 0; for k = 1:1001 y(k) = log10(x); x = x +.01; end Una versione vettorizzata dello stesso codice `e: x = 0:.01:10; y = log10(x); Non sempre loperazione di vettorizzazione è così ovvia

44 Matlab 44 Programmazione in MATLAB Preallocation – Se non si può vettorizzare un pezzo di codice, si può velocizzare un ciclo FOR preallocando qualsiasi vettore o array nei quali sono immagazzinati i risultati di output. – Ad esempio, il codice seguente usa la funzione zeros per preallocare il vettore creato nel ciclo FOR. r = zeros(32,1); for n = 1:32 r(n) = rank(magic(n)); end – Senza la preallocation nellesempio precedente, linterprete di MATLAB allarga il vettore r di un elemento ad ogni ciclo. La vector preallocation elimina questo passo e lesecuzione è più veloce.


Scaricare ppt "Matlab 1 Annalisa Massini. Matlab 2 Introduzione MATLAB è un linguaggio di supporto per il calcolo scientifico, cioè per sviluppo, implementazione e analisi."

Presentazioni simili


Annunci Google