使用matlab进行三维函数的绘制

本文最后更新于:2022年4月22日 晚上

基础

在浏览高数课件,然后对于其中的三维函数想进行直观的了解,原本函数只有二维时经常使用Geogerbra,但是其对三维函数无能为力,便学习了下matlab如何绘制三维函数

简单的示例:
1
2
3
4
5
6
7
8
[x,y]=meshgrid(-3:0.1:3);
z=sin(x.*y);
subplot(1,2,2);
mesh(x,y,z);
title('mesh');
subplot(1,2,1);
surf(x,y,z);
title('surf');

(语段的开头假如有代码框的话好像不加什么东西的话会出现渲染错误,请自动忽略这句话)meshgrid 用来生成二维方格矩阵,作为第三维变量z的因变量。在这里我们设置了x和y的范围相同,也可以分开设置成不同的范围,这时格式应设置成 [x,y]=meshgrid[t,s] ,t和s分别是行矩阵和列矩阵,要求的格式为(左区间:精度值:右区间),如:

1
2
3
x=2:1:6;
y=(3:1:8)';
[X,Y]=meshgrid(x,y);

mesh函数和surf函数都是用来生成三维曲线的,具体差别可以自己实验得知。subplot是规划显示的区域
具体效果如图:


update:

注意 精度值设置成0.1即可,设置更低可能会造成加载缓慢或颜色加载不出来等问题。这是0.01的情况:

(设置成0.0001时matlab直接停止运行了,不知道是我电脑设置的问题还是什么其他问题


update:

更新一下三维曲面的写法
fsurf用来绘制三维的曲面,可以直接按$z=f(x,y)$形式输入,就像这样:
fsurf(@(x,y) ((1-sqrt(x)+sqrt(y))^2))
效果

也可以将x,y,z分别使用参数来表示,然后按照 fsurf(x,y,z,范围)的格式来绘制,比如这样

1
2
3
4
5
6
7
r = @(u,v) 2 + sin(7.*u + 5.*v);
funx = @(u,v) r(u,v).*cos(u).*sin(v);
funy = @(u,v) r(u,v).*sin(u).*sin(v);
funz = @(u,v) r(u,v).*cos(v);
fsurf(funx,funy,funz,[0 2*pi 0 pi])
camlight
% camlight是打光,更加立体化


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!