Sei sulla pagina 1di 22

Introduzione all’uso di

MATLAB per il corso


LaCoSTe

Daniele LEREDE, Laura SAVOLDI

1
I n s t a l l a z i o n e d i M AT L A B
2

1. Scarica il programma di installazione da Mathworks Downloads


2. Accedi al tuo account Mathworks o creane uno nuovo
(utilizzando le tue credenziali PoliTO)
3. Segui la procedura di installazione standard utilizzando la
Activation Key fornita dal PoliTO

Installa MATLAB sul tuo PC prima di arrivare


alla tua prima lezione di laboratorio!
Pe r c h é u t i l i z z i a m o M AT L A B
3

Ambiente ideale per la


soluzione numerica di
problemi di scambio termico
implementati in forma
matriciale

MATrix LABoratory
S c r i ve r e u n c o d i c e i n M AT L A B
4

Command window Editor

Interfaccia meno potente: utile per


istruzioni di una sola riga, per ottenere Insieme di linee di codice che
un feedback rapido dal codice possono essere salvate in un file .m
NON SI PUÒ SALVARE! IDEALE PER I NOSTRI ESERCIZI
Visualizzazione scientifica
5

Tutte le operazioni sono effettuate da Matlab in numeri floating


point a doppia precisione.

E’ possibile cambiare il numero di cifre con cui vengono visualizzati


i risultati mediante il comando format:
• format long;
• format short;
• format long e;
• format short e;
• format long eng;
• format short eng.

Esempio
A s s e g n a z i o n e d i ve t t o r i
6

row = [1 2 3 4] Entrambe le opzioni Esempio


row = [1,2,3,4] restituiscono un vettore riga

col=[1;2;3;4]=row’ Restituisce un vettore colonna

vect_1=a:n:b Vettore riga con a e b valori finali, con


incremento n tra ciascun elemento

vect_2=linspace(a,b,n) Riga di n punti uniformemente


distribuiti tra a e b (inclusi)

vect_3=logspace(a,b,n) Riga di n punti logaritmicamente


distribuiti tra 10a e 10b (inclusi)
A l c u n e f u n z i o n i ‘ ’s p e c i a l i ’’
7

Funzione round round(vect) approssima gli elementi


di vect all’intero più vicino
Funzione ceil ceil(vect) approssima gli elementi
di vect all’intero immediatamente
superiore
Funzione floor floor(vect) approssima gli elementi
di vect all’intero immediatamente
inferiore

Esempio
A l c u n i n u m e r i ‘ ’s p e c i a l i ’’
8

Inf ‘’Infinito’’: risultato di divisione per zero o overflow

NaN ‘’Not a number’’: rappresentazione di numeri non


reali o complessi. Espressioni come 0/0 e Inf/Inf
risultano in NaN, così come ogni operazione che
contenga NaN
pi pi greco: non assegnare a una variabile il nome
‘’pi’’ per evitare sovrapposizioni

Notazione esponenziale in MATLAB (es. 12000):


12000 1.2*10^4 1.2e4
A l c u n i o p e r a to r i m a t e m a t i c i
9

sqrt(x) Restituisce √𝒙

log10(x) Restituisce 𝒍𝒐𝒈𝟏𝟎 (𝒙) Per tutto il resto c’è la


formula del cambiamento
log(x) Restituisce 𝒍𝒏(𝒙) di base!

exp(x) Restituisce 𝒆𝒙

Es. 𝒍𝒐𝒈𝒂 𝒃 log(b)/log(a) oppure log10(b)/log10(a)

Esercizio 1
Riepilogo caratteri speciali
10

Ecco alcuni caratteri speciali fondamentali in MATLAB:

% Indica un commento (appare in verde nell’editor)


= Operatore di assegnamento di una variabile
== Operatore di uguaglianza
; Impedisce l’eco di una riga di codice sul monitor
+ - * / \ ^ Operatori algebrici (funzionano in modo ‘’matriciale’’)
.* ./ .^ Operatori di moltiplicazione e divisione elemento per elemento
‘ Indica il trasposto per una matrice reale
~= < <= > >= Operatori di disuguaglianza (~ : Alt + 126 su tastierino numerico)
& | && ‖ Operatori logici
Assegnazione di matrici
11

matrix_1=[1 2 3; 4 5 6] Matrice 2X3

matrice_uno=ones(m,n) Matrice mXn con elementi = 1


matrice_zero=zeros(m,n) Matrice mXn con elementi = 0
matrice_identita=eye(n) Matrice identità nXn
matrice_diag=diag(vect,n) Matrice con gli elementi del
vettore ‘’vect’’ sulla n-esima
diagonale (diagonale
principale n = 0, prima
sopradiagonale n = 1, prima
Esempio sottodiagonale n = -1)
Operazioni su matrici (I)
12

Operazioni su matrici della stessa dimensione:


AA+BB Somma
AA–BB Differenza
AA.*BB Prodotto elemento per elemento
AA./BB Rapporto elemento per elemento
AA*BB Prodotto scalare
AA/BB AA * BB-1
AA\BB AA-1 * BB

Operazioni su matrici quadrate:


AA^n AA * AA * AA * …
Operazioni su matrici (II)
13

Altre operazioni:

AA.^n Elevamento a potenza elemento per elemento


AA’ Trasposizione
abs(AA) Valore assoluto degli elementi della matrice
sum(AA,p) Generazione di un:
• vettore riga i cui elementi sono la somma degli
elementi di A per colonne, se p = 1
• Vettore colonna cui elementi sono la somma
degli elementi di A per righe, se p = 2
Operazioni su matrici (III)
14

Altre operazioni:
max(AA,[],p) Generazione di un:
min(AA,[],p) • vettore riga contenente il
massimo/minimo elemento di ogni
colonna, se p = 1
• vettore colonna contenente il
massimo/minimo elemento di ogni riga, se
p=2

max(AA) Genera un vettore riga contenente il


min(AA) massimo/minimo elemento di ogni colonna di AA
E s t r a z i o n e va l o r i d a u n a m a t r i c e
15

Data una matrice ‘’AA’’:

AA(:,i) Estrae la i-esima colonna di AA


AA(j,:) Estrae la j-esima riga di AA
AA(:,j:k) Estrae la sottomatrice di AA che contiene le
colonne di AA dalla j-esima alla k-esima
AA(i:k,:) Estrae la sottomatrice di AA che contiene le
righe di AA dalla i-esima alla k-esima
AA(:) Estrae tutti gli elementi di AA sotto forma di
singola colonna
D i m e n s i o n e d i ve t t o r i e m a t r i c i
16

Per conoscere le dimensioni di un vettore ‘’vect’’:


length(vect) Restituisce il numero di elementi di ‘’vect’’

Per conoscere le dimensioni di una matrice ‘’matrix’’:


size(matrix) Restituisce due valori: rispettivamente il numero
di elementi lungo ogni riga e lungo ogni colonna

size(matrix,p) Restituisce:
• il numero di elementi lungo ogni riga,
se p = 1
• Il numero di elementi lungo ogni
colonna, se p = 2
L a f u n z i o n e ‘ ’ f i n d ’’
17

find(vect) Restituisce un vettore colonna che contiene gli


indici degli elementi non-nulli del vettore vect

find(vect <= x) Restituisce un vettore che contiene gli


indici degli elementi del vettore vect
minori o uguali di x

Esercizio 3 +
Esercizio 4
(Breakout room)
Cicli (I)
18

Ciclo ‘’if’’:
Si usa il costrutto ‘’if’’ se una o più istruzioni devono essere eseguite
solo sotto condizione.

Sintassi più semplice del ciclo ‘’if’’ (singola condizione):


if condizione NO segni di punteggiatura dopo
la condizione
blocco di istruzioni
end Eseguito solo al verificarsi della
condizione

Fondamentale alla fine di ogni ciclo


Cicli (II)
19

Sintassi più generale del ciclo ‘’if’’:


Esempio
if condizione 1
blocco di istruzioni 1
elseif condizione 2 Eseguito se non si verifica
blocco di istruzioni 2 condizione 1

else Eseguito se non si verifica
alcuna delle condizioni
blocco di istruzioni n precedenti
end
Cicli (III)
20

Ciclo ‘’for’’:
Esegue un gruppo di istruzioni per un numero prefissato di volte.

Sintassi del ciclo ‘’for’’: Ricorda di inizializzare


l’indice (assegnare un
for indice = inizio:fine
valore iniziale)
blocco di istruzioni
end Diverse opzioni:
• for i = 1:n
• for i = 1:length(vect)
Esempio + • for i < length(vect)
Esercizio 9
Cicli (IV)
21

Ciclo ‘’while’’:
Esegue un gruppo di istruzioni fintantoché l’espressione di controllo
rimane vera (es. errore > tolleranza). Utile se non conosciamo a priori il
numero di volte per cui vogliamo eseguire l’istruzione.

Sintassi del ciclo ‘’while’’:


Esercizio 8
Inizializz. variabile di controllo
while espressione di controllo Esercizio 6
blocco di istruzioni (in Breakout room)

aggiornamento variabile di controllo


end
Cicli (V)
22

Ciclo ‘’try/catch’’:
Utile per fornire più opzioni per l’esecuzione di un codice.

Sintassi del ciclo ‘’try/catch’’:


try Se si verifica un errore nel
blocco di istruzioni sotto try
blocco di istruzioni
catch
blocco di istruzioni
end Esercizio 12

Potrebbero piacerti anche