当前位置:
文档之家› MATLAB绘制二元函数图形
MATLAB绘制二元函数图形
10 sin x 2 y 2 1 x2 y2
在 30 x, y 30 范围内的图形, 并画
mesh(x,y,z) subplot(1,2,2); contour(x,y,z,10)
2. 根据给定的参数方程,绘制下列曲面的图形。 a) 椭球面 x 3 cos u sin v , y 2 cos u cos v , z sin u ; 解: clear;close;
MATL AB 绘制二元函数的图形
【实验目的】 1.了解二元函数图形的绘制。 2.了解空间曲面等高线的绘制。 3.了解多元函数插值的方法。 4.学习、掌握 MATLAB 软件有关的命令。 【实验内容】 画出函数 z x 2 y 2 的图形,并画出其等高线。 【实验准备】 1.曲线绘图的 MATLAB 命令 MATLAB 中主要用 mesh,surf 命令绘制二元函数图形。主要命令 mesh(x,y,z)画网格曲面,这里 x,y,z 是数据矩阵,分别 表示数据点的横坐标,纵坐标和函数值,该命令将数据点在空间中描 出,并连成网格。 surf(x,y,z)画完整曲面,这里 x,y,z 是数据矩阵,分别表 示数据点的横坐标,纵坐标和函数值,该命令将数据点所表示曲面画 出。 【实验重点】 1. 二元函数图形的描点法 2. 曲面交线的计算 3. 地形图的生成
【实验难点】 1. 二元函数图形的描点法 2. 曲面交线的计算 【实验方法与步骤】 练习 1 画出函数 z x 2 y 2 的图形,其中 ( x, y ) [3, 3] [3, 3] 。 用 MATLAB 作图的程序代码为 >>clear; >>x=-3:0.1:3; %x 的范围为[-3,3] >>y=-3:0.1:3; %y 的范围为[-3,3] >>[X,Y]=meshgrid(x,y); %将向量 x,y 指定的区域转化为矩阵 X,Y >>Z=sqrt(X.^2+Y.^2); %产生函数值 Z >>mesh(X,Y,Z) 运行结果为
u=-4:0.1:4; v=-4:0.1:4; [U,V]=meshgrid(u,v); X=3.*cos(U).*sin(V); Y=2.*cos(U).*cos(V); Z=sin(U); surf(X,Y,Z); axis equal
b) 椭圆抛物面 x 3u sin v , y 2u cos v , z 4u 2 ; 解: clear;close; u=-4:0.1:4;
当 a=5i,b=4,c=3,d=1,N=15 时结果为
当 a=5i,b=4i,c=3,d=0.1,N=10 时结果为
【练习与思考】 1ຫໍສະໝຸດ 画出空间曲面 z 出相应的等高线。 解: clear;close; u=-30:0.5:30; v=-30:0.5:30; [x,y]=meshgrid(u,v); z=10*sin(sqrt(x.^2+y.^2))./sqrt(1+x.^2+y.^2); subplot(1,2,1);
e) 旋转面 x ln u sin v , y ln u cos v , z u ; 解: clear;close; u=-4:0.1:4; v=-4:0.1:4; [U,V]=meshgrid(u,v); X=log(U).*sin(V); Y=log(U).*cos(V); Z=U; mesh(X,Y,Z); shading interp; colormap(jet); axis equal
x2 y2 z 2 d a 2 b2 c2
讨论参数 a,b,c 对其形状的影响。 相应的 MATLAB 代码为 >>a=input('a='); b=input('b='); c=input('c='); >>d=input('d='); N=input('N='); %输入参数,N 为网格线数目 >>xgrid=linspace(-abs(a),abs(a),N); %建立 x 网格坐标 >>ygrid=linspace(-abs(b),abs(b),N); %建立 y 网格坐标 >>[x,y]=meshgrid(xgrid,ygrid); %确定 N×N 个点的 x,y 网格坐标 >>z=c*sqrt(d-y.*y/b^2-x.*x/a^2);u=1; %u=1,表示 z 要取正值 >>z1=real(z); %取 z 的实部 z1
v=-4:0.1:4; [U,V]=meshgrid(u,v); X=3.*U.*sin(V); Y=2.*U.*cos(V); Z=4.*U.^2; surf(X,Y,Z); shading interp; colormap(hot); axis equal
c) 单叶双曲面 x 3 sec u sin v , 2 sec u cos v , z 4 tan u ; 解: clear;close;
shading interp; colormap(jet); axis equal
3. 在一丘陵地带测量高程, x 和 y 方向每隔 100 米测一个点,得高程 见表 5-2,试拟合一曲面,确定合适的模型,并由此找出最高点和该 点的高程。 表 5-2 高程数据 y x 100 200 100 636 698 200 697 712 300 624 630 400 478 478
f) 圆锥面 x u sin v , y u cos v , z u ; 解: clear;close; u=-4:0.1:4; v=-4:0.1:4; [U,V]=meshgrid(u,v); X=U.*sin(V); Y=U.*cos(V); Z=U; mesh(X,Y,Z); shading interp; colormap(jet);
标记 >>title('Contour3 of Surface') %标题 >>grid on %画网格线 运行结果为
图 5.4
如果画图 5.4 所示的二维等高线,相应的 MATLAB 代码为 >>clear;x=-3:0.1:3;y=-3:0.1:3; >>[X,Y]=meshgrid(x,y);Z=sqrt(X.^2+Y.^2); >>contour (X,Y,Z,10); >>xlabel('X-axis'),ylabel('Y-axis'); >>title('Contour3 of Surface')
300 400 解:
680 662
674 626
598 552
412 334
clear;close; x=[100 100 100 100 200 200 200 200 300 300 300 300 400 400 400 400]; y=[100 200 300 400 100 200 300 400 100 200 300 400 100 200 300 400]; z=[636 697 624 478 698 712 630 478 680 674 598 412 662 626 552 334]; xi=100:5:400; yi=100:5:400; [X,Y]=meshgrid(xi,yi); H=griddata(x,y,z,X,Y,'cubic'); surf(X,Y,H); view(-112,26); hold on; maxh=vpa(max(max(H)),6) [r,c]=find(H>=single(maxh)); stem3(X(r,c),Y(r,c),maxh,'fill')
>>for k=2:N-1; %以下 7 行程序的作用是取消 z 中含虚数的点 >>for j=2:N-1 >>if imag(z(k,j))~=0 z1(k,j)=0;end >>if all(imag(z([k-1:k+1],[j-1:j+1])))~=0 z1(k,j)=NaN;end >>end >>end >>surf(x,y,z1),hold on %画空间曲面 >>if u==1 z2=-z1;surf (x,y,z2);%u=1 时加画负半面 >>axis([-abs(a),abs(a),-abs(b),abs(b),-abs(c),abs(c)]); >>end >>xlabel('x'),ylabel('y'),zlabel('z') >>hold off 运行程序,当 a=5,b=4,c=3,d=1,N=50 时结果为
u=-2:0.1:2; v=-2:0.1:2; [U,V]=meshgrid(u,v); X=3*sec(U).*sin(V); Y=2*sec(U).*cos(V); Z=4*tan(U); mesh(X,Y,Z); shading interp; colormap(jet); axis equal
colormap(jet); axis equal
h) 正螺面 x u sin v , y u cos v , z 4v 。 解: clear;close; u=-4:0.1:4; v=-4:0.1:4; [U,V]=meshgrid(u,v); X=U.*sin(V); Y=U.*cos(V); Z=4*V; mesh(X,Y,Z);
图 5.3 如果画等高线,用 contour,contour3 命令。 contour 画二维等高线。 contour3 画三维等高线。 画图 5.3 所示的三维等高线的 MATLAB 代码为 >>clear; >>x=-3:0.1:3; >>y=-3:0.1:3; >>[X,Y]=meshgrid(x,y); >>Z=sqrt(X.^2+Y.^2); >>contour3(X,Y,Z,10); %画 10 条等高线 >>xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis'); % 三个坐标轴的