a
a
1 -2
lezione di laboratorio
Laurea in Ingegneria CIVILE
Lauree Specialistiche in Ingegneria
CHIMICA, ELETTRONICA,
AMBIENTE
a.a. 2007-2008
Desktop del MATLAB 7.0.4
1)workspace:
riporta le
variabili
memorizzate.
2)Command
History:
riporta i
comandi
eseguiti nel
Command
Window.
3)Start: accesso ai tools, demos e documentazione dei
prodotti MathWorks istallati sul computer.
4) Current Directory: permette l’accesso
ai file memorizzati nella directory di
lavoro.
5) Command
Window:
finestra di
lavoro; esso
viene usato
per inserire
variabili ed
eseguire file
function e
file script
La 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 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 Path
• Per aggiungere una directory al path
preesistente, selezionare con il mouse la voce
File …. Set path …… Add Folder …
Finestre Matlab
Le finestre di lavoro del MATLAB sono tre :
Command window
Edit window
Graphic window
Comandi utili:
clc:ripulisce la finestra Command window
clf :ripulisce la finestra Graphic window
quit o exit: per uscire da MATLAB
Command Window
• Utilizzo interattivo
» 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.
Edit window
Per visualizzare l’editor del Matlab si può:
selezionare con il mouse dall’ambiente di calcolo
la voce File e dal menu a tendina che compare, la voce
New oppure Open se il file esiste già
Edit window
Alternativamente, 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 window
Per 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:
Esempio 1
>> x=[1 2 3 4];
>> y=[3 5 7 9];
>> plot(x,y)
Graphic window
Esempio 2
>> f='2*cos(x)';
>> fplot(f,[0,3])
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
Regole 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 numerici
“ ; “ indica:
fine di una riga
in una matrice
oppure
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
Elementi non definiti
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’
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:
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)
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
A(3,2)
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(:,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 1
Data 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’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 vettori
L’operatore [ ] serve
a concatenare vettori
>> x1=1:3
x1 =
1
2
>> x2=4:6
x2 =
4
5
>> x3=[x1 x2]
x3 =
1
2
>> x4=[x1;x2]
x4 =
1
4
>>
2
5
3
6
3
3
6
4
5
6
Array di Stringhe
L’operatore (’)
delimita una
stringa
str1= ’Questa e’’ una stringa di prova’;
str2=’che contiene 58 elementi’;
str=strvcat(str1,str2) % strvcat costruisce un vettore
% colonna
str =
Questa e' una stringa di prova
che contiene 58 elementi
str=strcat(str1,str2) % strcat costruisce un
% vettore riga
str =
Questa e’ una stringa di prova che contiene 58 elementi
Esercizio 2
1. 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 2
» x=51:60;
% oppure x=linspace(51,60,10);
1.
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 predefinite
•pi
•i, j
•eps
•realmin
•realmax
•ans
» pi
ans =
3.14159265358979
» eps
ans =
2.220446049250313e-016
» realmin
ans =
2.225073858507201e-308
» realmax
ans =
1.797693134862316e+308
Variabili predefinite
ATTENZIONE!!
Nel caso si assegni il nome di una variabile predefinita ad
una quantità di valore diverso, si perde il valore
predefinito.
ESEMPIO
pi
ans =
3.14159265358979
>> pi=3;
>> pi
pi =
3
Il valore rimane tale finché non si conclude la sessione MATLAB.
Variabili non numeriche
predefinite
• 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/0
Warning: Divide by zero.
b =
Inf
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 particolari
•tril
•triu
Sintassi: comando(nome_var,k)
•diag
16 2 3 13 
 5 11 10 8 

A
 9 7 16 12 


 4 14 15 1 
k negativo
k positivo
Esempi
k=0 può essere omesso
k=1 codiagonale superiore
k=-1 codiagonale inferiore
……
k=0
Esercizio 3
1. 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 3
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 4
Data 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 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
Esempio1: elevamento a potenza di
matrici
» 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*a
b1 =
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
Esempio2: moltiplicazione tra matrici
A=[1:5; 2:6]
A =
1
2
2
3
>> B=[2:6; 3:7]
B =
2
3
3
4
3
4
4
5
5
6
4
5
5
6
6
7
% Prodotto righe
per colonne
>> A*B'
ans =
70
85
90
110
>> A*B
??? Error using ==> mtimes
Inner matrix dimensions must agree
>> A.*B
ans =
2
6
6
12
12
20
20
30
30
42
Esercizio 5
1. 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 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;
Scarica

Lezioni del 18/25 settembre 2007