DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D....
-
Upload
bettina-micheli -
Category
Documents
-
view
212 -
download
0
Transcript of DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D....
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi 2D e 3DDiagrammi 2D e 3DFunzioni di ordine superioreFunzioni di ordine superiore
Marco D. Santambrogio – [email protected]. aggiornata al 30 Dicembre 2013
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ObiettiviObiettivi
• Diagrammi 2D e 3D• Funzioni di ordine superiore
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi 2DDiagrammi 2D
• Diagramma = insieme di coppie rappresentanti le coordinate dei suoi punti
• Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate
• plot(x,y) disegna diagramma cartesiano dei punti che hanno valori delle ascisse in x, delle ordinate in y e li congiunge con una linea, per dare continuità
al grafico
• funzioni xlabel per visualizzare nome asse ascisse, ylabel per ordinate, title per il titolo
3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi 2D: 1mo Diagrammi 2D: 1mo esempioesempio
4
>> x = -10:0.1:10;>> y=x.^3;>> plot(x,y);>> xlabel('ascisse');>> ylabel('ordinate');>> title('cubica');
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diaggrami 2D: 2do Diaggrami 2D: 2do esempioesempio
5
>> x=[-8:0.1:8];>> y= sin (x) ./ x;>> plot(x, y);>> xlabel('ascisse');>> ylabel('ordinate');
-8 -6 -4 -2 0 2 4 6 8-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
ascisse
ordi
nate
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ParticolaritàParticolarità
• plot(x,y) x non contiene necessariamente un
intervallo lineare uniforme di valori
y non è necessariamente funzione di x
• Sia x sia y possono essere funzioni di qualche altro parametro
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ParticolaritàParticolarità: esempio 1 : esempio 1
7
>> t=[0:pi/100:2*pi];>> x=cos(t);>> y=sin(t);>> plot(x,y);>> xlabel('ascisse-x');>> ylabel('ordinate-y');
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
ascisse-x
ordi
nate
-y
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ParticolaritàParticolarità: esempio 2 : esempio 2
8
>> t=[0:pi/100:10*pi];>> x=t .* cos(t);>> y=t .* sin(t);>> plot(x,y);>> xlabel('ascisse-x');>> ylabel('ordinate-y');
10*pi 5 giri
t10*pi dist.max da origine 31,4
-30 -20 -10 0 10 20 30 40-30
-20
-10
0
10
20
30
ascisse-x
ordi
nate
-y
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi lineare a 3 Diagrammi lineare a 3 dimensionidimensioni
9
>> t = 0:0.1:10*pi;>> plot3 (t.*sin(t), t.*cos(t), t);>> xlabel('ascisse');>> ylabel('ordinate');>> zlabel('quote');
-40-20
020
40
-40
-20
0
20
400
10
20
30
40
ascisseordinate
quot
e
• Generalizzazione di quello a due: insieme di terne etc… plot3(x,y,z) per digramma cartesiano
con x ascisse, y ordinate, z quote funzioni xlabel, ylabel, zlabel, title …
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi lineare a 3 dimensioni: Diagrammi lineare a 3 dimensioni: funzione di meshfunzione di mesh
• Funzione reale di due variabili reali z = f (x, y) rappresentata in uno spazio cartesiano
tridimensionale è una superficie• funzione mesh genera superficie, a partire da tre
argomenti: matrici xx, yy, zz che contengono ascissa (valore di x), ordinata (y) e quota (z) per ogni punto di una griglia corrispondente a un
rettangolo del piano xy l rettangolo è identificato dalla coppia di matrici xx e
yy
• Le due matrici, xx, e yy, si ottengono, mediante la funzione meshgrid(x,y), a partire da vettori, x e y, che contengono i valori delle ascisse e delle ordinate il rettangolo nel piano è determinato da x e y l’insieme delle coordinate dei suoi punti è il prodotto
cartesiano di x e y
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
meshgrid: come funzionameshgrid: come funziona
• A partire da vettori, x e y, che contengono i valori delle ascisse e delle ordinate
[xx,yy]=meshgrid(x,y)
• genera due matrici entrambe di legth(y) righe × length(x) colonne la prima, xx, contiene, ripetuti in ogni riga, i valori di x la seconda, yy, contiene, ripetuti in ogni colonna, i
valori di y ’ (y trasposta)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
meshgrid: un esempiomeshgrid: un esempio
• funzione z = x + y
• grafico in 6 punti di ascisse {1, 3, 5} e ordinate {2, 4}
12
>> x=[1, 3, 5];>> y=[2, 4];>> [xx,yy]=meshgrid(x,y);>> zz=xx+yy;>> mesh(xx,yy,zz);>> xlabel('ascisse-x');>> ylabel('ordinate-y');
>> xxxx = 1 3 5 1 3 5
>> yyyy = 2 2 2 4 4 4
>> zzzz = 3 5 7 5 7 9
Punti di coordinate (x,y)…
(1,2) (3,2) (5,2)
(1,4) (3,4) (5,4)
1
2
3
4
5
2
2.5
3
3.5
43
4
5
6
7
8
9
ascisse-xordinate-y…hanno coordinate (x,y,z)
(1,2,3) (3,2,5) (5,2,7)
(1,4,5) (3,4,7) (5,4,9)(NB: z=x+y)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
VantaggiVantaggi
• Il vettore con le z ottenuto con espressione uguale alla forma algebrica della funzione
• I vettori x e y da dare in pasto a meshgrid non si producono “a mano” si ottengono con costrutto [vmin : : vmax] o altri
simili…• tipicamente si adotta una spaziatura uniforme tra i
valori • attenzione a non usare valore troppo piccolo,
altrimenti memoria insuffciente…
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
meshgrid: un secondo meshgrid: un secondo esempioesempio
14
>> x=[1:1:3];>> y=x;>> [xx,yy]=meshgrid(x,y);>> zz=xx+yy;>> mesh(xx,yy,zz);>> xlabel('x');>> ylabel('y');>> zlabel('z');
11.5
22.5
3
1
1.5
2
2.5
32
3
4
5
6
xy
z
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
meshgrid: un paraboloidemeshgrid: un paraboloide
15
>> x=[-4:0.05:4];>> y=x;>> [xx,yy]=meshgrid(x,y);>> zz=xx .^ 2 + yy .^ 2;>> mesh(xx,yy,zz);>> xlabel('ascisse-x');>> ylabel('ordinate-y');>> zlabel('quote-z');
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
meshgrid: il meshgrid: il SombreroSombrero!!
16
>> tx=[-8:0.1:8];>> ty=tx;>> [xx, yy] = meshgrid (tx, ty);>> r = sqrt (xx .^ 2 + yy .^ 2);>> tz = sin (r) ./ r;>> mesh (tx, ty, tz);>> xlabel('ascisse');>> ylabel('ordinate');>> zlabel('quote');
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
PausaPausa
15’… non di più! :)
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili e funzioni di ordine Variabili e funzioni di ordine superioresuperiore
• Versioni recenti di Matlab definiscono in modo pieno il tipo “funzione”, permettendo di assegnare a variabili valori di tipo “funzione” definire funzioni che ricevono parametri di
tipo “funzione”
• Cosa si può fare con un valore di tipo funzione? assegnarlo a una variabile (quindi passarlo
come parametro) applicarlo a opportuni argomenti: si ottiene
una invocazione della funzione
18 / 44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
handle: esempihandle: esempi
• Valori di tipo funzione denotati da variabili dette handle (riferimento / maniglia)
• A una handle possono essere assegnati valori di tipo funzione in due modi1. indicando il nome di una funzione
esistente (definita dall’utente o predefinita)
2. mediante la definizione ex novo di una funzione anonima
19 / 44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
handle (1)handle (1)
• Indicando il nome di una funzione esistente (definita dall’utente o predefinita)
• È semplice: nome della funzione (posto dopo ‘@ ’) denota la funzione stessa
20
>> f=@factf = @fact>> f(4)ans = 24
>> seno=@sinseno = @sin>> seno(pi/2)ans = 1
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
handle (2)handle (2)
• Mediante la definizione ex novo di una funzione anonima
• Espressione di tipo funzione: simbolo @ lista dei parametri di ingresso, tra parentesi tonde espressione che dà il risultato come funzione degli
ingressi
21
>> sq=@(x)x^2sq = @(x)x^2>> sq(8)ans = 64
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni di ordine Funzioni di ordine superioresuperiore• Se il parametro attuale di una funzione F è
di tipo funzione allora il parametro formale f è una handle può essere usato per invocare la funzione
passata tramite il parametro • La funzione F è una funzione di ordine
superiore
• È possibile realizzare funzioni di ordine superiore per realizzare funzioni parametriche rispetto a un’operazione rappresentata a sua volta da una funzione
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Esempio di funzione di ordine Esempio di funzione di ordine superioresuperiore
• funzione di ordine superiore maxDiFunzione Riceve come parametri
• f funzione di una variabile reale• gli estremi a e b di un intervallo• valore d (da usare come passo di
incremento)
• Trova il valore massimo M e la sua ascissa (approssimati) della funzione f in [a..b]
• applicandola in tutti i punti tra a e b, con un intervallo di scansione d
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
maxDiFunzionemaxDiFunzione
24
function [M,xM]=maxDiFunzione(f, a, b, d) xM=a; M=f(xM); for x = a+d:d:b if f(x)>M xM=x; M=f(x); end; end;end
>> f=@(x)x^3-3*x;>> maxDiFunzione(f, -2, 2, 0.01)ans = 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Fonti per lo studio + CreditsCredits• Fonti per lo studio
Introduzione alla programmazione in MATLAB, A.Campi, E.Di Nitto, D.Loiacono, A.Morzenti, P.Spoletini, Ed.Esculapio
• Capitolo 4
• Credits Prof. A. Morzenti
25