40
PON 2007 – 2013 Liceo Scientifico Leonardo da Vinci Vallo della Lucania Nuovi percorsi matematici: Osservare, descrivere, costruire. Matlab - 5: Grafici di funzione xyz Arturo Stabile Vallo della Lucania 17 novembre 2008

Matlab 6 - Arturo Stabile · Title: Microsoft PowerPoint - Matlab_6 Author: chi t'e' muort Created Date: 11/17/2008 12:06:26 PM

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

PON 2007 – 2013Liceo Scientifico Leonardo da Vinci

Vallo della LucaniaNuovi percorsi matematici:

Osservare, descrivere, costruire.

Matlab - 5: Grafici di funzione xyz

Arturo StabileVallo della Lucania17 novembre 2008

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 2

Grafici tridimensionali

Esistono in Matlab tre tipi di diagrammi a tre dimensioni

Diagrammi a linea plot3Diagrammi a superficie mesh/surfDiagrammi a contorno contour

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 3

Diagrammi a linea

Per disegnare un diagramma a linea si usa il comando plot3

plot3(x,y,z)

È la generalizzazione del comando plot

È possibile controllare anche l’asse zeta tramite zlabel

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 4

Esempio

>> z=0:pi/100:10*pi;

>> x=exp(-.05*z).*sin(z);

>> y=exp(-.05*z).*cos(z);

>> plot3(x,y,z)

>> grid

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 5

Esercizio – elica circolare

Le equazioni parametriche di un’elica circolare sono

x=a cos(t); y = a sin(t); z = btdove a è il raggio dell’elica e b è una costante che determina la densità dei passi dell’elica

Creare un diagramma tridimensionale con a=1 e 0≤t≤10π, per i seguenti tre casi confrontandone la loro forma

b=0,1 b=0,2 b=-0,1;

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 6

Esercizio

Creare un diagramma tridimensionale per la funzione parametrica per 0≤t≤5 con passo 0,1

x=(0,5+5t)sin(2πt/3)cos(4πt)y=(0,5+5t)sin(2πt/3)sin(4πt)z=(0,5+5t)cos(2πt/3)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 7

Diagrammi a superficie

In un diagramma a linea un punto è collegato al punto che lo precede e a quello che lo segueIn un diagramma a superficie un punto viene collegato ai quattro punti ad esso adiacenti

In Matlab bisogna generare prima una griglia di punti del piano XY e poi calcolare la funzione f(x,y)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 8

Grafico di funzioni xyz

Per poter disegnare un grafico a superficie di una funzione di due variabili z=f(x,y) si usa il comando meshmesh prende come input

Tre matrici con le dimensioni coincidentiDue vettori x ed y ed una matrice z con dimensioni tali che:

|x|= n e |y| = m dove [m,n] = size(z)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 9

mesh: primo caso

Se l’input di mesh è costituito da tre matrici x, y e z con dimensioni coincidenti, allora verranno disegnati ed uniti i punti

[x(i,j) y(i,j) z(i,j)]1≤i≤m e 1≤j≤n, dove [m,n] = size(z)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 10

mesh: secondo caso

Se l’input di mesh è costituito due vettori x ed y ed una matrice z con dimensioni tali che |x|= n e |y| = m dove [m,n] = size(z) , allora verranno disegnati ed uniti i punti

[x(i) y(j) z(i,j)]1≤i≤n e 1≤j≤m

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 11

Il comando meshgrid

Serve per creare una griglia di punti del piano XYA partire da uno o due vettori, genera le matrici da dare in input al comando meshSintassi

[X,Y] = meshgrid(x,y)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 12

Esempio

>> x=fix(rand(1,3)*7)

x =

2 4 6

>> y=fix(rand(1,3)*7)

y =

5 1 0

>> [X,Y]=meshgrid(x,y)

X =

2 4 6

2 4 6

2 4 6

Y =

5 5 5

1 1 1

0 0 0

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 13

Esempio

>> [X,Y] = meshgrid([-2:0.1:2]);

>> Z = X.*exp(-X.^2-Y.^2);

>> plot3(X,Y,Z)

>> grid on

Cliccando su questa icona èpossibile ruotare il grafico in tutte le direzioni

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 14

Esempio

>> [X,Y] = meshgrid(-4:.25:4);

>> Z=6*sin(X-Y)./X;

>> mesh(X,Y,Z)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 15

Nota

Se i valori della matrice Z erano già noti, allora avemmo potuto ottenere il grafico della funzione precedente come segue

>> x=-4:.25:4;

>> y=-4:.25:4;

>> mesh(x,y,Z)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 16

Esercizi

Disegnare il grafico della funzionez=xe-r, dove r=(x-y2)2+y2

per -2≤x≤2 e -2≤y≤2 con spaziatura di 0,1

Disegnare il grafico della funzionez=sin(r)/r, dove r=(x2+y2)1/2

per -8≤x≤8 e -8≤y≤8 con spaziatura di 0,5

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 17

Risultati

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 18

Il comando surf

Crea un diagramma tridimensionale a superficie, i pannelli che formano la superficie sono opachi (colorati)

Il comando shading controlla l’ombreggiatura di grafici creati con surf o mesh

shading flatshading interpshading faceted (settato di default)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 19

Esempio

>> [X,Y] = meshgrid(-4:.25:4);

>> Z=6*sin(X-Y)./X;

>> surf(X,Y,Z)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 20

Esercizi

Ripetere gli esercizi precedenti usando, invece del comando mesh, il comando surfper disegnare i grafici delle funzioni

Disegnare il diagramma a superficie della funzione z = xe-r, dove r=(x2+y2) per -2≤x≤2 e -2≤y≤3 con spaziatura di 0,1

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 21

Diagrammi a contorno – 1

Per disegnare un diagramma a contorno di una matrice Z si usa il comando contour(Z) I valori della matrice Z sono considerati come altezze al di sopra di un piano

Sono le curve di livelloIl numero di curve da disegnare è scelto automaticamente, ma può essere opportunamente modificato

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 22

Diagrammi a contorno – 2

In contour(X,Y,Z) X e Y specificano le coordinate (x,y) della superficie come con il comando surf

I comandi contour(Z,N) e contour(X,Y,Z,N) disegnano N linee di livello

Non è utilizzato il valore di default

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 23

Esempio – 1

>> [X,Y] = meshgrid(-8:0.5:8);

>> R=sqrt((X.^2+Y.^2));

>> Z=sin(R)./R;

>> contour(X,Y,Z)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 24

Esempio – 2

>> [X,Y] = meshgrid(-1:0.1:2);

>> R=(X-Y.^2).^2+Y.^2;

>> Z=X.*exp(-R);

>> contour(X,Y,Z)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 31

La funzione peaks

Per dimostrare l’uso dei comandi per disegnare grafici si può utilizzare il comando peaks

peaks in realtà è una funzione di due variabili ottenuta traslando e scalando la distribuzione di Gauss

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 32

Varianti

peaks;Produce una matrice 49 X 49

peaks(N);Produce una matrice N X N

peaks(V);Produce una matrice length(V) X length(V)

peaks(X,Y);Produce una matrice valutando la funzione nelle matrici X ed Y (devono avere dimensione uguale)

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 33

Sintassi

UtilizzoNomeComando(VariantePeaks)

VariantePeaksZ = peaks;Z = peaks(N);Z = peaks(V);Z = peaks(X,Y);[X,Y,Z] = peaks;[X,Y,Z] = peaks(N);[X,Y,Z] = peaks(V);

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 34

Esempio

>>z=peaks(25); >>surf(z); >>colormap(jet);

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 35

Un ulteriore esempio – codice

[X,Y] = meshgrid(-8:0.5:8);R=sqrt((X.^2+Y.^2))+eps;Z=sin(R)./R;surf(X,Y,Z,'FaceColor','red','EdgeColor','none')camlight left; % posizione della lucelighting phong; % tipo illuminazioneview(-15,65) % posizione vista

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 36

Un ulteriore esempio – risultato

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 37

Esercizi – 1

Si considerino le seguenti matrici X,Y,Zt=0:pi/10:2*pi; [X,Y,Z]=cylinder(4*cos(t));t=0:pi/10:2*pi; [X,Y,Z]=cylinder(t);w=ones(1,20); [X,Y,Z]=cylinder(w);

Applicare i comandi surf, mesh, meshc, contour, contour3, prima singolarmente alle matrici X,Y e Z e poi a tutte e treIl risultato deve essere mostrato in un’unica figura

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 38

Esercizi – 2

Creare i diagrammi a contorno e a superficie per la funzione

z = x2-2xy+4y2

per -4≤x≤4 e -4≤y≤4 con spaziatura di 0,5Creare i diagrammi a contorno e a superficie per la funzione

z = -x2+2xy+3y2

per -4≤x≤4 e -4≤y≤4 con spaziatura di 0,5

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 39

Esercizi – 3

Creare i diagrammi a contorno con etichette e a superficie per la funzione

z=80e-t dove t=-(x-1)2+3(y-1)2

per -3≤x≤3 e -4≤y≤4 con spaziatura di 0,2Creare i diagrammi a contorno con etichette e a superficie per la funzione

z=e-x/ysin(2x)per 0≤x≤15 e 0,5≤y≤10 con spaziatura di 0,4

Arturo Stabile PON 2007/2013 Matlab 6 - Grafici di funzione xyz 40

Esercizi di riepilogo

Disegnare il grafico della funzione y=sin(x2) con x appartenente all’intervallo [0,5] (spaziatura di 0,05)

Disegnare il diagramma della funzione descritta dalle coordinate polari:

θ∈[0,2π] θ=0:.01:2*pi; r=|sin(2θ)⋅cos(2θ)|