1 a -2 a lezione di laboratorio Laurea Specialistica in Ingegneria Matematica Laurea Specialistica...

Post on 01-May-2015

213 views 0 download

transcript

11aa-2-2aa lezione di laboratorio lezione di laboratorio

Laurea Specialistica in

Ingegneria Matematica

Laurea Specialistica in

Ingegneria Matematica

a.a. 2007-2008

Desktop del MATLAB 7.0.4Desktop del MATLAB 7.0.4

3)Start: accesso ai tools, demos e documentazione dei prodotti MathWorks istallati sul computer.

1)workspace: riporta le variabili memorizzate.

2)Command History: riporta i comandi eseguiti nel Command Window.

5) Command Window: finestra di lavoro; esso viene usato per inserire variabili ed eseguire file function e file script

4) Current Directory: permette l’accesso ai file memorizzati nella directory di lavoro.

La directory di lavoroLa directory di lavoro• La directory di default è C:\Programmi\

MATLAB704\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 PathCome visualizzare il Path• Per visualizzare il path si può:

– digitare il comando ” path ” – 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 PathCome utilizzare il Path• Per aggiungere una directory al path

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

Finestre Matlab Finestre Matlab Le finestre di lavoro del MATLAB sono tre :

Comandi utili:clc:ripulisce la finestra Command windowclf :ripulisce la finestra Graphic windowquit o exit: per uscire da MATLAB

Command window

Edit window

Graphic window

Command WindowCommand Window

• 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

Edit windowEdit windowPer visualizzare l’editor del Matlab si può:selezionare con il mouse dall’ambiente di calcolola voce File e dal menu a tendina che compare, la voceNew oppure Open se il file esiste già

Edit windowEdit windowAlternativamente, se il file è nuovo, si digita dal Command window il comando edit; se il file esiste già, e si vuole richiamare, si digita invece edit seguito dal nome del file.

Graphic windowGraphic windowPer visualizzare ed utilizzare la finestra grafica del Matlab si possono utilizzare diversi comandi dal Command window oppure inserire tali comandi tra le istruzioni in edit window:

>> x=[1 2 3 4];>> y=[3 5 7 9];>> plot(x,y)

>> x=[1 2 3 4];>> y=[3 5 7 9];>> plot(x,y)

Esempio 1

Graphic windowGraphic window

>> f='2*cos(x)';>> fplot(f,[0,3])

>> f='2*cos(x)';>> fplot(f,[0,3])

Esempio 2

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

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 underscore _

• Matlab distingue il Maiuscolo dal Minuscolo

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: fine di una riga in una matrice oppure soppressione di un output

Virgola/Spazio: gli elementi sono sulla stessa riga

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

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

La matriceLa matrice

A =

Righe (m)

Colonne (n)

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

Matrice: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

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(3,1)A([4,5],[2,3])A(4:5,2:3)

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);

Come estrarre gli elementi Come estrarre gli elementi dell’dell’ultimaultima colonna colonna

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

ans = 15 16 22 3 9

L’operatore “:” prende le righe 1-5 della matrice

L’operatore “:”, senza alcuna specifica, individua tutte le righe

Esercizio 1Esercizio 1Data la matrice A=eye(4)

a) estrarre la prima riga e la terza colonna;

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

r=[-1 2 -3 4].

» A=eye(4); % matrice identità 4x4 a)» p=A(1,:);q=A(:,3); b)» r=[-1 2 -3 4]; » A(end,1:4)=r; %oppure A(end,:)=r; %oppure A(end,:)=[-1 2 -3 4];

Formato dell’outputFormato dell’output • Comando format

 

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+01

format long e 15 decimali 1.523453333333333e+01

format rat Razionale 5911/388 

Concatenazione di vettoriConcatenazione di vettori

>> x1=1:3x1 = 1 2 3>> x2=4:6x2 = 4 5 6>> x3=[x1 x2]x3 = 1 2 3 4 5 6>> x4=[x1;x2]x4 =

1 2 3 4 5 6

>>

>> x1=1:3x1 = 1 2 3>> x2=4:6x2 = 4 5 6>> x3=[x1 x2]x3 = 1 2 3 4 5 6>> x4=[x1;x2]x4 =

1 2 3 4 5 6

>>

L’operatore [ ] servea concatenare vettori

Array di StringheArray di Stringhe

str1= ’Questa e’’ una stringa di prova’;str2=’che contiene 58 elementi’;str=strvcat(str1,str2) % strvcat costruisce un vettore % colonnastr =Questa e' una stringa di provache contiene 58 elementi

str=strcat(str1,str2) % strcat costruisce un % vettore riga str =Questa e’ una stringa di prova che contiene 58 elementi

str1= ’Questa e’’ una stringa di prova’;str2=’che contiene 58 elementi’;str=strvcat(str1,str2) % strvcat costruisce un vettore % colonnastr =Questa e' una stringa di provache contiene 58 elementi

str=strcat(str1,str2) % strcat costruisce un % vettore riga str =Questa e’ una stringa di prova che contiene 58 elementi

L’operatore (’) delimita una stringa

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

numeri progressivi (es. da 51 a 60).

2. Si calcoli dapprima la somma delle componenti del vettore x e poi la somma 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 2Soluzione Esercizio 21. » x=51:60;% oppure x=linspace(51,60,10);

2. » sum(x) %somma di tutte le 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=51:60;% oppure x=linspace(51,60,10);

2. » sum(x) %somma di tutte le 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 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

Variabili predefiniteVariabili predefinite

pians = 3.14159265358979>> pi=3;>> pipi = 3

ATTENZIONE!!Nel caso si assegni il nome di una variabile predefinita ad

una quantità di valore diverso, si perde il valore predefinito.

ESEMPIO

Il valore rimane tale finché non si conclude la sessione MATLAB.

Variabili non numeriche Variabili non numeriche predefinitepredefinite

• NaN (Not a Number): NaN è ottenuto come risultato di operazioni matematicamente indefinite come 0.0/0.0 e inf-inf

• Inf: Infinito è prodotto da operazioni tipo divisione per zero, come 1.0/0.0, oppure da overflow, esempio exp(1000) » 0/0

Warning: 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

Funzioni di utilitàFunzioni di utilità• zeros(m,n):matrice mxn con tutti elem. = 0• oppure zeros(m)se la matrice è mxm;• ones(m,n): matrice mxn con tutti elem. = 1• oppure ones(m) se la matrice è mxm;• Se si vuole un vettore colonna (riga)di m componenti nulle oppure tutte uguali a 1, basta scrivere zeros(m,1) (zeros(1,m)) o ones(m,1)(ones(1,m)) rispettivamente.

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

Matrici particolariMatrici particolari•tril

•triu

•diag

Sintassi: comando(nome_var,k)

16 2 3 13

5 11 10 8

9 7 16 12

4 14 15 1

A

k=0

k positivo

k negativo

Esempik=0 può essere omessok=1 codiagonale superiorek=-1 codiagonale inferiore……

Esercizio 3Esercizio 31. Data la matrice A=[1:3; 4:6; 7:9]

a) estrarre la seconda riga e la terza colonna;

b) scambiare l’ultima riga con la prima riga.

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 tridiagonale 5x5 che abbia tutti 4 sulla diagonale principale, 1 sulla codiagonale superiore e -1 su quella inferiore.

Soluzione Esercizio 3Soluzione Esercizio 31.» A=[1:3;4:6;7:9]; » p=A(2,:);q=A(:,3); » x=A(1,:); % x: variabile di appoggio » A(1,:)=A(end,:); » A(end,:)=x; %oppure A([1,3],:)=A([3,1],:);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(4*I1)+1*diag(I2,1)-1*diag(I2,-1)% in questo caso anche A=diag(4*I1)+diag(I2,1)-diag(I2,-1)

1.» A=[1:3;4:6;7:9]; » p=A(2,:);q=A(:,3); » x=A(1,:); % x: variabile di appoggio » A(1,:)=A(end,:); » A(end,:)=x; %oppure A([1,3],:)=A([3,1],:);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(4*I1)+1*diag(I2,1)-1*diag(I2,-1)% in questo caso anche A=diag(4*I1)+diag(I2,1)-diag(I2,-1)

Esercizio 4Esercizio 4Data la matrice

A=[-5 1 2 0; 3 9 4 -7; 1 9 9 8;… -1 0 0 6]

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

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

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

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

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)

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

Esempio1: elevamento a potenza di Esempio1: elevamento a potenza di matricimatrici

» format rat » a=hilb(3)a = 1 1/2 1/3 1/2 1/3 1/4 1/3 1/4 1/5» b1=a^2 % b1=a*ab1 = 49/36 3/4 21/40 3/4 61/144 3/10 21/40 3/10 769/3600 » b2=a.^2 % b2=a.*a b2 = 1 1/4 1/9

1/4 1/9 1/16 1/9 1/16 1/25

A=[1:5; 2:6]A = 1 2 3 4 5 2 3 4 5 6>> B=[2:6; 3:7]B = 2 3 4 5 6 3 4 5 6 7

Esempio2: moltiplicazione tra matriciEsempio2: moltiplicazione tra matrici

>> A.*Bans = 2 6 12 20 30 6 12 20 30 42

% Prodotto righe per colonne>> A*B'ans = 70 85 90 110

>> A*B ??? Error using ==> mtimesInner matrix dimensions must agree

Esercizio 5Esercizio 51. Determinare la matrice con elementi pari al

quadrato dei singoli elementi della matrice di Hilbert 6x6.

2. Calcolare il prodotto elemento per elemento tra la matrice di Hilbert 6x6 e la matrice magica 6x6.

Confrontare la matrice così ottenuta con la matrice hilb(6)*magic(6).

1. Costruire due vettori: il primo x, contenente i numeri pari da 1 a 40, il secondo y, contenente i numeri dispari da 1 a 40.

Calcolare il prodotto scalare dei due vettori x, y ed il vettore prodotto componente per componente.

Soluzione Esercizio 5Soluzione Esercizio 5

1. A=hilb(6) A.^2

2. B=hilb(6).*magic(6); C= hilb(6)*magic(6); 3. x=2:2:40; y=1:2:40; z=x*y’; %(z=x’*y è una matrice!!) z=x.*y;

1. A=hilb(6) A.^2

2. B=hilb(6).*magic(6); C= hilb(6)*magic(6); 3. x=2:2:40; y=1:2:40; z=x*y’; %(z=x’*y è una matrice!!) z=x.*y;