a 1 lezione - laboratorio Corso di Laurea Ingegneria MECCANICA a.a 2004-2005 Desktop del MATLAB 4 zone che consentono un facile accesso: Launch Pad: ai tools, demos, e docum. dei prodotti MathWorks istallati sul computer. workspace: alle variabili memorizzate. Command History: ai comandi eseguiti nel Command Windows. Current Directory: ai file memorizzati nella directory di lavoro. Command Windows, finestra di lavoro, viene usato per inserire variabili ed eseguire file function e Mfile La 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 Come 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. Come utilizzare il Path • Per aggiungere una directory al path preesistente selezionare con il mouse la voce File …. Set path …… Add Folder … Matlab Windows Le tre finestre di lavoro del MATLAB: Command windows Graphic windows Edit windows Comandi utili: clc:ripulisce la finestra Command windows clf :ripulisce la finestra Graphic windows quit o exit: per uscire da MATLAB Command Windows • Utilizzo interattivo • Workspace whos » 3*5^13 ans = 3.6621e+009 •Help online » help magic MAGIC Magic square. MAGIC(N) is an N-by-N matrix constructed from the integers 1 through N^2 with equal row, column, and diagonal sums. Introduzione 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 Array numerici “ ; “ indica la fine di una riga o la soppressione di un output » x=4 x = Virgola/Spazio: gli 4 elementi sono sulla » c=[1,2;3,4]; stessa riga » x=[-1.6 sqrt(4) (7+5)*4/3] x = -1.6000 2.0000 16.0000 I dati sono memorizzati in Double-Precision Floating-Point Qualunque espressione Matlab può essere usata come elemento di una matrice Array numerici Gli elementi di una matrice si possono individuare mediante numeri all’interno di parentesi tonde L’operatore “:” crea vettori di elementi equispaziati Senza assegnazione esplicita: ogni entità è memorizzata in ‘ans’ Elementi non definiti sono posti a zero » 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:7 x = 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 La matrice Matrice Rettangolare: Vettore : m x 1 array 1 x n array Matrice: m x n array Scalare : 1 x 1 array Colonne (n) A= Righe (m) 1 2 3 4 5 17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9 Come individuare gli elementi di una matrice >> A=magic(5); A= A(3,1) A(3) 1 2 3 4 17 1 23 2 4 3 10 4 11 5 24 6 57 68 12 9 1810 111 7 12 1313 1914 2515 8 16 1417 2018 2119 2 20 5 1521 1622 2223 3 24 25 9 A(3,2) = A(8) A([4,5],[2,3]) A(4:5,2:3) Come estrarre elementi da una matrice >> A=magic(5); A= 1 2 3 4 5 17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9 Si vogliono estrarre gli elementi dell’ultima colonna. Come estrarre gli elementi dell’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 Esercizio 1 Data 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]; Formato dell’output • Comando format Comando MATLAB Cifre decimali Esempio Format short 15.2345 Format long Default (4 cifre) 14 decimali Format short e 4 decimali 1.5235e+001 Format long e 15 decimali 15.23453333333333e+001 Format rat Razionale 215/24 15.23453333333333 Array di Stringhe L’operatore (’) delimita l’array di stringhe L’operatore [ ] serve a concatenare gli array 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 prova che contiene 58 elementi Regole 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 Esercizio 2 1. 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. Soluzione Esercizio 2 » x=21:30; % oppure x=linspace(21,30,10); 1. 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] Variabili predefinite » pi •pi ans = •i, j 3.14159265358979 » eps •eps ans = 2.220446049250313e-016 •realmin » realmin •realmaxans = 2.225073858507201e-308 •ans » realmax ans = 1.797693134862316e+308 Variabili non numeriche predefinite •NaN (Not a Number) •Inf » 0/0 Warning: Divide by zero. ans = NaN » b=1/0 Warning: Divide by zero. b = Inf 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 Esercizio 3 1. 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. Soluzione Esercizio 3 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) Esercizio 4 Data 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). Soluzione 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) Operazioni su vettori + addizione scalare - sottrazione scalare + addizione tra vettori - sottrazione tra vettori * moltiplicazione .* moltiplicazione scalare tra vettori / divisione scalare . / divisione tra vettori ^ elevamento a . ^ elevamento a potenza potenza di vettori ’ trasposta ’ trasposta coniugata () specifica l’ordine di calcolo a cominciare dalla parentesi più interna Esempio di operazione su vettori » a=magic(3) a= 8 1 6 3 5 7 4 9 2 » b1=a*a b1 = 91 67 67 67 91 67 67 67 91 » b2=a.*a b2 = 64 1 36 9 25 49 16 81 4 Esercizio 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. Soluzione 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;