Matlab Lecture on De..

advertisement
[FX,FY,FZ,...] = GRADIENT(F,...)
Distance between grid
points in X,Y,Z,…
direction
[FX,FY,FZ,…] is numerical gradient of matrix F
FX corresponds to dF/dx, the differences in the
x (column) direction
[x,y] = meshgrid(-2:.2:2, -2:.2:2);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.2);
contour(z),hold on, quiver(px,py), hold off
y
(1,5)
(2,5)
(3,5)
(4,5)
(5,5)
(1,4)
(2,4)
(3,4)
(4,4)
(5,4)
(1,3)
(2,3)
(3,3)
(4,3)
(5,3)
(1,2)
(2,2)
(3,2)
(4,2)
(5,2)
(1,1)
(2,1)
(3,1)
(4,1)
(5,1)
[x,y] = meshgrid(-2:1:2, -2:1:2)
Create a mesh on the domain
of the function z.
Examples:
x(4,5)=1
y(4,5)=2
x(2,2)=-1
y(2,5)=2
x
z=x.*exp(-x.^2-y.^2)
Element by element operation
 2  1   1 4    2  4 

. * 
  

 3 5   3  2   9  10 
 2  1   1 4    5 10 

 * 
  

 3 5   3  2   12 2 
X(4,5)=1
Y(4,5)=2
Z(4,5)=1*exp(-1^2-2^2)=exp(-5)=0.0067
-0.0007
-0.0135
-0.0366
-0.0135
-0.0007
-0.0067
-0.1353
-0.3679
-0.1353
-0.0067
0
0
0
0
0
0.0067
0.1353
0.3679
0.1353
0.0067
0.0007
0.0135
0.0366
0.0135
0.0007
[x,y] = meshgrid(-2:.2:2, -2:.2:2);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.2);
contour(z),hold on, quiver(px,py), hold off
y
(1,5)
(2,5)
(3,5)
(4,5)
(5,5)
(1,4)
(2,4)
(3,4)
(4,4)
(5,4)
(1,3)
(2,3)
(3,3)
(4,3)
(5,3)
(1,2)
(2,2)
(3,2)
(4,2)
(5,2)
(1,1)
(2,1)
(3,1)
(4,1)
(5,1)
x
-0.0007
-0.0135
-0.0366
-0.0135
-0.0007
-0.0067
-0.1353
-0.3679
-0.1353
-0.0067
0
0
0
0
0
0.0067
0.1353
0.3679
0.1353
0.0067
0.0007
0.0135
0.0366
0.0135
0.0007
[x,y] = meshgrid(-2:.2:2, -2:.2:2);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.2);
contour(z),hold on, quiver(px,py), hold off
[px,py]=gradient(z,1,1)
px =
-0.0061
-0.1219
-0.3312
-0.1219
-0.0061
py =
-0.0128
-0.0180
0
0.0180
0.0128
0.0003
0.0067
0.0183
0.0067
0.0003
-0.1286
-0.1806
0
0.1806
0.1286
0.0067
0.1353
0.3679
0.1353
0.0067
y
0.0003
0.0067
0.0183
0.0067
0.0003
-0.0061
-0.1219
-0.3312
-0.1219
-0.0061
0 0.1286 0.0128
0 0.1806 0.0180
0
0
0
0 -0.1806 -0.0180
0 -0.1286 -0.0128
(1,5)
(2,5)
(3,5)
(4,5)
(5,5)
(1,4)
(2,4)
(3,4)
(4,4)
(5,4)
(1,3)
(2,3)
(3,3)
(4,3)
(5,3)
(1,2)
(2,2)
(3,2)
(4,2)
(5,2)
(1,1)
(2,1)
(3,1)
(4,1)
(5,1)
x
CONTOUR(Z) is a contour plot of matrix Z
treating the values in Z as heights above a
plane. A contour plot are the level curves
of Z for some values V. The values V are
chosen automatically.
px =
-0.0061
-0.1219
-0.3312
-0.1219
-0.0061
py =
-0.0128
-0.0180
0
0.0180
0.0128
0.0003
0.0067
0.0183
0.0067
0.0003
0.0067
0.1353
0.3679
0.1353
0.0067
0.0003
0.0067
0.0183
0.0067
0.0003
[x,y] = meshgrid(-2:.2:2, -2:.2:2);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.2);
contour(z),hold on, quiver(px,py), hold off
-0.0061
-0.1219
-0.3312
-0.1219
-0.0061
5
4.5
4
3.5
3
-0.1286
-0.1806
0
0.1806
0.1286
0 0.1286 0.0128
0 0.1806 0.0180
0
0
0
0 -0.1806 -0.0180
0 -0.1286 -0.0128
2.5
2
1.5
1
1
1.5
2
2.5
3
3.5
4
4.5
z = x .* exp(-x.^2 - y.^2);
5
[x,y] = meshgrid(-2:.2:2, -2:.2:2);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.2);
contour(z),hold on, quiver(px,py), hold off
HOLD ON holds the current plot
and all axis properties so that
subsequent graphing commands
add to the existing graph.
5
4.5
4
HOLD OFF returns to the default
mode whereby PLOT commands
erase the previous plots and
reset all axis properties before
drawing new plots.
3.5
3
2.5
2
1.5
1
1
1.5
2
2.5
3
3.5
4
4.5
5
DIV = DIVERGENCE(X,Y,Z,U,V,W) computes the divergence of a 3-D vector field
U,V,W. The arrays X,Y,Z define the coordinates for U,V,W and must be monotonic
and 3-D plaid (as if produced by MESHGRID).
load wind
div = divergence(x,y,z,u,v,w);
slice(x,y,z,div,[90 134],[59],[0]); shading interp
daspect([1 1 1])
camlight
load wind
div = divergence(x,y,z,u,v,w);
slice(x,y,z,div,[90 134],[59],[0]); shading interp
daspect([1 1 1])
camlight
Slice at (90,59,0)
Wind is an array of (41,35,15).
Origin: (70.2,17.5,0)
End: (134.3, 60, 16)
20
15
10
5
z
0
y
x
-5
60
140
40
120
100
20
80
0
60
load wind
div = divergence(x,y,z,u,v,w);
slice(x,y,z,div,[90 134],[59],[0]); shading interp
daspect([1 1 1])
camlight
20
20
15
15
10
10
5
5
0
0
-5
60
-5
60
140
40
120
140
40
120
100
20
80
0
60
100
20
80
0
60
load wind
div = divergence(x,y,z,u,v,w);
slice(x,y,z,div,[90 134],[59],[0]); shading interp
daspect([1 1 1])
camlight
20
20
15
10
10
0
5
-10
0
-20
60
-5
60
140
40
120
140
120
40
100
100
20
80
0
20
80
60
0
60
load wind
div = divergence(x,y,z,u,v,w);
slice(x,y,z,div,[90 134],[59],[0]); shading interp
daspect([1 1 1])
camlight
6
4
20
2
10
0
0
-10
-2
-20
60
140
120
40
-4
100
20
80
0
60
-6
[CURLX, CURLY, CURLZ, CAV] = CURL(X,Y,Z,U,V,W) computes the
curl and angular velocity perpendicular to the flow (in radians per
time unit) of a 3D vector field U,V,W. The arrays X,Y,Z define the
coordinates for U,V,W and must be monotonic and 3D plaid (as if
produced by MESHGRID).
Ω
  
v   R
 1

  v
2
load wind
cav = curl(x,y,z,u,v,w);
slice(x,y,z,cav,[90 134],[59],[0]);
shading interp
daspect([1 1 1]); axis tight
colormap hot(16)
camlight
15
10
5
0
130
120
50
110
40
100
90
30
20
80
L = DEL2(U), when U is a matrix, is a discrete approximation of 0.25*del^2
u = (d^2u/dx^2 + d^2/dy^2)/4. The matrix L is the same size as U, with
each element equal to the difference between an element of U and the
average of its four neighbors.
Download