利用Matlab绘制梯度图、散度图、旋度图

1. 分别用mesh()和surf()绘制出函数xx.*exp(-xx.^2 - yy.^2)的例题曲面图。

例1(mesh):

x=linspace(-2, 2, 25);
y=linspace(-2, 2, 25);
[xx, yy]=meshgrid(x, y);
zz=xx.*exp(-xx.^2 - yy.^2);
mesh(xx, yy, zz);
colorbar;
利用Matlab绘制梯度图、散度图、旋度图_第1张图片

例2(surf):

x=linspace(-2, 2, 25);
y=linspace(-2, 2, 25);
[xx, yy]=meshgrid(x, y);
zz=xx.*exp(-xx.^2 - yy.^2);
h=contour(zz, 12);
clabel(h);

;

 
  利用Matlab绘制梯度图、散度图、旋度图_第2张图片 
  

2. 分别用mesh()和surf()绘制出函数sqrt(xx.^2 + yy.^2)的立体曲面图。

例3:

x=linspace(-2, 2, 25);
y=linspace(-2, 2, 25);
[xx, yy]=meshgrid(x, y);
zz=sqrt(xx.^2+ yy.^2);
mesh(xx, yy, zz);
colorbar;

利用Matlab绘制梯度图、散度图、旋度图_第3张图片

例4:

x=linspace(-2, 2, 25);
y=linspace(-2, 2, 25);
[xx, yy]=meshgrid(x, y);
zz=sqrt(xx.^2+ yy.^2);
surf(xx, yy, zz);
colorbar;
利用Matlab绘制梯度图、散度图、旋度图_第4张图片

3. 分别画出以上连个函数的等高线,并标注等高线值。

例5(conour):

x=linspace(-2, 2, 25);
y=linspace(-2, 2, 25);
[xx, yy]=meshgrid(x, y);
zz=xx.*exp(-xx.^2 - yy.^2);
h=contour(zz, 12);
clabel(h);
利用Matlab绘制梯度图、散度图、旋度图_第5张图片
例6(conour):

x=linspace(-2, 2, 25);
y=linspace(-2, 2, 25);
[xx, yy]=meshgrid(x, y);
zz=sqrt(xx.^2 + yy.^2);
h=contour(zz, 12);
clabel(h);
利用Matlab绘制梯度图、散度图、旋度图_第6张图片

4. 求以上两个函数的梯度,并在高等线图中以矢量箭头的形式显示各点的梯度。

例7(gradient):

x=linspace(-2, 2, 25);
y=linspace(-2, 2, 25);
[xx, yy]=meshgrid(x, y);
zz=xx.*exp(-xx.^2 - yy.^2);
h=contour(zz, 12);
clabel(h);
[dx, dy]=gradient(zz,.2,2);
hold on;
quiver(dx, dy);
利用Matlab绘制梯度图、散度图、旋度图_第7张图片

例7(gradient):

x=linspace(-2, 2, 25);
y=linspace(-2, 2, 25);
[xx, yy]=meshgrid(x, y);
zz=sqrt(xx.^2 + yy.^2);
h=contour(zz, 12);
clabel(h);
[dx, dy]=gradient(zz,.2,2);
hold on;
quiver(dx, dy);
利用Matlab绘制梯度图、散度图、旋度图_第8张图片

5. 求矢量场的散度。

例9(divergence):

[x, y, z] = meshgrid(-3:1:3);
u=3.*x.^2 + 2.*y.^2 + z.^2;
v=x.^2 + 3.*y.^2 + 2.*z.^2;
w=2.*x.^2 + 3.*y.^2 + z.^2;
div=divergence(x, y,z, u, v, w);
figure
for i=1:7
%figure
mesh(div(:,:,i));
hold on;
end
利用Matlab绘制梯度图、散度图、旋度图_第9张图片

6. 求矢量场的旋度。

例10(curl):

[x, y, z] = meshgrid(-3:1:3);
u=3.*x.^2 + 2.*y.^2 + z.^2;
v=x.^2 + 3.*y.^2 + 2.*z.^2;
w=2.*x.^2 + 3.*y.^2 + z.^2;
[curlx, curly, curlz]=curl(x, y,z, u, v, w);
figure
for i=1:7
mesh(curlx(:,:,i));
hold on;
end

利用Matlab绘制梯度图、散度图、旋度图_第10张图片

例11:

[x, y, z] = meshgrid(-3:1:3);
u=3.*x.^2 + 2.*y.^2 + z.^2;
v=x.^2 + 3.*y.^2 + 2.*z.^2;
w=2.*x.^2 + 3.*y.^2 + z.^2;
[curlx, curly, curlz]=curl(x, y,z, u, v, w);
figure
for i=1:7
mesh(curlx(:,:,i));
hold on;
end
figure
for i=1:7
mesh(curly(:,:,i));
hold on;
end

利用Matlab绘制梯度图、散度图、旋度图_第11张图片

例12:

[x, y, z] = meshgrid(-3:1:3);
u=3.*x.^2 + 2.*y.^2 + z.^2;
v=x.^2 + 3.*y.^2 + 2.*z.^2;
w=2.*x.^2 + 3.*y.^2 + z.^2;
[curlx, curly, curlz]=curl(x, y,z, u, v, w);
figure
for i=1:7
mesh(curlx(:,:,i));
hold on;
end
figure
for i=1:7
mesh(curly(:,:,i));
hold on;
end
figure
for i=1:7
mesh(curlz(:,:,i));
hold on;
end
利用Matlab绘制梯度图、散度图、旋度图_第12张图片

7. 总结:

函数 描述
linspace(a, b, n) 在a,b之间取n个点
meshgrid() 生成网格采样点
mesh() 画出立体网状图
contour() 画等高线
clabel() 标注等高线值
gradient() 求梯度
hold on 保持图像
quiver() 画矢量图箭头
divergence() 求散度
figure 显示图形
for i=1:7...end 自动分成7个7*7矩阵的值
%figure 7个图层单独显示
curl() 求旋度

注:
1) type + 函数名 查看实现源码type meshgrid 


你可能感兴趣的:(机器学习)