25
Analisi dei Processi Chimici e Biotecnologici - Definizioni preliminari Matlab Lez 1 1 Analisi dei Processi Chimici e Biotecnologici- Matlab® Sommario - Caratteristiche Principali – Assegnazione di variabili - Scrittura e manipolazione di matrici e vettori - Funzioni predefinite in Matlab - Operazioni elementari con scalari e matrici - Risoluzione equazioni lineari - Funzioni vettorizzate ed operatori -Miscellanea - Gestione cartelle Parte 1 Tutorial – Definizioni preliminari Analisi dei Processi Chimici e Biotecnologici- Matlab® 2 Matlab è l’acronimo di Matrix Laboratory E’ un programma che lavora prevalentemente con matrici: qualunque oggetto introdotto è manipolato come se fosse una matrice E’ ideale per: Sistemi lineari Ha delle eccellenti capacità grafiche E’ relativamente facile da usare È un linguaggio interpretato e non compilato: le istruzioni sono tradotte in linguaggio macchina Lento rispetto ai "veri" linguaggi di programmazione (Fortran, C++ etc.) Ha una serie di programmi (istruzioni) aggiuntive in grado di eseguire operazioni più complesse (i Toolbox) E’ un software numerico, non simbolico

Parte 1 Tutorial –Definizioni preliminaripeople.unica.it/massimilianogrosso/files/2018/10/... · -Operazioni elementari con scalari e matrici-Risoluzione equazioni lineari-Funzioni

  • Upload
    buidan

  • View
    226

  • Download
    0

Embed Size (px)

Citation preview

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 1

Analisi dei Processi Chimici e Biotecnologici- Matlab®

Sommario

- Caratteristiche Principali

– Assegnazione di variabili

- Scrittura e manipolazione di matrici e vettori

- Funzioni predefinite in Matlab

- Operazioni elementari con scalari e matrici

- Risoluzione equazioni lineari

- Funzioni vettorizzate ed operatori

-Miscellanea

- Gestione cartelle

Parte 1 Tutorial – Definizioni preliminari

Analisi dei Processi Chimici e Biotecnologici- Matlab®

2

• Matlab è l’acronimo di Matrix Laboratory

• E’ un programma che lavora prevalentemente con matrici: qualunque oggetto introdotto è manipolato come se fosse una matrice

• E’ ideale per:

– Sistemi lineari

– Ha delle eccellenti capacità grafiche

– E’ relativamente facile da usare

– È un linguaggio interpretato e non compilato: le istruzioni sono tradotte in linguaggio macchina

• Lento rispetto ai "veri" linguaggi di programmazione (Fortran, C++ etc.)

– Ha una serie di programmi (istruzioni) aggiuntive in grado di eseguire operazioni più complesse (i Toolbox)

• E’ un software numerico, non simbolico

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 2

Analisi dei Processi Chimici e Biotecnologici- Matlab®

3

• Matlab® è un software versatile che può essere usato a differenti livelli:

– Scrittura in linea delle istruzioni dalla finestra di comando principale.

– Implementazione di programmi tramite scrittura di m-file che possono essere:

• di tipo batch

• di tipo function

Analisi dei Processi Chimici e Biotecnologici- Matlab®

4

Interfaccia di Matlab®• All’avvio, il programma si presenta nella seguente forma

Finestra dei

comandi

Le istruzioni devono essere

digitate in questa

finestra.

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 3

Analisi dei Processi Chimici e Biotecnologici- Matlab®

Primi passi: assegnazione variabili• Le variabili sono sempre trattate in forma di vettore

e/o matrice

• Come definire una variabile nella sessione di lavoro:

• In Matlab non è necessario definire il tipo delle variabili

• Per vedere quali sono le variabili presenti nella nostra sessione di lavoro è possibile usare i comandi who e whos

5

» a = 2

a =

2

»

Il comando “=“ è utilizzato per assegnare ad una variabile (nel nostro caso “a”) un valore (in

questo caso “2”)

promptdei

comandi

Analisi dei Processi Chimici e Biotecnologici- Matlab®

6

Come si aggiorna la finestra

Storia dei comandi

Variabili definite nell’attuale

ambiente di lavoro di Matlab®

(workspace)

Cartella corrente in cui Matlab® sta lavorando:

IMPORTANTE!

Matlab® interpreta la variabile “a” come

una matrice di dimensioni 1×1

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 4

Analisi dei Processi Chimici e Biotecnologici- Matlab®

7

• Una volta assegnato un valore ad una variabile esso rimane in memoria, sino a quando l’utente non interviene:

– Assegnando un altro valore alla stessa variabile

– Cancellando il valore della variabile con il comando clear

– Per cancellare tutte le variabili presenti nella sessione si può usare il comando clear all

» a = 4;» a

a =

4

Il “;” alla fine del comando evita la stampa su video del risultato

dell’operazione

» clear a»

Analisi dei Processi Chimici e Biotecnologici- Matlab®

Creazione matrici e/o vettori: Sintassi

• Per Matlab® lo scalare è un caso particolare di matrice di dimensioni (1x1)

• Analogamente il vettore è una matrice di una sola riga (o colonna)

• Esempio:

• Crea un vettore riga di 4 elementi (0,1,2,3)

• In modo equivalente è possibile creare un vettore colonna. Esempio:

8

» x=[0;1;2;3];»

» x=[0,1,2,3];»

Le matrici sono racchiuse dai caratteri

“ [ “ e “ ] ”

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 5

Analisi dei Processi Chimici e Biotecnologici- Matlab®

Creazione matrici e/o vettori: Sintassi

• Importante:

• Matlab è case-sensitive!!

9

Analisi dei Processi Chimici e Biotecnologici- Matlab®

Matrici e vettori: Sintassi

• Riassumendo:

– Le righe sono separate dal carattere punto e virgola “;”

– Gli elementi di una riga sono separati dalla virgola (o, equivalentemente, dallo spazio)

• Esempio:

• E’ chiaro che le matrici introdotte devono essere sintatticamente corrette.

10

>> A = [1,2,3;4,5,6] A = 1 2 3 4 5 6

>> A = [1,2,3;4,5] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns.

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 6

Analisi dei Processi Chimici e Biotecnologici- Matlab®

11

Creazione vettori: Casi particolari

• La seguente istruzione crea un vettore riga le cui componenti aumentano aritmeticamente:

• Le componenti possono anche cambiare con passi non unitari.

>> t=[1:5] t = 1 2 3 4 5 >>

>> x = [1:3:11]

x =

1 4 7 10

Analisi dei Processi Chimici e Biotecnologici- Matlab®

12

Manipolazioni di matrici

• Gli oggetti matriciali possono essere maneggiati in modo abbastanza semplice.

• È possibile estrarre elementi da una matrice e/o un vettore.

>> A = [4,6,3];>> A(2)

ans =

6

>> B=[1,2,3;4,5,6]; >> B(2,2) ans = 5

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 7

Analisi dei Processi Chimici e Biotecnologici- Matlab®

13

Manipolazioni di matrici

• È possibile anche estrarre più elementi da una matrice

• Con questa scrittura estraggo gli elementi della matrice che vanno:

– dalla prima alla seconda riga

– dalla seconda alla terza colonna

• Il nuovo oggetto è una matrice (2×2)

>> B = [1,2,3;4,5,6;7,8,9];

>> B(1:2,2:3)

ans =

2 3

5 6

Analisi dei Processi Chimici e Biotecnologici- Matlab®

14

Manipolazioni di matrici

• Per estrarre tutte le righe e/o le colonne di una matrice si usa il simbolo “:” da solo

• Esempi:

>> B(:,1)

ans =

1

4

7

Estrae le prima colonna (1) della matrice con tutte le

righe

>> B(2,:)

ans =

4 5 6

Estrae le seconda riga (2) della matrice con tutte le

colonne

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 8

Analisi dei Processi Chimici e Biotecnologici- Matlab®

15

Manipolazioni di matrici

• È possibile cambiare valore ai singoli elementi di una matrice:

>> B(2,2) = 10

B =

1 2 3

4 10 6

Analisi dei Processi Chimici e Biotecnologici- Matlab®

16

Manipolazioni di matrici

• È possibile anche creare unioni di matrici e vettori

• Da notare che l’uso del separatore “;” al posto di “,” porta alla scrittura di un altro oggetto

>> C =[4,5,6];>> [A,C]

ans =

4 6 3 4 5 6

>> [A;C]

ans =

4 6 34 5 6

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 9

Analisi dei Processi Chimici e Biotecnologici- Matlab®

17

Manipolazioni di matrici

• Riassumendo, il separatore “,” aggiunge delle colonne a sinistra delle preesistenti, il separatore “;” aggiunge delle righe al di sotto.

• Ovviamente, le espressioni devono essere sintatticamente corrette.

>> C=[2,3]; >> [A;C] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns.

Analisi dei Processi Chimici e Biotecnologici- Matlab®

18

• Matlab è in grado di riconoscere le espressioni basilari matematiche

>> pi (pi greco)

>> i (unità immaginaria, può anche essere usato j)

>> e=exp(1) (numero di Nepero)

• Un numero complesso può essere facilmente rappresentato:

>> 1+0.3*i ans = 1.0000 + 0.3000i

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 10

Analisi dei Processi Chimici e Biotecnologici- Matlab®

19

• Matlab è in grado di gestire una infinità di funzioni predefinite.

• Alcuni esempi:

– >> sqrt(2)

– >> log(2)

– >> sin(pi)

– >> cos(pi)

– etc. etc.

» sin(pi)

ans =

1.2246e-016

»

Come mai non è esattamente uguale a 0 ?

Analisi dei Processi Chimici e Biotecnologici- Matlab®

20

• Per ogni dubbio ed ignoranza, Matlab è dotato di un aiuto in linea molto utile per qualunque perplessità e consente di imparare il software in modo interattivo e veloce.

• help comando

– Visualizza la sintassi e lo scopo del comando richiamato

• lookfor oggetto

– Ricerca, in tutti i comandi predefiniti di Matlab, quelli in cui compare l’oggetto richiamato

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 11

Analisi dei Processi Chimici e Biotecnologici- Matlab®

21

• Esempio:

>> help pipi 3.1415926535897....

pi = 4*atan(1) = imag(log(-1)) = 3.1415926535897....

Reference page for pi

>>

Analisi dei Processi Chimici e Biotecnologici- Matlab®

22

• Analogamente per lookfor:

• lookfor consente la ricerca di tutti i comandi che contemplano la presenza dell’oggetto che cerchiamo

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 12

Analisi dei Processi Chimici e Biotecnologici- Matlab®

Altra possibilità per ottenere informazioni sui comandi e le funzionalità di Matlab®:

23

Analisi dei Processi Chimici e Biotecnologici- Matlab®

Alcuni siti con tutorials di Matlab®

• Sono riportati anche nella web-page del corso

• https://blog.udemy.com/matlab-tutorial/

• http://www.cyclismo.org/tutorial/matlab/

• Ma ve ne sono molti altri …

24

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 13

Analisi dei Processi Chimici e Biotecnologici- Matlab®

25

Operazioni elementari

• Matlab® consente di fare le operazioni elementari su scalari in modo semplice

>> 2+2 ans = 4 >> 3*5 ans = 15

>> 2-4 ans = -2 >> 4/3 ans = 1.3333

Analisi dei Processi Chimici e Biotecnologici- Matlab®

26

Operazioni elementari con Matrici• Le operazioni possono essere estese in modo immediato

ai vettori.

• Esercizio:

• Si creino tre matrici:

• Verificare quali delle seguenti operazioni sono corrette e quali no:

• A+B, A+C, A*C, C*A

• Il prodotto applicato alle matrici è il prodotto riga per colonna.

987

654

321

33A

333

222

111

33B

65

43

21

23C

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 14

Analisi dei Processi Chimici e Biotecnologici- Matlab®

27

Operazioni elementari con Matrici

• Oltre alle operazioni introdotte Matlab è provvisto anche di operazioni sui singoli elementi di matrici e o vettori.

• Questo tipo di operazioni si ottiene aggiungendo un “.”prima del segno di operazione desiderato.

• Esempio: per moltiplicare tra di essi i singoli elementi di due vettori delle stesse dimensioni:

>> A = [1,2,3];

>> B = [1,2,3];

• Siamo interessati al vettore C prodotto dell’i-esimo elemento di A con l’i-esimo elemento di B

Analisi dei Processi Chimici e Biotecnologici- Matlab®

28

Operazioni elementari con Matrici

• La sintassi corretta è:

• Analogamente:

» A.*B

ans =

1 4 9

» A./B

ans =

1 1 1

Da notare il punto prima del simbolo di

operazione

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 15

Analisi dei Processi Chimici e Biotecnologici- Matlab®

29

Trasposta di una matrice

• L’apice “ ‘ ” crea la trasposta di un oggetto

• Nel caso che la matrice sia immaginaria, l’operazione restituisce la trasposta coniugata

• Nel caso si fosse interessati alla trasposta semplice, l’operatore da usare è: “ .’ ”

>> A=[1,2;3,4] A = 1 2 3 4 >> A' ans = 1 3 2 4 >>

Analisi dei Processi Chimici e Biotecnologici- Matlab®

30

Esercizi

• Sia dato il seguente vettore:

x = [2 5 1 6]

1. Definire un vettore y1 in cui si aggiunge 2 ad ogni elemento di x

2. Definire un vettore y2 i cui elementi sono le radici quadrate degli elementi di x

3. Definire un vettore y3 i cui elementi sono le potenze cubiche degli elementi di x

4. Definire un vettore y4 i cui elementi in posizione dispari sono i valori di x aumentati di 3

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 16

Analisi dei Processi Chimici e Biotecnologici- Matlab®

31

Miscellanea – Creazione matrici particolari

• zeros(m,n) crea una matrice mxn di zeri

• ones(m,n) crea una matrice mxn di valori unitari

• eye(n) crea una matrice identità di dimensioni nxn

• diag(v) (dove v è un vettore di dimensioni n) crea una matrice diagonale di dimensione (nxn) i cui elementi sulla diagonale sono le componenti del vettore v

Analisi dei Processi Chimici e Biotecnologici- Matlab®

32

Esempio di applicazione: Risoluzione equazioni lineari

• È possibile risolvere sistemi di equazioni lineari in modo semplice con l’introduzione di un nuovo operatore divisione: “\”

• Esempio:

• Si consideri il sistema di equazioni lineari:

• Può essere scritto in forma matriciale:

1 2 3

1 2 3

1 2 3

2 0

3 4 1

2

x x x

x x x

x x x

bxA

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 17

Analisi dei Processi Chimici e Biotecnologici- Matlab®

33

Esempio di applicazione: Risoluzione equazioni lineari

• Dove:

• Per determinare i valori di x, si effettua l’operazione:

>> A=[sqrt(2),pi,1;1,sqrt(3),4;1,pi,pi];>> b=[0;-1;2];>>

Da notare che il vettore bè un vettore colonna

Nota: l’operazione x=A\b

è ben diversa dall’operazione x=inv(A)*b

I risultati sono gli stessi, ma la procedura è differente

>> x = A\b

x =

-4.75662.13680.0139

>>

Analisi dei Processi Chimici e Biotecnologici- Matlab®

34

Creazione vettori: Casi particolari

• Comando per creare vettori con termini equispaziati:

– linspace

• Per creare vettori che siano equispaziati in scala logaritmica:

– logspace

>> linspace(0,4,3) ans = 0 2 4 >>

>> logspace(0,4,3) ans = 1 100 10000

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 18

Analisi dei Processi Chimici e Biotecnologici- Matlab®

35

Funzioni vettorizzate e operatori

• La costruzione di questi vettori è abbastanza utile per la rappresentazione grafica di funzione

• Le funzioni in Matlab devono essere vettorizzate

• Ovvero, il diagramma della funzione f(x) è effettuatorappresentando graficamente i vettori (x,f(x)), in cui ilvettore f(x) è ottenuto applicando la funzione f alvettore x

• Esempio:

>> x=[0:0.1:2*pi];

>> y=sin(x);

>> plot(x,y)

Analisi dei Processi Chimici e Biotecnologici- Matlab®

36

Funzioni vettorizzate e operatori

• Per creare valori di funzioni non predefinite in Matlab, è possibile usare le operazioni aritmetiche tradizionali, ma con la accortezza che gli operatori siano preceduti dal punto “.”

• Esempio:

>> x = [-5:.1:5];

>> y = x./(1+x.^2);

>> plot(x,y)

21 x

xy

Da notare il punto prima degli operatori

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 19

Analisi dei Processi Chimici e Biotecnologici- Matlab®

37

Rappresentazioni grafiche

• Matlab® consente rappresentazioni grafiche in scale diverse da quella lineare:

• Usa scale logaritmiche (in base 10) sia sulla ascissa che sulle ordinate

• Usa scale logaritmiche (in base 10) rispettivamente lungo le ascisse e lungo le ordinate

>> loglog(x,y);

>> semilogx(x,y);

>> semilogy(x,y);

Analisi dei Processi Chimici e Biotecnologici- Matlab®

38

Esercizi

• Rappresentare graficamente le seguenti funzioni, in scala lineare e in scale logaritmiche:

– y = x2

– y = 1./exp(x+1)

• Nell’intervallo x [0 4].

• Scegliere una griglia di valori che garantisca una rappresentazione grafica adeguata.

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 20

Analisi dei Processi Chimici e Biotecnologici- Matlab®

39

Esercizio

• Ripetere l’esercizio di prima (solo in scala lineare) per la funzione:

• Nell’intervallo x [-4 4].

• Stabilire (qualitativamente) quando la funzione è significativamente diversa da 0.

21 1exp

22y x

Analisi dei Processi Chimici e Biotecnologici- Matlab®

40

Miscellanea – Funzioni utili

• max(x) restituisce il valore massimo di x, se x è un vettore. Nel caso in cui x sia una matrice, restituisce un vettore riga contenente il massimo elementi di ciascuna colonna,

• min(x) restituisce il valore minimo di x, se x è un vettore. Analogo a max nel caso di matrici.

• abs(x) restituisce un vettore, delle stesse dimensioni di x, i cui termini sono i moduli delle singole componenti di x

• size(A) restituisce le dimensioni di A

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 21

Analisi dei Processi Chimici e Biotecnologici- Matlab®

41

Miscellanea – Istruzioni utili

• save fname salva tutte le variabili nel file chiamato fname.mat (file binario)

• save fname y salva la variabile y (possono anche essere più di una) nel file chiamato fname.mat (file binario)

• save fname y –ascii salva la variabile y in formato testo (ascii) nel file chiamato fname. Molto utile nel caso si vogliano utilizzare i risultati di Matlab® con altri programmi, che non sono in grado di leggere il formato binario di Matlab®

• save fname y –ascii –tabs aggiunge un carattere tabulazione per separare gli elementi delle colonne di y.

Analisi dei Processi Chimici e Biotecnologici- Matlab®

42

Miscellanea – Istruzioni utili

• load fname carica tutte le variabili dal file chiamato fname.mat

• load fname –ascii carica la matrice definita in codice ascii nel file fname. Il nome della matrice nella sessione di Matlab® sarà fname.

• exit (o quit) esce dal programma

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 22

Analisi dei Processi Chimici e Biotecnologici- Matlab®

43

Miscellanea – Gestione cartelle

• Con la procedura descritta nei precedenti lucidi, le variabili verranno salvate nella cartella:

• C:\Users\NOME_UTENTE\Documents\MATLAB

• Però, è spesso necessario richiamare variabili e programmi (la creazione di programmi sarà esposta nella successiva sezione) salvate in altre cartelle.

Analisi dei Processi Chimici e Biotecnologici- Matlab®

44

Miscellanea – Gestione cartelle

• Cambiamento cartella di lavoro nella sessione di MatLab®

• Esempio: si vogliono caricare e/o salvare dati con Matlab® lavorando nella cartella C:\AnPro

• Questa fase può essere completata in due differenti modi

• Scrivere nella finestra principale di MatLab®

>> cd C:\AnPro

• Oppure …

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 23

Analisi dei Processi Chimici e Biotecnologici- Matlab®

45

Miscellanea – Gestione cartelle

Analisi dei Processi Chimici e Biotecnologici- Matlab®

46

Miscellanea – Gestione cartelle

• Cercare nella nuova finestra aperta la cartella C:\ApEse

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 24

Analisi dei Processi Chimici e Biotecnologici- Matlab®

47

Miscellanea – Gestione cartelle

• È possibile vedere dalla finestra principale di Matlab® i file che sono contenuti nella cartella con il comando:

>> dir

• O alternativamente:

>> ls

• È possibile anche visualizzare il percorso della cartella in cui si sta lavorando:

>>pwd

Analisi dei Processi Chimici e Biotecnologici- Matlab®

48

Miscellanea – Gestione cartelle

•Importante!!

•Non è possibile caricare file (o programmi) che non siano nel direttorio corrente in cui sta lavorando Matlab®

>> cd E:\AnPro

>> save tempor

>> cd E:\

>> load tempor

??? Error using ==> load

Unable to read file tempor: file does not exist.

>>

Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 25

Analisi dei Processi Chimici e Biotecnologici- Matlab®

Miscellanea – Gestione cartelle

• Suggerimento per il corso

• Lavorare sempre nella stessa cartella ovvero:

– È consigliabile che i file su cui si lavora (sia quelli scaricati dal sito, dati e programmi, sia quelli creati dagli utenti) siano tutti collocati in una sola cartella

– Non creare sottocartelle

49