32
1 1 a a lezione - lezione - laboratorio laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Embed Size (px)

Citation preview

Page 1: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

11aa lezione - laboratorio lezione - laboratorio

a.a 2004-2005

Corso di Laurea Ingegneria MECCANICA

Page 2: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Desktop del MATLABDesktop del MATLAB

Launch Pad: ai tools, demos, e docum.dei prodotti MathWorks istallati sul computer.

4 zone che consentono un facile accesso:

workspace: alle variabili memorizzate.

Command History: ai comandi eseguiti nel Command Windows.

Page 3: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Command Windows, finestra di

lavoro, viene usato per inserire

variabili ed eseguire file

function e M-file

Current Directory: ai file memorizzati nella directory di lavoro.

Page 4: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

La directory di lavoroLa directory di lavoro• La directory di default è c:\matlab6p1\

work

• Se si vuole usare un’altra directory:– si va nella directory desiderata utilizzando

“current directory”

– si inserisce la directory desiderata nel path

Page 5: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Come visualizzare il PathCome visualizzare il Path• Per visualizzare il path si può:

– digitare il comando ” path ” – si può selezionare con il mouse dall’ambiente

di calcolo la voce File e dal menu a tendina che compare la voce Set path.

Page 6: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Come utilizzare il PathCome utilizzare il Path• Per aggiungere una directory al path

preesistente selezionare con il mouse la voce File …. Set path …… Add Folder …

Page 7: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Matlab WindowsMatlab WindowsLe tre finestre di lavoro del MATLAB:

Comandi utili:clc:ripulisce la finestra Command windowsclf :ripulisce la finestra Graphic windowsquit o exit: per uscire da MATLAB

Command windows

Graphic windows

Edit windows

Page 8: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Command WindowsCommand Windows

• Utilizzo interattivo » 3*5^13ans = 3.6621e+009

» 3*5^13ans = 3.6621e+009

» help magic MAGIC Magic square. MAGIC(N) is an N-by-N matrix constructed from the integers 1 through N^2 with equalrow, column, and diagonal sums.

» help magic MAGIC Magic square. MAGIC(N) is an N-by-N matrix constructed from the integers 1 through N^2 with equalrow, column, and diagonal sums.

•Help online

• Workspace whoswhos

Page 9: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Introduzione al MATLABIntroduzione al MATLAB»MATrix LABoratory

• La MATRICE - la chiave per comprendere MATLAB– nessun dimensionamento– trattata nel suo insieme– operazioni più naturali possibili

• Gli elementi di una matrice possono essere sia dei numeri che dei caratteri

Page 10: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Array numericiArray numerici

I dati sono memorizzati in Double-Precision Floating-Point

» x=4x = 4» c=[1,2;3,4];» x=[-1.6 sqrt(4) (7+5)*4/3]x = -1.6000 2.0000 16.0000

» x=4x = 4» c=[1,2;3,4];» x=[-1.6 sqrt(4) (7+5)*4/3]x = -1.6000 2.0000 16.0000

“ ; “ indica la fine di una riga o la soppressione di un output

Virgola/Spazio: gli elementi sono sulla stessa riga

Qualunque espressione Matlab può essere usata come elemento di una matrice

Page 11: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Array numericiArray numerici

» x=[-1.6 sqrt(4) (7+5)*4/3];» x(5)=abs(x(1))x = -1.6000 2.0000 16.0000 0 1.6000» x=0:7x = 0 1 2 3 4 5 6 7» y=0:0.5:3;» z=7:-1:0;» x=linspace(0,7,15);» rand(1,4)ans = 0.8913 0.7621 0.4565 0.0185

» x=[-1.6 sqrt(4) (7+5)*4/3];» x(5)=abs(x(1))x = -1.6000 2.0000 16.0000 0 1.6000» x=0:7x = 0 1 2 3 4 5 6 7» y=0:0.5:3;» z=7:-1:0;» x=linspace(0,7,15);» rand(1,4)ans = 0.8913 0.7621 0.4565 0.0185

Elementi non definiti sono posti a zero

Gli elementi di una matrice si possono individuare mediante numeri all’interno di parentesi tonde

Senza assegnazione esplicita: ogni entità è memorizzata in ‘ans’

L’operatore “:” crea vettori di elementi equispaziati

Page 12: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

La matriceLa matrice

A =

Righe (m)

Colonne (n)

Matrice Rettangolare:Vettore : m x 1 array 1 x n arrayMatrice: m x n array Scalare : 1 x 1 array

Matrice Rettangolare:Vettore : m x 1 array 1 x n arrayMatrice: m x n array Scalare : 1 x 1 array

17 24 1 8 1523 5 7 14 164 6 13 20 22

10 12 19 21 311 18 25 2 9

17 24 1 8 1523 5 7 14 164 6 13 20 22

10 12 19 21 311 18 25 2 9

1 2 3 4 5 1

2

3

4

5

Page 13: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Come individuare gli elementi Come individuare gli elementi di una matrice di una matrice

A =1 2 3 4 5

1

2

3

4

5

>> A=magic(5);

17 24 1 8 1523 5 7 14 164 6 13 20 22

10 12 19 21 311 18 25 2 9

17 24 1 8 1523 5 7 14 164 6 13 20 22

10 12 19 21 311 18 25 2 9

A(3,2) = A(8)

1

2

3

4

5

6

7

89

10

11

12

13

14

15

16

17

18

19

20

21

22

23

2425

A(3,1)A(3) A([4,5],[2,3])

A(4:5,2:3)

Page 14: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Come estrarre elementi da una Come estrarre elementi da una matrice matrice

A = 17 24 1 8 1523 5 7 14 164 6 13 20 22

10 12 19 21 311 18 25 2 9

17 24 1 8 1523 5 7 14 164 6 13 20 22

10 12 19 21 311 18 25 2 9

1 2 3 4 5 1

2

3

4

5

Si vogliono estrarre gli elementi dell’ultima colonna.

>> A=magic(5);

Page 15: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Come estrarre gli elementi Come estrarre gli elementi dell’ultima colonnadell’ultima colonna

>> A=magic(5); >> A([1,2,3,4,5],5) >> A(1:5,5) >> A(:,5) >> A(21:25)'

ans = 15 16 22 3 9

L’operatore “:” crea vettori di elementi equispaziati

L’operatore “:” individua tutte le righe

Page 16: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Esercizio 1Esercizio 1Data la matrice A=ones(5)

a) estrarre la seconda riga e la terza colonna;

b) sostituire l’ultima riga di A con il vettore

r=[3 3 3 3 3].

» A=ones(5); a.» p=A(2,:);q=A(:,3); b.» r=[1 1 1 1 1]; » A(end,1:5)=r; %oppure A(end,:)=r; %oppure A(end,:)=[1 1 1 1 1];

Page 17: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Formato dell’outputFormato dell’output

Comando MATLAB Cifre decimali Esempio

Format short Default (4 cifre)

15.2345

Format long 14 decimali 15.23453333333333

Format short e 4 decimali 1.5235e+001

Format long e 15 decimali 15.23453333333333e+001

Format rat Razionale 215/24

Comando MATLAB Cifre decimali Esempio

Format short Default (4 cifre)

15.2345

Format long 14 decimali 15.23453333333333

Format short e 4 decimali 1.5235e+001

Format long e 15 decimali 15.23453333333333e+001

Format rat Razionale 215/24

• Comando format

Page 18: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Array di StringheArray di Stringhe

» str1= ’Questa e’’ una stringa di prova’;» str2=’ che contiene 58 elementi ’;

» str=[str1 str2]str =Questa e’ una stringa di prova che contiene 58 elementi

» str=[str1;str2]str =Questa e’ una stringa di provache contiene 58 elementi

» str1= ’Questa e’’ una stringa di prova’;» str2=’ che contiene 58 elementi ’;

» str=[str1 str2]str =Questa e’ una stringa di prova che contiene 58 elementi

» str=[str1;str2]str =Questa e’ una stringa di provache contiene 58 elementi

L’operatore (’) delimita l’array di stringhe

L’operatore [ ] serve a concatenare gli array di stringhe

Page 19: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Regole per i nomi delle variabiliRegole per i nomi delle variabili

• I nomi devono cominciare con una lettera

• possono contenere lettere, cifre e il carattere “_“

• Matlab distingue il Maiuscolo dal Minuscolo

Page 20: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Esercizio 2Esercizio 21. Costruire un vettore x costituito da 10

numeri progressivi (es. da 21 a 30).

2. Si calcoli la somma delle componenti del vettore x e, quindi, della prima ed ultima componente.

3. Si costruisca un vettore p, le cui prime 10 componenti siano le stesse di x, mentre l’undicesima e la dodicesima siano rispettivamente la somma e la differenza delle prime due componenti.

Page 21: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Soluzione Esercizio 2Soluzione Esercizio 21. » x=21:30;% oppure x=linspace(21,30,10);

2. » sum(x) % somma delle componenti » x(1)+x(10) % oppure x(1)+x(end) % oppure » n=length(x); » x(1)+x(n)3. » p=x; » p(11)=x(1)+x(2); » p(12)=x(1)-x(2);% oppure p=[x x(1)+x(2) x(1)-x(2)];% oppure » q=[x(1)+x(2) x(1)-x(2)]; » p=[x q]

1. » x=21:30;% oppure x=linspace(21,30,10);

2. » sum(x) % somma delle componenti » x(1)+x(10) % oppure x(1)+x(end) % oppure » n=length(x); » x(1)+x(n)3. » p=x; » p(11)=x(1)+x(2); » p(12)=x(1)-x(2);% oppure p=[x x(1)+x(2) x(1)-x(2)];% oppure » q=[x(1)+x(2) x(1)-x(2)]; » p=[x q]

Page 22: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Variabili predefiniteVariabili predefinite

•pi •i, j•eps•realmin •realmax•ans

» pians = 3.14159265358979» epsans = 2.220446049250313e-016» realminans = 2.225073858507201e-308» realmaxans = 1.797693134862316e+308

» pians = 3.14159265358979» epsans = 2.220446049250313e-016» realminans = 2.225073858507201e-308» realmaxans = 1.797693134862316e+308

Page 23: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Variabili non numeriche Variabili non numeriche predefinitepredefinite

•NaN (Not a Number)•Inf

» 0/0Warning: Divide by zero.ans = NaN» b=1/0Warning: Divide by zero.b = Inf

» 0/0Warning: Divide by zero.ans = NaN» b=1/0Warning: Divide by zero.b = Inf

Page 24: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Funzioni di utilitàFunzioni di utilità• zeros(m,n):matrice mxn con tutti elem. = 0• ones(m,n): matrice mxn con tutti elem. = 1• rand(m,n): matrice mxn con elem. random

uniformemente distribuiti • magic(n): matrice magica di dimensioni nxn• eye (n): matrice identità di dimensioni nxn• tril(A): matrice triang. infer. estratta da A• triu(A): matrice triang. super. estratta da A• diag(A): vettore contenente la diagonale di A

Page 25: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Esercizio 3Esercizio 31. a) Data la matrice A=[1 2 3; 4 5 6; 7 8 9]

estrarre la seconda riga e la terza colonna.

b) Sostituire l’ultima riga di A con il vettore

i=[1 3 7].

2. Estrarre la diagonale della matrice A data in 1. e creare una matrice diagonale avente sulla diagonale gli elementi della diagonale di A.

3. Costruire una matrice 5x5 che abbia tutti 2 sulla diagonale principale e rispettivamente 1 e -1 sulle codiagonali superiore e inferiore.

Page 26: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Soluzione Esercizio 3Soluzione Esercizio 31.» A=[1 2 3;4 5 6;7 8 9]; » p=A(2,:);q=A(:,3); » i=[1 3 7]; » A(3,1:3)=i; %oppure A(end,:)=i; %oppure A(3,:)=[1 3 7];

2.» b=diag(A); » c=diag(b); %oppure c=diag(diag(A));

3.» n=5; » I1=ones(n,1); » I2=ones(n-1,1); » A=diag(2*I1)+1*diag(I2,1)-1*diag(I2,-1)

1.» A=[1 2 3;4 5 6;7 8 9]; » p=A(2,:);q=A(:,3); » i=[1 3 7]; » A(3,1:3)=i; %oppure A(end,:)=i; %oppure A(3,:)=[1 3 7];

2.» b=diag(A); » c=diag(b); %oppure c=diag(diag(A));

3.» n=5; » I1=ones(n,1); » I2=ones(n-1,1); » A=diag(2*I1)+1*diag(I2,1)-1*diag(I2,-1)

Page 27: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Esercizio 4Esercizio 4Data la matrice

A=[10 2 3 1; 2 8 1 1; 3 1 7 0;… 1 1 0 3]

calcolarne il determinante; costruire la matrice L, triangolare inferiore,

estratta da A (tril); costruire la matrice U, triangolare superiore,

estratta da A (triu); costruire la matrice T, tridiagonale con gli stessi

elementi di A sulla diagonale e le codiagonali (diag).

Page 28: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Soluzione Esercizio 4Soluzione Esercizio 4

» det(A)» L=tril(A)» U=triu(A)» T1=diag(A,-1)» T2=diag(A)» T3=diag(A,1)» T=diag(T1,-1)+ diag(T2)+diag(T3,1)

» det(A)» L=tril(A)» U=triu(A)» T1=diag(A,-1)» T2=diag(A)» T3=diag(A,1)» T=diag(T1,-1)+ diag(T2)+diag(T3,1)

Page 29: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Operazioni su vettoriOperazioni su vettori

+ addizione scalare + addizione tra vettori - sottrazione scalare - sottrazione tra

vettori * moltiplicazione scalare

.* moltiplicazione tra vettori

/ divisione scalare . / divisione tra vettori

^ elevamento a potenza

. ^ elevamento a potenza di vettori

’ trasposta ’ trasposta coniugata () specifica l’ordine di calcolo a cominciare dalla parentesi più interna

Page 30: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Esempio di operazione su vettoriEsempio di operazione su vettori» a=magic(3)a = 8 1 6 3 5 7 4 9 2» b1=a*ab1 = 91 67 67 67 91 67 67 67 91 » b2=a.*a b2 = 64 1 36

9 25 49 16 81 4

Page 31: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Esercizio 5Esercizio 5

1. Calcolare il quadrato dei singoli elementi della matrice magica 5x5.

2. Calcolare il prodotto elemento per elemento tra la matrice magica 5x5 e la matrice di elementi random 5x5.

3. Costruire due vettori: il primo x, contiene i numeri pari da 1 a 10, il secondo y, contiene i numeri dispari da 1 a 10.

Calcolare il prodotto dei due vettori x, y ed il prodotto delle singole componenti.

Page 32: 1 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Soluzione Esercizio 5Soluzione Esercizio 5

1. » A=magic(5) » A.^2

2. » B=magic(5).*rand(5)

3. » x=2:2:10; » y=1:2:10; » z=x*y’; %(z=x’*y è una matrice) » z=x.*y;

1. » A=magic(5) » A.^2

2. » B=magic(5).*rand(5)

3. » x=2:2:10; » y=1:2:10; » z=x*y’; %(z=x’*y è una matrice) » z=x.*y;