欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Python实现:绘制二元函数的函数曲线与等高线

最编程 2024-02-14 17:33:16
...


实验五二元函数的图形

【实验目的】

1.了解二元函数图形的绘制。

2.了解空间曲面等高线的绘制。

3.了解多元函数插值的方法。

4.学习、掌握 MATLAB 软件有关的命令。

【实验内容】

画出函数 zx2y 2 的图形,并画出其等高线。

【实验准备】

1.曲线绘图的 MATLAB 命令

MATLAB 中主要用 mesh,surf命令绘制二元函数图形。 主要命令

mesh(x,y,z)画网格曲面,这里x,y,z 是数据矩阵,分别

表示数据点的横坐标, 纵坐标和函数值, 该命令将数据点在空间中描

出,并连成网格。

surf(x,y,z)画完整曲面,这里x,y,z 是数据矩阵,分别表

示数据点的横坐标, 纵坐标和函数值, 该命令将数据点所表示曲面画

出。

【实验重点】

二元函数图形的描点法

曲面交线的计算

地形图的生成【实验难点】

二元函数图形的描点法

曲面交线的计算

【实验方法与步骤】

练习 1 画出函数 zx 2y 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)

运行结果为

图 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');%三个坐标轴的

标记

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

>>grid on

运行结果为

如果要画 z=1 的等高线,相应的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,[1 1])

运行结果为

练习 2 二次曲面的方程如下

x

2

y2

z2

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

>>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),-a

推荐阅读