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