IEEE-754 Calculators http://babbage.cs.qc.edu/IEEE-754/ Doing the Math and Making an Impact http://www.ima.umn.edu/newsltrs/updates/summer03/ Disatri attribuiti al cattivo calcolo numerico http://www.ima.umn.edu/~arnold/disasters/ Introduzione Matlab Carla Guerrini 1 Introduzione all’ambiente Matlab Introduzione Matlab Carla Guerrini 2 1 Riferimenti bibliografici • Guida per l’utente (http://www.mathworks.com) • G. Naldi, L. Pareschi, Matlab concetti e progetti, Apogeo ed.(2007) • Tutorials e programmi disponibili in rete: http://www.dti.supsi.ch/~bucher/matlab.pdf http://www.math.ucsd.edu/~bdriver/21d-s99/matlab-primer.html http:// www.dm.unibo.it/~guerrini/html/primer.ps • Lucidi delle lezioni nella pagina web del corso Introduzione Matlab Carla Guerrini 3 Che Cosa è MATLAB • Matrix Laboratory • Un ambiente di calcolo scientifico con routines altamente specializzate • Un ambiente grafico • Un linguaggio di programmazione Introduzione Matlab Carla Guerrini 4 2 La storia di Matlab • Inizia con la costruzione di libreria matematiche (scritte inizialmente in FORTRAN) LINPACK, EISPACK riguardanti la soluzione di problemi di algebra lineare. • Nel 1980 Moler scrisse la prima versione di Matlab per sviluppare un calcolatore matriciale interattivo. • Nel 1985 con la fondazione della società Mathworks Matlab è diventato un linguaggio orientato alle matrici con importanti aggiunte per l’analisi dei dati e la visualizzazione scientifica Introduzione Matlab Carla Guerrini 5 La storia di Matlab: I Toolbox A partire da un nucleo base si sono sviluppate diverse librerie per applicazioni specifiche: - Statistica - Reti Neurali - Ottimizzazione - Analisi di Immagini - Matematica Finanziaria - Symbolic - Simulink - Signal processing - …………. Introduzione Matlab Carla Guerrini 6 3 Cos’è Matlab? • La struttura di base è la matrice per la quale sono già predefinite numerosi tipi elementari (identità, matrice nulla, matrice unità,..) funzioni algebriche e di manipolazione • Matlab fa largo uso di librerie di calcolo (in particolar modo di algebra lineare) • E’ uno dei programmi scientifici di maggior diffusione, usato nella ricerca e per il calcolo tecnico e scientifico Introduzione Matlab Carla Guerrini 7 MATLAB fornisce un ambiente di calcolo, visualizzazione e programmazione scientifica, in cui è possibile: • calcolare direttamente espressioni matematiche >> ((tan(pi/5)+2)*exp(2.3)-0.01)/log(2) ans = 39.2197 • sfruttare algoritmi di base già implementati - built-in function – >> mean([1.5 2.5 3.5]) ans = 2.5000 • utilizzare il semplice ambiente di programmazione per costruire i propri algoritmi (Parte II) Introduzione Matlab Carla Guerrini 8 4 Altre funzionalità di MATLAB includono: • • • • • • • Matematica e calcolo Sviluppo di procedure e applicazioni Modellistica, simulazione e costruzione di prototipi Analisi di dati, esplorazione e visualizzazione Disegno industriale e scientifico Costruzione di interfacce utente TOOLBOX vari • Con il comando demos è possibile vederne alcuni esempi. Introduzione Matlab Carla Guerrini 9 Introduzione Matlab Carla Guerrini 10 5 Programmare in MATLAB • MATLAB ha anche un linguaggio proprio per programmare. • E’ un linguaggio interpretato e non compilato: questo significa che le istruzioni vengono tradotte in linguaggio macchina (il linguaggio “capito” dal processore) e subito eseguite una per volta. • Utilizzando C, Fortran, C++, la traduzione da linguaggio ad alto livello a linguaggio macchina avviene invece nel processo di compilazione, in cui tutto il programma viene tradotto in linguaggio macchina e poi eseguito. Introduzione Matlab Carla Guerrini 11 Per iniziare…. • Per lanciare MATLAB da ambiente Linux basta digitare da shell il comando matlab o cliccare due volte con il mouse sull’icona corrispondente (K menu->Dipartimento Matematica->Matlab). All’avvio appare il Desktop di Matlab che contiene le finestre: • dei comandi (command window) il prompt >> indica che il calcolatore è pronto a ricevere istruzioni e ad eseguirle • dello spazio di lavoro (workspace window) • della directory corrente (current directory) • della storia dei comandi (command history) Per terminare la sessione di lavoro basta digitare >>quit Introduzione Matlab Carla Guerrini 12 6 Il Desktop di MATLAB WORKSPACE WINDOW CURRENT DIRECTORY Elenca le variabili presenti nello spazio di lavoro insieme ad alcune informazioni su di esse: Mostra il contenuto della directory in cui l’utente sta lavorando. Tipo, dimensioni, memoria occupata… Esempio:(windows) C:\Documents and Settings\guerrini\Documenti\MATLAB E’ possibile modificare il valore di una variabile utilizzando l’apposito workspace editor Esempio: (linux) …… E’ possibile spostarsi tra le directory come con un qualsiasi file manager COMMAND HISTORY COMMAND WINDOW Istruzioni elementari: Contiene la lista dei comandi digitati con funzioni di copia e incolla >>2+3 % utlizzo come calcolatrice Ans 5 >>A=3 % assegnaz. del valore 3 alla variabile A >>B=A^2 % valutazione di una espressione Introduzione Matlab Carla Guerrini 13 Introduzione Matlab Carla Guerrini 14 7 Come ottenere aiuto: il manuale o Help • Si accede al manuale o tramite il menu Help • help (in command window, help generale di tutte le funzioni) >> help sin SIN Sine. SIN(X) is the sine of the elements of X See also asin, sind Reference page in Help browser doc sin. • Digitando lookfor <keyword> si attiva invece la ricerca di funzioni basate su una parola chiave. Help Desk: Un help in HTML molto completo e di facile navigazione fornito anche di svariati esempi • Attraverso il comando doc si accede direttamente alla documentazione online di MATLAB. Introduzione Matlab Carla Guerrini 15 Introduzione Matlab Carla Guerrini 16 8 MATLAB Editor L’ Editor : è la finestra in cui si scrivono i programmi MATLAB (M files, cioè file con estensione “.m”). Per richiamarla digitare >> edit o semplicemente utilizzare il menu File->New->Blank M-File Introduzione Matlab Carla Guerrini 17 Introduzione Matlab Carla Guerrini 18 9 Gestione dei files >> dir - visualizza il contenuto della directory corrente >> ls >> what – visualizza i files di tipo Matlab nella directory corrente >> cd – permette di spostarsi nell’albero delle directory >> pwd – riporta la directory corrente >> path stampa l’albero di ricerca >> type nomefile – visualizza il contenuto del file Introduzione Matlab Carla Guerrini 19 Le informazioni e la memoria • Le informazioni (dati in forma numerica o alfanumerica) vengono memorizzati nella RAM utilizzando “variabili” Variabili (scalari, vettori, matrici): ha due caratteristiche: – Il nome, che la identifica (I nomi scelti possono contenere lettere, cifre e il carattere “_”, non possono iniziare con una cifra, non si possono utilizzare parole riservate di MATLAB). La variabile di default è ans – Il valore, cioè il dato che essa rappresenta e che viene memorizzato nella RAM. Matlab è un linguaggio case sensitive, ossia distingue fra lettere maiuscole e minuscole, quindi la variabile A è diversa dalla variabile a Per controllare se un nome è una parola riservata: vedere il comando iskeyword Introduzione Matlab Carla Guerrini 20 10 Le variabili in Matlab >> a=5-2 a= 3 >> 3+5 ans 8 >> a=10; >> b=15; le variabili a,b,c,d >> c=31; contengono i valori >> d=30; 10,15,31,30 >> media=(a+b+c+d)/4 media = 21.5 Il valore della media aritmetica tra 10,15,31,30 è stato memorizzato nella variabile media Introduzione Matlab Carla Guerrini 21 Tipi di dati Double Complex Double Logical Double Char Introduzione Matlab Numeri reali nell’intervallo [10^(-308) 10^(308)] 8 byte Numeri Complessi 16 byte Risultato di una operazione logica (1=vero, 0=falso) carattere Carla Guerrini 8 byte 2 byte 22 11 Le variabili Matlab (II) • • Matlab memorizza tutte le variabili definite durante la sessione di lavoro L’insieme delle variabili attive costituisce il workspace di Matlab >>who Your variable are: a b c d >>whos Name Size bytes a 1x1 8 Class double b 1x1 8 double c 1x1 8 double • Il comando whos dà maggiori informazioni sulle variabili in memoria Il comando clear cancella il contenuto del workspace • Il comando clear seguito dai nomi di alcune variabili (non separati dalla virgola) cancella soltanto quelle variabili • >> clear Introduzione Matlab >> clear a b Carla Guerrini 23 Le variabili Matlab (IV) >> a =sqrt(3) >> c=-2+i*3.2 >> t=a<1 >> k= ‘c’ Double Complex double Logical double Char >> v_testo=‘ questa stringa viene assegnata’ Char array Introduzione Matlab Carla Guerrini 24 12 Variabili predefinite • ans most recent answer • eps accuratezza relativa per i numeri in doppia precisione. Ritorna la distanza fra 1.0 e il numero (> di 1.0) più vicino ad 1.0. Viene usato come tolleranza in molte funzioni numeriche. • pi π, 3.14159265... • i,j unità immaginaria • NaN “Not-a-Number” (l’espressione calcolata non è un numero macchina, si ottiene come risultato di operazioni aritmetiche indefinite, ad esempio la divisione 0/0) • inf,-inf si ottengono per overflow, o divisione per zero • realmax massimo numero macchina positivo • realmin minimo numero macchina positivo • beep fa suonare un beep al computer • nargin dentro il body di una function riporta il numero di argomenti di input che sono stati usati per chiamare la function • nargout numero di argomenti di output di una function Introduzione Matlab Carla Guerrini 25 Tipi di variabili Tipi interi definiti in Matlab: int8, int16, int32, int64 (interi con segno) uint8, uint16, uint32, uint64 (interi senza segno) Tipi floating point Single (32 bits), double (64bits) • ATTENZIONE! Le operazioni aritmetiche vengono eseguite solo fra elementi double. Per fare delle operazioni matematiche su dati interi o in singola precisione, si devono convertire in doppia precisione usando la funzione double. >>s=3 ; us=uint8(s); >>us+4 ??? Error using + Function '+' is not defined for For values of class ‘uint8’ Introduzione Matlab Carla Guerrini 26 13 Formati di visualizzazione delle variabili Matlab di deafult visualizza una variabile numerica con 4 cifre decimali: >>pi ans= 3.1416 Per modificare il formato di visualizzazione, Sintassi del comando: >> format tipoformato >> format long >>pi ans= 3.14159265358979 Introduzione Matlab Carla Guerrini 27 Formati di visualizzazione Introduzione Matlab Carla Guerrini 28 14 Formato di visualizzazione Introduzione Matlab Carla Guerrini 29 Esempi >>y = 8/6 >>format short 1.3333 >>format short e 1.3333E+000 >>format short g 1.3333 >>format long 1.33333333333333 >>format long e 1.333333333333333E+000 >>format long g 1.33333333333333 >>format rat 4/3 Introduzione Matlab DEFAULT Carla Guerrini 30 15 Workspace L’insieme delle variabili mantenute in memoria durante la sessione MATLAB viene chiamato spazio di lavoro (workspace) Il workspace puo essere così manipolato: • Visualizzare e/o modificare le variabili dell’area di lavoro • Cancellare le variabili di lavoro • Rappresentare graficamente le variabili di lavoro • Salvare l’area di lavoro • Caricare un’area di lavoro precedentemente salvata Introduzione Matlab Carla Guerrini 31 Sessione di lavoro diary <nome_file> memorizza nel file <nome_file> la sessione di lavoro, in formato ASCII (comandi, dati e workspace) da quel punto in poi tutto quanta l’attività svolta nella working area viene salvata ed e’ possibile consultare in seguito il contenuto con un qualsiasi editor di testo Non è possibile utilizzare questo file per ricaricare il lavoro fatto per continuare a lavorarci, è solo un diario di lavoro. Per proseguire in un secondo tempo l’attività occorre utilizzare altri comandi come save e load che memorizzano in file binari save <nome_file> e ricaricato in ambiente MATLAB load <nome_file> Per visualizzare poi la lista delle variabili attive who oppure whos Introduzione Matlab Carla Guerrini 32 16 Sessione di lavoro clear <nomevariabile> cancella la vaiabile clear cancella tutto clc pulisce il desktop clf pulisce la finestra di una figura pwd visualizza la directory in cui si sta lavorando what elenca gli m-files memorizzati nella pwd cd permette di cambiare directory path o matlabpath elenca i possibili percorsi delle directory MATLAB addpath aggiunge la directory ai path già esistenti pathtool permette di accedere alla finestra degli strumenti per la gestione dei percorsi Introduzione Matlab Carla Guerrini 33 Operatori Operatori aritmetici + addizione - sottrazione / divisione a destra 1 / 4 = 0.25 \ divisione a sinistra 4 \ 1 = 0.25 ^ elevamento a potenza * moltiplicazione Operatori logici & and | ~ or not Introduzione Matlab Carla Guerrini 34 17 Operatori Operatori relazionali: ~= <= < >= > == diverso minore uguale minore maggiore uguale maggiore uguale logico Introduzione Matlab >> x = ‘a’; >> y = 3; >> rep = x==y rep 0 Carla Guerrini 35 Esempi >> a=1; x=0; y=0; z= Inf ans = NaN >> whos Name Size a ans x y z 1x1 1x1 1x1 1x1 1x1 Introduzione Matlab z=a/x, y*a/x Bytes Class Attributes 8 double 8 double 8 double 8 double 8 double Carla Guerrini 36 18 >> a=magic(3) a= 8 1 6 3 5 7 4 9 2 >> b=i*ones(3,3) b= 0 + 1.0000i 0 + 1.0000i 0 + 1.0000i 0 + 1.0000i 0 + 1.0000i 0 + 1.0000i 0 + 1.0000i 0 + 1.0000i 0 + 1.0000i >> z=a+b z= 8.0000 + 1.0000i 1.0000 + 1.0000i 6.0000 + 1.0000i 3.0000 + 1.0000i 5.0000 + 1.0000i 7.0000 + 1.0000i 4.0000 + 1.0000i 9.0000 + 1.0000i 2.0000 + 1.0000i >> whos Name Size Bytes Class Attributes a ans b x y z 3x3 1x1 3x3 1x1 1x1 3x3 72 double 8 double 144 double 8 double 8 double 144 double Introduzione Matlab complex complex Carla Guerrini >> whos Name Size Bytes a ans l p rep u v_testo x y z 5x5 1x1 5x5 5x5 1x1 5x5 1x29 1x1 1x1 5x5 200 8 200 200 1 200 58 2 8 400 Class 37 Attributes double double double double logical double char char double double complex >> Introduzione Matlab Carla Guerrini 38 19 Scalari, vettori e matrici • Una matrice ha dimensione nxm (n righe, m colonne). • Un vettore ha dimensione nx1 (vettore colonna) o 1xn (vettore riga). • Uno scalare ha dimensione 1x1. a=1 (scalare, ovvero matrice 1x1) a = [0 1 2 3 4], a = [0,1,2,3,4] ed anche a = [0:4] b = [0, .5, 1, 1.5, 2, 2.5] ed anche b = [ 0:.5:2.5] c = [.1, .1, .1, .1, .1] ed anche c = ones(1,5) * 0.1 Costruire vettori » a = [1 2 3 4] a = 1 2 3 4 » size(a) ans = 1 4 fornisce la dimensione di “a” usato per i vettori indica la loro lunghezza »length(a) ans = 4 » a' ans = 1 2 3 4 Definisce un vettore “a” (le parentesi quadre indicano un vettore o matrice) » [1;2;3;4] ans = 1 2 3 4 » size(a') ans = 4 1 » length(a') ans = 4 trasposta di “a” (ha dimensioni “invertite” rispetto ad “a”) 20 Costruire matrici » c =[1 2 3 4 ; 5 6 7 8] c = 1 2 3 4 5 6 7 8 Per fare riferimento ad un elemento della matrice “c”: » c(1,1) ans = 1 » c(2,3) ans = 7 Usare “:” per indicare tutte le righe o tutte le colonne, esempio: • • • c(1,:) indica la prima riga, tutte le colonne c(:,2) indica tutte le righe, e la seconda colonna c(:,2:4) indica tutte le righe, dalla seconda alla quarta colonna » c(1,:) ans = 1 2 3 4 » c(:,2) ans = 2 6 » c(:,2:4) ans = 2 3 4 6 7 8 Funzioni di matrici » c =[1 2 3 4 ; 5 6 7 8] c = 1 2 3 4 5 6 7 8 » sum(c) ans = 6 8 10 12 » sum(c') ans = 10 » sum(sum(c)) ans = 36 26 La funzione sum calcola la somma degli elementi di una matrice per colonne; il risultato è un vettore. Se la matrice è un vettore 1 x m (come sum(c)) , allora la somma è calcolata sugli elementi del vettore. » mean(c) ans = 3 4 5 6 » max(c) ans = 5 6 7 8 » min(c) ans = 1 2 3 4 mean fornisce la media per colonne; max e min il massimo e il minimo ancora per colonne. 21 Concatenazione di matrici (I) » A = [2,0; 0,1; 3,3] » A(1:2,1:2) A = ans = 2 0 3 0 1 3 2 0 » A =[A,[1;2;3]] A = 2 0 1 0 1 2 3 3 3 0 1 » A =[A;[1 2]] A= 2 0 0 1 3 3 1 2 Equivale a cat(1,A,[1 2]) Equivale a cat(2,A,[1;2;3]) Concatenazione di matrici (II) » a = [1 2 3 4]; b = [5 6 7 8]; c = 1 2 3 4 5 6 7 8 c = [a; b] Definiamo una matrice “c” come concatenazione dei vettori “a” e “b”. Nota: l’uso di “;” dentro [….] indica la fine della riga. » size(c) ans = 2 4 Definiamo la matrice “d” ponendo “a” e “b” a fianco: notare il risultato diverso da “c” » d = [a b] d = 1 2 3 4 5 6 7 8 22 Condizioni logiche su matrici » d = c(1,:) d = 1 2 3 4 Possiamo definire un vettore “e” che è una funzione logica di d » e = d>2 e = 0 0 1 1 Possiamo ora usare “e” per trovare gli elementi di d>2 » d(e) ans = 3 4 Matrici speciali » ones(2,3) » ones(2) ans = 1 1 ans = 1 1 1 1 1 1 » zeros(2,1) ans = 0 0 » zeros(1,4) ans = 0 0 0 1 1 0 » rand(3,3) ans = 0.2176 0.4909 0.8985 0.4054 0.1294 0.5943 0.5699 0.5909 0.3020 » eye(2) ans = 1 0 0 1 23 Operazioni aritmetiche su vettori e matrici » a = [1 2 3] a = 1 2 3 Operatori: + - * / » b = [4 5 6] b = 4 5 6 » a + b ans = 5 Somma/sottrazione (purchè le dimensioni siano compatibili) 7 9 Moltiplicazione tra matrici: moltiplicare una matrice n x m con una matrice m x p si ottiene una matrice n x p » a*b' ans = 32 (qui moltiplichiamo una matrice 1 x 3 per una 3 x 1 otteniamo 1 x 1 (scalare)) Operatori su elementi di vettori e matrici Gli operatori su elementi indicano operazioni aritmetiche tra elementi corrispondenti: .* ./ .\ .^ » f =[1 2 3]; g= [4 5 6]; % Definiamo i vettori 1x3 f e g. Nota: usando “;” alla fine della linea si elimina la stampa del risultato. » h=f.*g h = 4 10 » h=f.\g h = 4.0000 » h=f./g h = 0.2500 » h=f.^2 h = 1 4 18 2.5000 0.4000 9 2.0000 0.5000 Valido per vettori e matrici. 24 Variabili complesse Un complex double array è visto come la somma di due double array. Con le variabili 'i' o 'j' si indica l'unità complessa i = −1 • Numeri complessi (o >>z = 3 + 4 * i z = 3 + 4 * j ) •Array di variabili complesse >>B=[ 1 2 ; 3 4 ]+i*[ 5 6 ; 7 8 ] o equivalentemente >>B=[ 1+5*j Introduzione Matlab 2+6*j ; 3+7*j Carla Guerrini 4+8*j ] 50 25