DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D....

25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Diagrammi 2D e 3D Funzioni di ordine Funzioni di ordine superiore superiore Marco D. Santambrogio – [email protected] Ver. aggiornata al 30 Dicembre 2013

Transcript of DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D....

Page 1: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 2: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

ObiettiviObiettivi

• Diagrammi 2D e 3D• Funzioni di ordine superiore

2

Page 3: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 4: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 5: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 6: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 7: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 8: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 9: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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 …

Page 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 11: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 12: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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)

Page 13: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 14: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 15: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 16: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 17: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

PausaPausa

15’… non di più! :)

17

Page 18: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 19: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 20: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 21: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 22: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 23: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 24: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 25: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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