Laboratorio di MatLab

Documenti analoghi
Esercitazioni di MatLab

Laboratorio di MatLab

Laboratorio di MatLab

INTRODUZIONE A MATLAB

Laboratorio di Matlab

INTRODUZIONE A MATLAB. Introduzione. Calcolatrice base. Calcolatrice base. Variabili predefinite o speciali. Variabili predefinite o speciali

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 1 - Introduzione a MATLAB

Esercitazione 00 Introduzione a Matlab

Introduzione a Matlab

Programmare. Condizioni logiche. Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Esercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A

Introduzione. Corso di Metodi Numerici. 06 Marzo 2019

1 LABORATORIO DI SEGNALI E SISTEMI: INTRODUZIONE A MATLAB. Tagliavini Alessia 30/04/2014

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Calcolo Numerico I - a.a Laboratorio 1 - Introduzione a MATLAB

1) Matlab e simulazione. 2) Esempi di utilizzo. Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata

Introduzione a MATLAB

Laboratorio 1 - Introduzione a MATLAB

Laboratorio di INFORMATICA. 15 ottobre 2009

8 Introduzione MATLAB

Strutture di controllo condizionali in Matlab

Introduzione a MATLAB

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato.

Fondamenti di Informatica A. A / 1 9

Introduzione al MATLAB c Parte 2

Algoritmi stabili e instabili

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Informatica Applicata al Suono Tutorial Matlab

8 Introduzione MATLAB

Introduzione a Matlab

Introduzione a MATLAB

Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici

Parte 2 Tutorial Cenni di programmazione

A.A. 2018/2019. Fondamenti di Programmazione in MATLAB FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Università degli Studi di Napoli Federico II CdL Ing. Elettrica Corso di Laboratorio di Circuiti Elettrici

19 FEBBRAIO 2009 PRIMA PARTE

A. Introduzione a Matlab

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOIGNEGNERIA. INFORMATICA B Ingegneria Elettrica. Script in Matlab

Introduzione. MATLAB è l acronimo di MATrix LABoratory

Introduzione a Matlab

Vettori e Matrici. Corso di Calcolo Numerico. 24 Aprile 2018

Introduzione a Matlab

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione a Matlab

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09

Fondamenti di Informatica

Dinamica e Controllo dei Processi Energetici. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

INTRODUZIONE A MATLAB/OCTAVE

Università degli Studi di Napoli Federico II CdL Ing. Elettrica Corso di Laboratorio di Circuiti Elettrici

Introduzione al MATLAB c Parte 1 Variabili ed array

Introduzione all ambiente MATLAB. Richiami II. Analisi Numerica - A.A. 2007/08

Matlab: Script e Funzioni

Primi script in MATLAB

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 1 - Introduzione a MATLAB

Introduzione ad Octave

Laboratorio di Matematica Computazionale A.A Lab. 1 - Introduzione a Matlab

Introduzione al MATLAB c Parte 1 Variabili ed array

MATLAB Elementi di grafica Costrutti di programmazione

Introduzione a MATLAB

MATLAB - Introduzione. Antonino Polimeno

Metodi numerici con elementi di Programmazione A.A

MATLAB c Utilizzo di Matlab. Operazioni fondamentali. Elementi di grafica.

Corso di Calcolo numerico

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

LABORATORIO /03/2005

Introduzione a Matlab. ing. Gianfranco Miele Corso di misure elettroniche per le telecomunicazioni

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

Laboratorio 1 Introduzione a Matlab R - Octave

Script in Matlab. INFORMATICA B + C (sezione L-Z) Ingegneria Elettrica, Chimica e dei Materiali

UTILIZZO DI MATLAB OPERAZIONI FONDAMENTALI

CORSO DI LABORATORIO DI INFORMATICA

Calcolo Numerico Introduzione a Matlab/Octave

Laboratorio di Matlab

Introduzione a MATLAB

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

Foglio di esercizi n.1

Introduzione a Matlab Costruzione di Macchine 2 Prof. Sergio Baragetti

Calcolo Numerico A.A Esercitazione n

Introduzione a Matlab. Renato Mainetti

Breve introduzione a MATLAB

Introduzione al MATLAB c Parte 3 Script e function

Complementi di Matematica e Calcolo Numerico A.A Laboratorio

Francesca Mazzia Dipartimento Interuniversitario di Matematica Università di Bari. MATLAB: lezione introduttiva

Uso avanzato di MATLAB

Calcolo Scientifico e Metodi Numerici A.A. 2018/2019

Università degli Studi di Napoli Federico II CdL Ing. Elettrica Corso di Laboratorio di Circuiti Elettrici

MATRICI (ARRAY) IN MATLAB/OCTAVE

RICONOSCIMENTO DI FORME A.A OBIETTIVI PARTE 1 INTRODUZIONE A MATLAB

Introduzione a Matlab Parte 1

Introduzione a MATLAB

Transcript:

Laboratorio di MatLab Algebra lineare e Geometria Alessandro Benfenati Ph.D. Student Departments of Mathematics - University of Ferrara alessandro.benfenati@unife.it 1/61

Sommario 1 Organizzazione delle lezioni 2 Introduzione a Matlab Navigazione Workspace, Command History Shell Editor 3 Le variabili Variabili numeriche Vettori Matrici 4 M-files Script Functions 5 Istruzioni di controllo e cicli Istruzioni di controllo Cicli 6 Miscellanea Varie ed evenutali 2/61

Organizzazione Organizzazione delle lezioni Date delle lezioni 07/04/2014 : 1 lezione 14/04/2014 : 2 lezione 28/04/2014 : 3 lezione Si prevede una grande affluenza 05/05/2014 : 4 lezione 12/05/2014 : esempio di esame 19/05/2014 : esame Aula: Informatica Grande Orario : 16.30-19.00 Homepage del corso: http://dmi.unife.it/it/didattica/dottorandi/alessandro-benfenati 3/61

Che cos é Matlab? Introduzione a Matlab Matlab (Matrix Laboratory) é un ambiente integrato per il calcolo scientifico, basato sul calcolo matriciale; consente di eseguire un istruzione o comando per volta, tali comandi permettono di definire variabili, valutare formule, disegnare grafici 2D e 3D a schermo... É inoltre un linguaggio di programmazione intrerpretato (non compilato), dalla sintassi facile ed intuitiva (anche se a prima vista puó non sembrare). La notazione in cui i dati vengono inseriti e le soluzioni vengono espresse é una notazione di tipo matematico. Matlab é un ambiente per studiare soluzioni numeriche di problemi di tipo fisico, economico, statistico, ingegneristico, in molto campi delle scienze applicate. Per aiutare gli utenti nella soluzione di questi problemi, sono stati creati vari Toolbox, ovverossia libreria con funzioni già implementate per affrontare le tematiche particolari (ad esempio, lo Statistic Toolbox è stato creato per effettuare analisi statistiche di dati.) Per maggiori informazioni, visitare http:\\www.mathworks.com. 4/61

Alternative a MatLab Introduzione a Matlab Nel caso si disponesse di grosse disponibilitá finanziarie, é possibile acquistare MatLab, con un costo che va dai 2000e(versione base) ai circa 84000e. Aternativa Octave é un software open source, disponibile per ambiente Windows, Linux e Mac; é una valida alternativa a Matlab, compatibile al 98.3% con i codici MatLab. É scaricabile dal sito http://www.gnu.org/software/octave/ In ambiente linux (Ubuntu), Octave é installabile con il comando sudo apt-get install octave3.2 Octave non é dotato di interfaccia grafica come MatLab (si utilizza in modalitá testuale, da shell di comando), ma é possibile installare il pacchetto QtOctave che dota Octave di un aspetto simile a quello di MatLab. Altra alternativa a MatLab è SciLab: http://www.scilab.org/ che non ha lo stesso livello di compatibilità con MatLab posseduto da Octave. 5/61

Ambiente MatLab Introduzione a Matlab Ogni finestra puó essere estratta (unlocked), integrata (locked), massimizzata, minimizzata, chiusa.. 6/61

Ambiente MatLab Introduzione a Matlab Workspace Variabili correnti, con info Navigazione navigazione fra le cartelle Editor di testo scrivere m.files, functions, etc. Mandare in esecuzione il programma Shell Command history Ogni finestra puó essere estratta (unlocked), integrata (locked), massimizzata, minimizzata, chiusa.. 7/61

Navigazione Introduzione a Matlab Navigazione Nel menú di navigazione é possibile controllare in quale directory si sta lavorando. Questo é importante in quanto se si vanno a caricare dati o funzioni (che verranno spiegate a breve) non presenti nel path corrente MatLab restituisce un messaggio di errore. In questa finestra é possibile selezionare la cartella di lavoro, aprire m-files, caricare dati salvati mediante il doppio clic del mouse. Alcuni comandi da utilizzare nella shell di comando per la navigazione sono i seguenti: cd name_dir entra nella cartella name_dir; cd.. sale di un livello; load name_file.mat carica dati salvati nel file name_file.mat; edit name_script.m apre nella finestra dell editor il file name_script.m. 8/61

Introduzione a Matlab Workspace & Command History Workspace, Command History Nel Workspace viene visualizzato l elenco delle variabili nel seguente modo: name_var dimension,type val_min val_max Viene visualizzato il nome della variabile, la dimensione, il tipo, il valore massimo e il valore minimo. Esempio A <5x6 double> 0.23 5.5 B <1x6 double> 0 1 Cliccando due volte su di una variabile nel workspace, si apre una finestra simile ad un foglio elettronico contenente i valori della variabile. In questo ambiente è possibile modificare la variabile presa in esame. Nella Command History son presenti tutti i comandi digitati. Cliccando due volte su di un comando presente nell elenco tale comando viene eseguito. 9/61

Shell Introduzione a Matlab Shell La Command Line o Shell é l ambiente con cui si interagisce effettivamente con MatLab. Sulla linea di comando si definiscono le variabili, si richiamano funzioni, si eseguono script... >> 3+2 ans= 5 >> >> sin(3/2*pi)+log(25)-tan(2) ans= 5 >> Si può utilizzare MatLab come una calcolatrice......anche di alto livello! Per eseguire un comando si digita tale comando sulla tastiera e poi si preme. Per eseguire più comandi sulla stessa linea si separano con una virgola: >> sin(3/2*pi), cos(-99) ans= 5 >> vengono visualizzati i risultati in ordine. ans é la variabile temporanea in cui MatLab memorizza il risultato dell ultima istruzione digitata. Viene sovrascritta ogni volta! 10/61

Shell: alcuni comandi utili Introduzione a Matlab Shell >> pwd Directory di lavoro. >> help sin Il comando help apre una breve descrizione della funzione scritta subito dopo il comando. Digitando ad esempio help sin nella shell di comando apparirà una breve descrizione della funzione sin, il suo utilizzo e alcuni esempi. >> doc >> doc cos >> cd CODES >> cd.. Il comando doc apre il browswer con il manuale di MatLab. Tale manuale è in formato ipertestuale, quindi di facile utilizzo. Digitando doc name_fun si apre la finestra del browser direttamente alla pagina che spiega l utilizzo della funzione name_fun. Il comando cd (Change Directory) serve a cambiare directory di lavoro da shell di comando: cd CODES fa in modo di entrare nella cartella CODES. Lo stesso comandoutilizzato con.. sale di un livello nelle cartelle. 11/61

Editor Introduzione a Matlab Editor I programmi MatLab possono raggiungere facilmente le centinaia di righe di codice, quindi é necessario poter disporre di file sorgente in cui memorizzare le istruzioni da eseguire. Nell Editor é possibile salvare un file di testo con estensione.m in cui scrivere tutte le istruzioni necessarie per risolvere un problema. L editor di MatLab é un comune editor di testo con solo alcune funzioni aggiuntive comode per poter lavorare con questo linguaggio di programmazione. Nell editor son presente utili strumenti di debug e di esecuzione del programma, utili quando sono presenti errori difficili da trovare. Una volta scritte questa serie di istruzioni, possiamo richiamare quest insieme di istruzioni semplicemente digitando il nome del file nella shell: in questo modo le istruzioni scritte verranno eseguite in sequenza, una alla volta. Per poter utilizzare un m-file, dobbiamo trovarci nella stessa directory dove esso è salvato! 12/61

Variabili Numeriche Le variabili Variabili numeriche Digitando in successione due comandi >>3+2 e >>7+3 il risultato viene memorizzato nella variabile ans, che memorizza solo il risultato dell ultima operazione. Se volessimo memorizzare questi risultati dobbiamo dichiarare una variabile: >>a= 3+2 a= 5 Il risultato viene memorizzato nella variabile a e viene anche visualizzato. >>a= 3+2; >>a= 3+2; >>a= 10+3; Il risultato viene memorizzato nella variabile a ma non viene visualizzato. In questo modo il valore assegnato ad a viene sovrascritto: in questa caso il valore memorizzato in a é 13. La procedura per memorizzare un valore in una variabile é la seguente: var_name = var_value Il punto e virgola é facoltativo. 13/61

Variabili Numeriche Le variabili Variabili numeriche MatLab é case sensitive: la variabile M é diversa dalla variabile m. Inoltre, il nome di una variabile non puó iniziare con una cifra. Alcuni esempi di nomi validi di variabili sono: A_min, Err3, fun_obj4. variabile NULL Utilizzando la seguente istruzione: >> x = []; si crea una variabile vuota (NULL) che può contenere dati di qualsiasi tipo. 14/61

Variabili Numeriche Le variabili Variabili numeriche Repetita iuvant! ans é la variabile temporanea in cui MatLab memorizza il risultato dell ultima istruzione digitata. Viene sovrascritta ogni volta! >> sin(23) -0.8462 >> 5+6 11 >> 0 0 >> log(abs(asin(cos(pi)))) 0.4516 >> 1+1 2 >> ans 2 Scrivendo varie operazioni una di seguito all altra, il risultato che rimane in memoria è l ultimo eseguito. 15/61

Vettori: creazione Le variabili Vettori MatLab é ottimizzato per il calcolo matriciale, tutti i dati vengono visti come matrici. I vettori sono particolari matrici. >> v = [12 pi 0]; >> v = [12, pi, 0]; >> w = [9; 42; pi/2]; >> w = [9 42 pi/2]; >> w = [9; 42; pi/2]; >> w(2) 42 Dichiarazioni di vettori riga: utilizzare o no la virgola é ininfluente. Dichiarazioni di vettori colonna: andare a capo con o utilizzare il punto e virgola é la medesima cosa. Per accedere agli elementi di un vettore, si digita il nome del vettore e fra parentesi tonde l indice dell elemento desiderato. 16/61

Vettori: creazione Le variabili Vettori Alcuni comandi particolari: >> b = 3:15; >> c = 0:0.1:2; >> d = linspace(5,7,101); >> e = [17;42]; >> e 17 42 Questo comando crea il vettore b i cui elementi sono equispaziati di 1. b Ô1,2,3,...,15Õ T. Questo comando crea il vettore c i cui elementi sono equispaziati di passo 0.1. c Ô0,0.1,0.2,...,1.8,1.9,2Õ T. Questo comando crea il vettore d di 101 elementi, il primo elemento é 5 e l ultimo é 7. d Ô5,5.02,5.04,...,6.96,6.98,7.00Õ T. Il passo viene calcolato automaticamente, è dato da d i d i 1. L apostrofo calcola il trasposto di un vettore. 17/61

Vettori: Operazioni con i vettori Le variabili Vettori Somma, differenza e prodotto di vettori ricalcano le definizioni classiche matematiche. >> a = [2; 3]; >> b = [4; 6]; >> c = a+b c = 6 9 La somma (differenza) é calcolata componente per componente. Prestare attenzione alle dimensioni dei vettori: non é possibile sommare vettori di dimensioni differenti. >> a = [2; 3]; >> b = [4; 6]; >> d = a *b d = 26 >> dot(a,b) 26 Il prodotto scalare a,b a T b i aibi é implementato in MatLab. In alternativa, si puó utilizzare la funzione nativa dot.anche in questo caso le dimensioni dei vettori devono essere le stesse. Le operazioni di divisione, moltiplicazione ed elevemento a potenza non sono definite per i vettori, ma é possibile utilizzare le operazioni punto:.*,./. 18/61

Vettori: operazioni con i vettori Le variabili Vettori >> v = [5,8]; >> w = [25,16]; >> w./v 5 2 Addizione e sottrazione non han bisogno del punto. >> w.\v 0.2000 0.5000 >> w.*v 125 128 >> v.^2 25 64 In questo modo viene eseguita l operazione componente per componente. Nel caso dell elevamente a potenza, ogni elemento del vettore viene elevato all esponente indicato: v.^2 = Ô5 2,8 2 Õ. Se si utilizza un vettore come esponente, quello che viene eseguito é v.^a = Ô5 2,8 3 Õ. >> a = [2 3]; >> v.^a 25 512 19/61

Vettori: funzioni sui vettori Le variabili Vettori >> v = linspace(10,15,50); >> sum(v) 625 La funzione sum calcola la somma degli elementi del suo argomento. >> prod(v) 4.9307e+54 La funzione prod calcola il prodotto degli elementi del suo argomento. >> numel(v) 50 La funzione numel calcola il numero degli elementi del suo argomento. >> length(v) 50 >> size(v) 1 50 La funzione length restituisce la lunghezza del vettore. La funzione size restituisce le dimensioni del suo argomento. Quando verranno utilizzate le matrici le differenze fra queste ultime tre funzioni saranno piú chiare. 20/61

Vettori: funzioni sui vettori Le variabili Vettori >> v = rand(10,1); >> max(v) 0.9706 >> min(v) 0.1419 La funzione rand(n,m) genera n m numeri distribuiti uniformemente nell intervallo Ö0,1 La funzione max (min) restituisce il massimo (minimo) del vettore in input. >> [mx, idx] = max(v) mx = 0.9706 idx = 2 >> [mn, idx] = min(v) mn = 0.1419 idx = 6 Chiamando le funzioni che cercano il massimo e il minimo di un vettore nel modo indicato, si trovano contemporaneamente e memorizzati in due variabili diverse il valore massimo (o minimo) del vettore e l indice della posizione >> mean(v) 0.6602 >> std(v) 0.3308 mean calcola la media del vettore; std la sua deviazione standard. 21/61

Le variabili Vettori Vettori: funzioni sui vettori & operatori di confronto >> w = 9:0.2:15; >> find(w<10) 1 2 3 4 5verificata. La funzione find(logic_expr) restituisce gli indici per cui logic_expr é Operatori di Confronto Gli operatori di confronto in MatLab sono == confronto < maggiore > minore >= maggiore o uguale <= minore o uguale ~= diverso (per digitare la tilde in ambiente windows: ALT+0126. In ambiente Linux: ALTGR+í). 22/61

Vettori: vettori e costanti Le variabili Vettori >> v = [4,5]; >> v + 2 6 7 >> v / 2 2.0000 2.5000 >> v * 2 8 10 Se si eseguono operazioni fra vettori e numeri, MatLab automaticamente tratta il numero in questione come un vettore in cui ogni componente é pari alla costante digitata. Somma Ad esempio, il comando >>v + 2 corrisponde a digitare >>v + [2,2]. Questo vale per qualsiasi operazione. 23/61

Le variabili Vettori Vettori, esempio: calcolo del centro di massa 8 7 C 6 5 4 3 2 1 A B Si richiede il calcolo del centro di massa dei punti A,B,C. La formula per n punti é la seguente: «1 nô M x 1 nô i, y i n n i i 0 1 1 0 1 2 3 4 5 6 7 8 9 10 >>A = [2.0; 3.0 ]; >>B = [7.0; 4.5 ]; >>C = [4.9; 6.7 ]; >> >> M = (A + B + C) / 3; 24/61

Le variabili Vettori Vettori, esempio: calcolo del centro di massa 8 7 C 6 5 4 3 2 1 A M B Si richiede il calcolo del centro di massa dei punti A,B,C. La formula per n punti é la seguente: «1 nô M x 1 nô i, y i n n i i 0 1 1 0 1 2 3 4 5 6 7 8 9 10 >>A = [2.0; 3.0 ]; >>B = [7.0; 4.5 ]; >>C = [4.9; 6.7 ]; >> >> M = (A + B + C) / 3; In questo caso abbiamo sfruttato il fatto che MatLab esegue la somma di vettori componente per componente e che la divisione per come é implementata viene eseguita componente per componente 25/61

Le variabili Vettori Vettori, esempio: calcolo del centro di massa 8 7 6 5 4 3 2 1 0 A M new 1 1 0 1 2 3 4 5 6 7 8 9 10 C B Nel caso caso in cui i punti abbiano massa diversa (quindi pesano in modo diverso) la formula diventa «1 nô 1 nô M new m ix i, m iy i con M tot i M tot nô i M tot m i e dove m i é la massa del puntoi esimo. i >> A = [2.0; 3.0 ]; >> B = [7.0; 4.5 ]; >> C = [4.9; 6.7 ]; >> mass = [10 3 1]; % la componente i-esima si % riferisce all i-esimo punto. % Per es, mass(1) consiste nella % massa del punto A. >> M = (mass(1)*a + mass(2)*b + mass(3)*c) / sum(mass); 26/61

Vettori: funzioni sui vettori Le variabili Vettori La norma euclidea di un vettore x Ôx 1,x 2,...,x nõ T é definita come: ô ÐxÐ 2 n Il comando MatLab per calcolare la norma di un vettore é >> x = 1:0.5:5; >> norm(x) 9.7980 >> sqrt(sum(x.^2)) 9.7980 Utilizzando tale comando, viene calcolata la norma euclidea. Esistono altri tipi di norma: ÐxÐ 1 i xi p ÐxÐ p 1 i xi p ÐxÐ max i x i >>norm(x,1) >>norm(x,p) i 1 x 2 i >>norm(x,inf) 27/61

Vettori: funzioni sui vettori Le variabili Vettori In MatLab sono definite tutte le funzioni elementari: sin, cos, log,... Per un elenco completo, digitare nella shell di comando help elfun. >> x = pi/3; >> sin(x) 0.8660 >> log(x) 0.0461 >> x = 0:pi/2:3/2*pi >> max(x) 4.7124 >> min(x) 0 Funzioni con argomenti vettoriali Una funzione che ha come input un vettore restituisce come output un vettore della stessa lunghezza, le cui componenti sono i valori della funzione calcolati sugli elementi del vettore di input. >> x = 0:pi/2:3/2*pi; >> y = sin(x) y = 0 1.0000 0.0000-1.0000 28/61

Le variabili Vettori Vettori, esempio: calcolo del lavoro di una forza Un forza F 4 i 5 j 2 k viene applicata al corpo puntiforme A situato nell origine degli assi. Tale forza produce uno spostamento s 3 i 10 j 4 k. L angolo θ fra i vettori F ed s é di 0.7669 radianti. Calcolare il lavoro della forza F. Ricordando che il lavoro W di un forza é dato dal prodotto scalare W F,s F T s ÐF Ð 2ÐsÐ 2cosÔθÕ possiamo utilizzare le seguenti istruzioni: >> F = [4;5;-2]; >> s = [3; 10; 4]; >> W1 = dot(f,s) W1 = 54 >> W2 = F *s W2 = 54 >> W3 = norm(f)*norm(s)*cos(0.7669) W3 = x z θ y s 54.0049 F 29/61

Matrici Le variabili Matrici Come giá detto, l oggetto principale su cui MatLab lavora é la matrice. Per creare una matrice A come la seguente si utilizza la sintassi studiata per i vettori: A 4 5 π 0 6 2 1 0 e >> A = [4 5 pi; 0 6 2; 1 0 exp(1)] A = 4.0000 5.0000 3.1416 0 6.0000 2.0000 1.0000 0 2.7183 >> A(2,3) % Accesso all elemento di riga 2 colonna 3 2 Carattere jolly : I due punti : permettono di accedere a piú elementi contemporaneamente della matrice: permettono di selezione un intera riga, un intera colonna o una sottomatrice. 30/61

Matrici A Le variabili Matrici 2 5 π 56 2 0 6 2 0 2π 1 0 e 3 5 9 0 3 5 2 Æ >> A(:,1) % seleziona solo la prima colonna 2 0 1 9 >> A(2,:) % seleziona solo la seconda riga 0.0000 6.0000 2.0000 0.0000 3.1415 >> A(3:4,3:5) % seleziona gli elementi dalla 3a % alla 4a riga e dalla 3a alla 5a colonna 2.7183 3.0000 5.0000 3.0000 5.0000 2.0000 31/61

Matrici A Le variabili Matrici 2 5 π 56 2 0 6 2 0 2π 1 0 e 3 5 9 0 3 5 2 Æ >> A(:,1) % seleziona solo la prima colonna 2 0 1 9 >> A(2,:) % seleziona solo la seconda riga 0.0000 6.0000 2.0000 0.0000 3.1415 >> A(3:4,3:5) % seleziona gli elementi dalla 3a % alla 4a riga e dalla 3a alla 5a colonna 2.7183 3.0000 5.0000 3.0000 5.0000 2.0000 32/61

Matrici A Le variabili Matrici 2 5 π 56 2 0 6 2 0 2π 1 0 e 3 5 9 0 3 5 2 Æ >> A(:,1) % seleziona solo la prima colonna 2 0 1 9 >> A(2,:) % seleziona solo la seconda riga 0.0000 6.0000 2.0000 0.0000 3.1415 >> A(3:4,3:5) % seleziona gli elementi dalla 3a % alla 4a riga e dalla 3a alla 5a colonna 2.7183 3.0000 5.0000 3.0000 5.0000 2.0000 33/61

Matrici: creazione Le variabili Matrici Si possono creare matrici riempiendole con vettori: >> v = [2;4]; >> w = [0;1]; >> t = [1;3]; >> A = [v,w,t] A = 2 0 1 4 1 3 >> B = [v;w;t] B = 2 4 0 1 1 3 Vengono creat tre vettori colonna di dimensioni 2x1; per creare la matrice A si affiancano i tre vettori, utilizzando il ;,in modo da avere una matrice 2x3. Invece, utilizzando semplicemente, si mettono uno sotto l altro e si crea un nuovo vettore di dimesione 6x1. >> v = [2;4]; >> w = [0;0;1]; Prestare attenzione alle dimensioni >> A = [v,w] dei vettori! Error using horzcat CAT arguments dimensions are not consistent. 34/61

Matrici: creazione Le variabili Matrici Si possono creare matrici riempiendole con altre matrici: >> A = [ 2 5 4; 6 9 0]; >> B = [ 9 9 9; 2 5 4]; >> C = [A;B] C = 2 5 4 6 9 0 9 9 9 2 5 4 Allocazione dinamica della memoria La matrice C é stata creata ponendo la matrice B sotto la matrice A: é comunque necessario prestare attenzione alle dimensioni. MatLab é in grado di creare spazio (memoria) dinamicamente al momento del bisogno. >> D = [1 5; 5 6] D = 1 5 5 6 >> D(1,4) = 9 D = 1 5 0 9 5 6 0 0 La matrice D era di dimensione 2 2, ma inizializzando l elemento di posto Ô1, 4Õ MatLab ha creato dinamicamente la memoria per gli elementi mancanti, inizializzandoli a 0. 35/61

Le variabili Matrici: creazione di matrici speciali Matrici >> eye(3) 1 0 0 0 1 0 0 0 1 Il comando eye(n) crea la matrice identitá di ordine n. >> zeros(3) 0 0 0 0 0 0 0 0 0 >> ones(2) 1 1 1 1 Il comando zeros(n) (ones(n)) crea una matrice di ordine n con ogni elemento inizializzato a 0 (1). >> ones(3,7) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 36/61

Matrici: esempio Le variabili Matrici Avendo a disposizione la matrice A di dimensioni 3 3, si vuole creare la matrice strutturata nel seguente modo: I3 03 I3 0 3 A 0 3 I 3 0 3 I 3 Si puó scrivere un unico comando Matlab per creare tale matrice: >>[eye(3), zeros(3), -eye(3) zeros(3) A zeros(3) -eye(3) zeros(3) eye(3)]; 37/61

Matrici: operazioni Le variabili Matrici >> A = [ 2 5 4; 6 9 0]; >> B = [ 9 9 9; 2 5 4]; >> A+B 11 14 13 8 14 4 >> C = A-B C = -7-4 -5 4 4-4 >> D = [2 6 ; 5 6; 0 0] D = 2 6 5 6 0 0 >> P = A*D P = 29 42 57 90 Lasommafra matrici édefinitanelsolito modo, componente per componente. Il prodotto é definito per matrici di dimensioni opportune: se A È R 2 3,D È R 3 2 allora P AD È R 2 2. P 11 A 1,D 1 Ô2,5,4Õ, Ô2,5,0Õ 2 2 5 5 4 0 29 38/61

Matrici: operazioni Le variabili Matrici >> A*B Il prodotto deve essere fatto fra Error using * matrici di dimensioni opportune. Inner matrix dimensions must agree. >> A\B 0 0 0 0.2222 0.5556 0.4444 1.9722 1.5556 1.6944 >> A/B -0.0000 1.0000 0.3810 0.4286 A\B A 1 B, mentre A/B AB 1. Queste due funzioni verranno riprese quando si tratteranno i sistemi lineari. >> A 2 6 5 9 4 0 >> P^2 3235 4998 6783 10494 A A t. L operazione A^p, con A matrice e p È N épossibile solo quandoaéquadrata. 39/61

Matrici: operazioni punto Le variabili Matrici Come per i vettori, le operazioni punto sono definite anche per le matrici. >> A = [ 2 5 4; 6 9 0]; >> B = [ 9 9 9; 2 5 4]; >> E = A.*B E = 18 45 36 12 45 0 E 21 A 21 B 21 >> F = A./B F = 0.2222 0.5556 0.4444 3.0000 1.8000 0 F 21 A 21ßB 21 >> G = A.^3 G = 8 125 64 216 729 0 G 11 A 3 11 40/61

Matrici: confronto fra matrici Le variabili Matrici É possibile confrontare gli elementi di due matrici. >> A = [ 2 5 4; 6 9 0]; >> B = [ 9 9 9; 2 5 4]; >> A==B 0 0 0 0 0 0 >> A>B 0 0 0 1 1 0 >> A~=B 1 1 1 1 1 1 >> A<=B 1 1 1 0 0 1 Il confronto viene fatto elemento per elemento. Il risultato é una matrice i cui elementi sono valori logici: 1 sta per TRUE e 0 per FALSE. 41/61

Le variabili Matrici Matrici: matrici simmetriche ed antisimmetriche Def. Una matrice A si dice simmetrica quando A A t ; si dice antisimmetrica quando A A t. Remark Data una matrice A qualsiasi, la matrice 1 ÔA 2 At Õ risulta essere simmetrica. La matrice 1 ÔA 2 At Õ risulta essere antisimmetrica. Ad esempio: A 4 3 2 1 3 0 9 8 2 9 2 5 1 8 5 1 Æ B A è simmetrica, mentre B è antisimmetrica. 0 3 2 1 3 0 9 8 2 9 0 5 1 8 5 0 Æ 42/61

Le variabili Matrici Matrici: matrici simmetriche ed antisimmetriche Per creare matrici simmetriche ed antisimmetriche in codice MatLab si puó scrivere: >> A = rand(3); % genera una matrice 3x3 con elementi % random fra 0 e 1. >> B = 0.5*(A+A ); >> B == B % verifica se la matrice e simmetrica 1 1 1 1 1 1 1 1 1 >> C = 0.5*(A-A ); >> C == -C % verifica se la matrice e antisimmetrica 1 1 1 1 1 1 1 1 1 43/61

Matrici: prodotto matrice-vettore Le variabili Matrici Il prodotto matrice-vettore é definito nel solito modo, é possibile eseguirlo quando le dimensioni sono opportune: se A È R n m e x È R m, allora il prodotto Ax é ben definito e Ax È R n. >> A A = 2 5 4 6 9 0 >> x = [2; 3; 0]; >> b = A*x b = 19 39 b 1 A 1,x 2 2 5 3 4 0 19 >> y = [5;6]; >> A*y Error using * Occhio alle dimensioni. Inner matrix dimensions must agree. 44/61

Le variabili Matrici Matrici: prodotto matrice-vettore. Esempio Siano dati la matrice A e il vettore P: Å 0.7071 0.7071 A 0.7071 0.7071 P 2 3 Å 5 4 3 2 Q P Il vettore Q mostrato nella figura a lato in rosso è dato dal prodotto di A per il vettore P. 1 0 1 2 3 4 5 5 4 3 2 1 0 1 2 3 4 5 45/61

Le variabili Matrici Matrici: prodotto matrice-vettore. Esempio Siano dati la matrice A e il vettore P: Å 0.7071 0.7071 A 0.7071 0.7071 P 2 3 Å 5 4 3 2 1 0 1 2 3 Q φ P Il vettore Q mostrato nella figura a lato in rosso è dato dal prodotto di A per il vettore P. L azione di A sul vettore P è stata di una rotazione attorno all origine di un angolo φ π. 4 Å cosôφõ sinôφõ A sinôφõ cosôφõ 4 5 5 4 3 2 1 0 1 2 3 4 5 46/61

Script M-files Script Supponiamo di voler disegnare il grafico di sinôxõ comandi sono i seguenti. >> x = 0:0.1:2*pi; >> y = sin(x)+x; >> plot(x,y) x nell intervallo Ö0, 2π. I Inizializzo il vettore x fra 0 e 2π con passo 0.1, calcolo y sfruttando la sintassi vettoriale di MatLab e infine con il comando plot creo la finestra grafica in cui mi viene visualizzato il grafico. Se invece di dover plottare il grafico nell intervallo Ö0, 2π ora si dovesse plottarlo nell intervallo Ö0, 10, allora di dovrebbe ripartire dall inizio e scrivere tutte le istruzioni M-file E invece no! Ci basta salvare la lista delle istruzioni in quello che viene chiamato M-file. Una volta scritta questa lista e salvato il file, possiamo richiamare questa serie di comandi semplicemente scrivendo il nome del M-file nella shell di comando. Questo tipo di M-file prende il nome di script. 47/61

M-files Script: directory, workspace e variabili Script Alcune accortezze: Per eseguire uno script, è necessario essere nella directory dove tale script è salvato uno script può accedere a tutte le variabile del workspace corrente, modificandole. Inoltre, tutte le varibili create nello script rimarranno in memoria. uno script può chiamare un altro script 48/61

M-files Script: directory, workspace e variabili Script Alcune accortezze: per rendere effettive le modifiche fatte ad uno script, è necessario salvarle. Quando le modifiche fatte non sono state salvate, viene eseguita l ultima versione dello script. Si nota che non si è effettuato il salvataggio delle modifiche perchè nella finestra dell editor accanto al nome del file appare un asterisco. per avviare uno script, si può digitare il nome del file nella shell oppure cliccare sul bottone a forma di play sulla barra di modifica dell editor: in questo modo, si salvano le modifiche e si eseguono le istruzioni contenute nello script. Le prime tre righe del primo script che viene chiamato dovrebbe contenere le seguenti istruzioni: clear all: pulisce il workspace close all: chiude tutte le finestre aperte clc: pulisce la shell di comando 49/61

Functions M-files Functions Le functions sono particolari M-files che prendono alcuni parametri in input e ne restituiscono altri in output, senza modificare quelli in entrata. Ad esempio, è possibile creare una funzione che presi in input a,b,c restituisca come output le radici dell equazione ax 2 bx c 0 quando esse esistono. function [x1, x2] = roots_2deg(a, b, c) Delta = b^2-4*a*c; % calcolo del discriminante if Delta < 0 % se minore di 0, allora esco e non faccio niente % Comando per scrivere a schermo fprintf( Soluzione non esistente nei reali.\n ); x1 = []; % restituisce niente x2 = []; return % esco dalla funzione else % se possibile calcolo le due soluzioni x1 = (-b+sqrt(delta))/(2*a); x2 = (-b-sqrt(delta))/(2*a); end 50/61

Functions M-files Functions In questo esempio, le variabili a,b,c non vengono modificate in alcun modo: quello che viene fatto è un passaggio per valore, non per indirizzo. Mentre viene eseguita una function, essa si crea un workspace suo in cui lavorare, è uno workspace temporaneo. >> gg = 2; >> r = 56; >> tr = 9; Nel mio workspace, le variabili hanno i nomi gg, r e tr, mentre dentro alla mia funzione hanno i nomi a, b e c. Inoltre, gli output nel mio workspace principale vengono chiamati a e b mentre nel >>[ a,b] = roots_2deg(gg,r,tr) a = workspace della funzione sono x1 e x2. -0.1616 Le variabili a,b,c,x1,x2 esistono solamente per il tempo di esecuzione della b = -27.8384 funzione. I valori di x1 e x2 vengono salvati nelle variabili a e b. 51/61

Istruzione if then else Istruzioni di controllo e cicli Istruzioni di controllo L istruzione if then else ha la seguente sintassi: if condition1 istructions_1 else istructions_2 end Se condition_1 è soddisfatta, allora la serie di istruzioni instruction_1 viene eseguita, altrimenti viene eseguita la lista di istruzioni instructions_2. if condition1 istructions_1 elseif condition2 istructions_2... elseif condition_n istructions_n otherwise istructions_o end Se condition_1 è soddisfatta, allora la serie di istruzioni instruction_1 viene eseguita, se condition_2 è soddisfatta, allora la serie di istruzioni instruction_2 viene eseguita e così via. Se nessuna delle precedenti è soddisfatta, allora vengono eseguite le istruzioni in instructions_o. else ed otherwise non sono sempre necessarie, è possibile anche ometterle. 52/61

Istruzione switch Istruzioni di controllo e cicli Istruzioni di controllo A volte è più comodo utilizzare l istruzione switch se sono presenti molti casi da controllare: switch var case number_1 instruction_1 case number_2 instructions_2 equivale a usare elseif. end otherwise instructions_o 53/61

Ciclo for Istruzioni di controllo e cicli Cicli Il cilco for esegue una serie di istruzioni, sempre le stesse. Ad esempio v = 1:10; for i = 1:10 v(i) = v(i)-i^2; end il ciclo scritto percorre tutto il vettore v e ad ogni elemento sostituisce l elemento stesso diminuitio di i 2. v = 0-2 -6-12 -20-30 -42-56 -72-90 Ovviamente, è comodo da utilizzare all interno di uno script, non da linea di comando. SINTASSI VETTORIALE Per eseguire calcoli fra matrici e vettori, evitare il più possibile i cicli for: MatLab è creato per eseguire velocemente operazioni fra matrici e vettori in maniera automatica, utilizzando i cicli for si rischia di dover aspettare i risultati molto più tempo del dovuto. 54/61

Ciclo while Istruzioni di controllo e cicli Cicli Il ciclo while esegue una serie di istruzioni finchè una condizione è soddisfatta. while cond_1 instructions end È necessario sempre assicurarsi che il ciclo while possa avere termine: a = 1; while a < 5 b = a+1; end Il ciclo soprascritto viene eseguito all infinito. 55/61

Shell Miscellanea Varie ed evenutali >> format short >> format short e >> format short g >> format long >> format long e >> format long g >> format rat >> pi >> Nan >> Inf >> realmin >> realmax Il comando format cambia il modo di visualizzare un numero: il formato short visualizza meno cifre, long molte di più. Il formato rat permette la visalizzazione dei numeri razionali come frazioni. Matlab possiede alcune costanti, come pi (π), i (i,l unità immaginaria); Nan significa not a number, è il risultato di operazioni come 0 o 0 ; Inf è un oggetto che rappresenta sul calcolatore. 56/61

Visualizzazione Miscellanea Varie ed evenutali >> disp(x) Serve a visualizzare sullo schermo il valore della variaibile fra parentesi. >> fprintf( Messaggio che viene stampato sulla shell.\n ); >> fprintf( Il valore di a: %f,a) Il comando fprintf è utilizzato quando è necessario visualzzare messaggi sulla shell. È anche possibile far apparire il valore delle variabile con il comando fprintf: è necessario specificare il tipo di dato da visualizzare utilizzando il % con una lettera che identifichi il tipo di dato; dopo il messaggio che deve apparire sullo schermo, dopo la virgola si mette il nome della variabile che deve apparire. 57/61

Cronometro e workspace Miscellanea Varie ed evenutali >> tic... >> toc >> whos >> exit >> quit Il comando tic inizializza il cronometro, toc invece lo ferma. Genera nella shell un elenco delle variabili, con le dimensioni, il tipo, lo spazio di memoria utilizzato e altre informazioni utili. Comandi per uscire da MatLab. 58/61

Matrice ed operazioni Miscellanea Varie ed evenutali >> A = fix(50*rand(3)) A = 5 17 37 24 29 12 47 11 25 >> max(a) 47 29 37 >> min(a) 5 11 12 >> sum(a) 76 57 74 >> sum(a,2) 59 65 83 >> size(a) 3 3 >> numel(a) 9 >> inv(a) Le operazioni di massimo e di minimo sulle matrici vengono fatte sulle colonne. Anche l operazione di somma segue lo stesso destino, se non si specifica altrimenti. Consultare sempre l help di MatLab per avere maggiori informazioni sull utilizzo delle funzioni. 59/61

Salvataggio e caricamento Miscellanea Varie ed evenutali >> save dati.mat >> load dati >> x = [1, 7, 9]; >> y = 500; >> save dati.mat x Il comando save salva l intero workspace nel file dati.mat. Per caricarlo in un secondo momento, si utilizza il comando load. Utilizzando il comando save come mostrato, si salva nel file dati.mat solo la variabile x. >> help elfun Visualizza l elenco delle funzioni elementari implementate. 60/61

Operatori logici Miscellanea Varie ed evenutali Gli operatori logici in MatLab sono: & o &&: AND o : OR ~ : NOT 61/61