23
MATLAB MATLAB

MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Embed Size (px)

Citation preview

Page 1: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

MATLABMATLAB

Page 2: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

……oggi…oggi…

Programmare in MatlabProgrammare in Matlab FunzioniFunzioni CicliCicli Operatori relazionaliOperatori relazionali

Indipendenza lineare, basi, sottospaziIndipendenza lineare, basi, sottospazi Esercizi variEsercizi vari

Page 3: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Le funzioni -1Le funzioni -1 ScriptScript

parametri in ingresso nn modificabiliparametri in ingresso nn modificabili le variabili usate sono messe nella memoria le variabili usate sono messe nella memoria

di lavoro di MATLABdi lavoro di MATLAB FunzioniFunzioni

script al quale si possono passare parametri script al quale si possono passare parametri in ingresso ed ottenerne in uscitain ingresso ed ottenerne in uscita

• sintassisintassi

• y1,…,yn -> parametri in uscitay1,…,yn -> parametri in uscita• x1,…,xn –> parametri in entratax1,…,xn –> parametri in entrata

le variabili usate all’interno sono le variabili usate all’interno sono localilocali

function [y1,…,yn] = nome_funzione(x1,…,xn)function [y1,…,yn] = nome_funzione(x1,…,xn)

Page 4: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Le funzioni -2Le funzioni -2 L’m file va salvato col nome nome_funzione.mL’m file va salvato col nome nome_funzione.m

il nome del file deve essere identico a quello della il nome del file deve essere identico a quello della funzionefunzione

La funzione puo’ essere richiamataLa funzione puo’ essere richiamata dalla finestra di comandodalla finestra di comando all’interno di uno scriptall’interno di uno script da altre funzionida altre funzioni

digitando [y1,…,yn]=nome_funzione(x1,…,xn)digitando [y1,…,yn]=nome_funzione(x1,…,xn) Per poter richiamare la funzione ci dobbiamo Per poter richiamare la funzione ci dobbiamo

mettere nella directory nella quale la salviamomettere nella directory nella quale la salviamo C:\UsersC:\Users

Page 5: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

richiamiamo la funzione nella finestra di comando

EsempioEsempiocreiamo un m-file traccia.m nel quale implementiamo la funzione che calcola la traccia di una matrice

parametro in input

variabile temporanea

Page 6: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Ciclo for…endCiclo for…end

Ciclo incondizionatoCiclo incondizionato

for i = n1:passo:n2

blocco di istruzioni

end

Page 7: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

EsercizioEsercizio

Scrivere una funzione che sommi gli Scrivere una funzione che sommi gli elementi di un vettore e moltiplichi il elementi di un vettore e moltiplichi il risultato per un intero n passato come risultato per un intero n passato come parametro di inputparametro di input

Scrivere una funzione che faccia la Scrivere una funzione che faccia la media degli elementi di una matrice Amedia degli elementi di una matrice A la funzione ha come input la matrix Ala funzione ha come input la matrix A la funzione ha come output la mediala funzione ha come output la media [r c] = size(A) restituisce il numero di righe [r c] = size(A) restituisce il numero di righe

e colonne della matricee colonne della matrice

Page 8: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Operatori Operatori

Operatori relazionali: < , <= , > , >= , == , = , = si usano per confrontare tra di loro gli

elementi di 2 matrici; il risultato dell’operazione sarà

• 0 se la relazione è falsa• 1 se la relazione è vera

Operatori logici: & , | , si usano per combinare tra loro gli

operatori relazionali

Page 9: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

EsempioEsempio

Page 10: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Ciclo while…endCiclo while…end

Ciclo condizionatoCiclo condizionato

while condizione

blocco di istruzioni

end

Page 11: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

If…else…endIf…else…end

if condizione1

blocco di istruzioni

elseif condizione2

blocco di istruzioni

else

blocco di istruzioni

end

Test condizionaleTest condizionale

opzionali

I comandi che seguono elseif sono eseguiti se condizione2 è vera

I comandi che seguono else sono eseguiti se le precedenti condizioni sono false

coinvolge un operatore relazionale.

Se condizione1 è vera si eseguono i comandi

Page 12: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

EsempioEsempio

per stampare

una stringa

Page 13: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Comandi “utili”Comandi “utili”

break -> per uscire in maniera forzata da break -> per uscire in maniera forzata da un cicloun ciclo MATLAB salta all’istruzione che termina il MATLAB salta all’istruzione che termina il

ciclociclo return -> interrompe l’esecuzione della return -> interrompe l’esecuzione della

funzionefunzione si ritorna al programma da cui la funzione è si ritorna al programma da cui la funzione è

stata chiamatastata chiamata disp -> per stampare a video una stringadisp -> per stampare a video una stringa

disp(‘stringa di caratteri’)

Page 14: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Input\outputInput\output

inputinput sprintfsprintf

n = input(‘inserisci un intero’);

s = sprintf(‘n = %d’,n);

disp(s)

Page 15: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

EserciziEsercizi Scrivere una funzione che ha Scrivere una funzione che ha

come input una matrice come input una matrice quadrataquadrata A e un vettore A e un vettore colonna bcolonna b

come output la soluzione x del sistema Ax=b come output la soluzione x del sistema Ax=b (dopo aver verificato che A è nn singolare)(dopo aver verificato che A è nn singolare)

• nel caso di A singolare ritornare una scritta di nel caso di A singolare ritornare una scritta di erroreerrore

Scrivere una funzione che dato in input un Scrivere una funzione che dato in input un intero positivo n restituisca il suo fattorialeintero positivo n restituisca il suo fattoriale fare i test su nfare i test su n

Page 16: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

sono linearmenti indipendenti

Vettori l.i.Vettori l.i.n

mvvv R,,, 21

mikvkvkvk imm ,,1002211

)(0

)'(

)'(

1

1

111

1111

mnmArangoAk

aav

aa

aa

A

aav

nmmm

nmn

m

n

banale soluzione ha

Page 17: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Esempio - 1Esempio - 1

l.i. sono se vedere per

vvv

con)v,v,span(v V Sia

321

321

)021()112()201(

3

R

v1 = [1 0 2]’;

v2 = [2 1 1]’;

v3 = [1 2 0]’;

A = [v1 v2 v3]

rank(A)

il rango è 3 => i vettori sono l.i. e quindi formano una base per R3

Page 18: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Esempio - 2Esempio - 2

)2020()0101()1122()1021(

4

4321

4321

vvvv

con),vv,v,span(v V Sia R

v1 = [1 2 0 1]’;

v2 = [2 2 1 1]’;

v3 = [1 0 1 0]’;

v4 = [0 2 0 2]’;

A = [v1 v2 v3 v4]

rank(A)

il rango è 3 => i vettori sono l.d.

Page 19: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Esempio - 3 Esempio - 3 Per trovare una c.l. nulla a coefficienti nn Per trovare una c.l. nulla a coefficienti nn

tutti nulli t.c. tutti nulli t.c.

troviamo una soluzione nn nulla del troviamo una soluzione nn nulla del sistema omogeneo Ak = 0sistema omogeneo Ak = 0

044332211 vkvkvkvk

rref(A)

)0,1,1,1(),,,(

0000

1000

0110

0101

4321

kkkk

A

Page 20: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

BasiBasi Dopo aver verificato che i vettori vDopo aver verificato che i vettori v11, v, v2, 2, vv3 3

sono una base di sono una base di RR33 esprimere v come c.l. esprimere v come c.l. dei vdei vii )111()101()110()011( vvvv 321

v1 = [1 1 0’]’;

v2 = [0 1 1]’;

v3 = [1 0 1]’;

v = [1 1 1]’;

A = [v1 v2 v3]

rank(A)

il rango è 3 => i vettori sono l.i.

i coefficienti lineari della combinazione si

trovano:k=A\v

)5.0,5.0,5.0(),,( 321 kkk

Page 21: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Esercizi - 1Esercizi - 1

i

321

321

321

321

w dei c.l. come

w esprimere di base una formano

www

vettori i che dimostrato aver Dopo

nulli nn ticoefficien a nulla c.l. una scrivere e l.d. sono

www

vettori i che Dimostrare

dimW la trovare

www

con)w,w,span(w W Dato

)333(

)411()422()521(

)121()110()011(

)1111()0213()4011(

3

4

R

R

Page 22: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

Esercizi - 2Esercizi - 2

)1312()1312(

)1201()1110()1021(

4

21

321

321

vv

W in stanno vettori

seguenti i tra quali dire e dimW la trovare

www

con)w,w,span(w W Sia R

Scrivere una funzione che implementi la Scrivere una funzione che implementi la

backward substitution di un sistema backward substitution di un sistema Ax=b Ax=b

con A triangolare superiorecon A triangolare superiore

Page 23: MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,

OsservazioniOsservazioni

Privilegiare operazioni vettoriali ai cicli Privilegiare operazioni vettoriali ai cicli for…end e while…endfor…end e while…end