基于MATLAB的隐函数与三维画图(附图与代码)

一. 特殊二维图形绘制语句

bar(x,y) 二维条形图
compass(x,y) 罗盘图
feather(x,y) 羽毛状图
hist(y,n) 直方图
polar(x,y) 极坐标图
stairs(x,y) 阶梯图形
semilogx(x,y) x-半对数图
comet(x,y) 彗星状轨迹图
errorbar(x,y,ym,yM) 误差限图形
fill(x,y,c) 二维填充图
loglog(x,y) 对数图
quiver(x,y) 磁力线图
stem(x,y) 火柴杆图
semilogy(x,y) y-半对数图

例题1

绘制极坐标曲线

\rho=5sin(\frac{4\theta}{3}),\quad \rho=5sin(\frac{\theta}{3})

解:

MATLAB代码:

clc;clear;

theta=0:0.01:6*pi; %周期可以利用试凑方法确定
rho=5*sin(4*theta/3);
polar(theta,rho)
figure,
rho=5*sin(theta/3);
polar(theta,rho)

运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第1张图片

基于MATLAB的隐函数与三维画图(附图与代码)_第2张图片

例题2

用不同的曲线绘制函数表示正弦曲线

解:

代码:

clc;clear;

t=0:.2:2*pi;
y=sin(t); %生成绘图所用的数据

subplot(2,2,1),stairs(t,y) %分割窗口,在左上角绘制阶梯曲线

subplot(2,2,2),stem(t,y) %火柴杆曲线绘制

subplot(2,2,3),bar(t,y) %条形图

subplot(2,2,4),semilogx(t,y)  %横坐标为对数的曲线

 运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第3张图片

举例

代码:


clc;clear;
t=(1/16:1/8:1)*2*pi;
x=exp(t).*sin(t);
y=t.*cos(t);
fill(x,y,'k'),  %黑色
grid on

 运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第4张图片

有时候可能需要在多个图形窗口看绘制曲线效果,这时可以使用figure命令,创建多个窗口。

例题2

在两个窗口分别绘制以下函数:

y1=cos(5x)+0.1x^2,\quad y2=sin(3x)+0.1x

解:

代码:

clc;clear;
x=0:0.01:5;
y1=cos(5*x)+0.1*x.^2;
plot(x,y1)
y2=sin(3*x)+0.1*x;
figure(2),
plot(x,y2)

 运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第5张图片

基于MATLAB的隐函数与三维画图(附图与代码)_第6张图片

还可以给图形加一些标注。

例题3

分别绘制以下函数,并加一些标注。

sin(x),sin(5x),sin(x)+sin(5x)

解:

MATLAB代码:

clc;clear;
x=0:0.04:20;
y1=sin(x);
y2=sin(5*x);
y3=y1+y2;
plot(x,y1,'*',x,y2,x,y3,'.') %y1用*表示,y2用默认的细线表示,y3用虚线点表示
legend('sin(x)','sin(5x)','sin(x)+sin(5x)') %分别对用上面表示给出图例
xlabel('x') %x轴标注
ylabel('y') %y轴标注
title('the function of sin') %标题
grid %加坐标格

 运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第7张图片

二. 隐函数绘制

隐函数形式:

f(x,y)=0

格式:

ezplot(隐函数表达式)

 例题4

画图:

f(x,y)=x^2sin(x+y^2)+y^2e^{x+y}+5cos(x^2+y)=0

解:

MATLAB代码:

clc;clear;

%x自选
ezplot('x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)')

%限定范围
figure,
ezplot('x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)',[-10 10])

运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第8张图片

基于MATLAB的隐函数与三维画图(附图与代码)_第9张图片

三. 三维图像绘制

3.1 三维曲线

格式:

%格式1
plot3(x1,y1,z1)

%格式2
plot3(x1,y1,z1,选项1,x2,y2,选项2,···,xm,ym,zm,选项m)

另外还有:

stem3:三维火柴杆型曲线

fill3:三维填充图形

bar3:三维直方图

例题5

画参数方程图:

x(t)=t^3sin(3t)e^{-t},\quad y(t)=t^3cos(3t)e^{-t},\quad z=t^2

解:

MATLAB代码:

clc;clear;
t=0:.1:2*pi; %构造t向量,注意下面的点运算
x=t.^3.*sin(3*t).*exp(-t);
y=t.^3.*cos(3*t).*exp(-t);
z=t.^2;
plot3(x,y,z), %三维曲线绘制
grid
figure,
stem3(x,y,z);
hold on;
plot3(x,y,z),
grid

 运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第10张图片

基于MATLAB的隐函数与三维画图(附图与代码)_第11张图片

3.2 三维曲面

格式:

[x,y]=meshgrid(v1,v2)
z=x.*y

surf(x,y,z) %绘制表面图
mesh(x,y,z)%绘制网格图

surfl()  光照下

surfc()  等高线

waterfall()  瀑布型

contour()  contour3()  等高线

例题6

对Butterworth滤波器来讲,u_0v_0取16为区域的中心。假设D_0=200,n=2

H(u,v)=\frac{1}{1+D^{2n}(u,v)/D_0}

D(u,v)=\sqrt{(u-u_0)^2+(v-v_0)^2}

解:

MATLAB代码如下:

clc;clear;
[x,y]=meshgrid(0:31);
n=2;
D0=200;
D=sqrt((x-16).^2+(y-16).^2); %求距离
z=1./(1+D.^(2*n)/D0); %计算
mesh(x,y,z)  %绘制滤波器
axis([0 31 0 31 0 1]) %重新设置坐标系,增大可读性
figure,
surf(x,y,z) %绘制三维表面图
figure,
contour3(x,y,z,30)  %三维等高线图,30条等高线

运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第12张图片

基于MATLAB的隐函数与三维画图(附图与代码)_第13张图片

基于MATLAB的隐函数与三维画图(附图与代码)_第14张图片

例题7

试绘制出二元函数

z=f(x,y)=\frac{1}{\sqrt{(1+x)^2+y^2}}+\frac{1}{\sqrt{(1-x)^2+y^2}}

解:

代码如下:

clc;clear;
xx=[-2:.1:-1.2,-1.1:0.02:-0.9,-0.8:0.1:0.8,0.9:0.02:1.1,1.2:0.1:2];
yy=[-1:0.1:-0.2,-0.1:0.02:0.1,0.2:0.1:1];
[x,y]=meshgrid(xx,yy);
z=1./(sqrt((1-x).^2+y.^2))+1./(sqrt((1+x).^2+y.^2));
surf(x,y,z),
shading faceted;
set(gca,'zlim',[0,20]) %设置当前坐标轴对象的句柄的值

 运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第15张图片

例题8

对Butterworth滤波器画三视图。

解:

代码如下:

clc;clear;
[x,y]=meshgrid(0:31);
n=2;
D0=200;
D=sqrt((x-16).^2+(y-16).^2); %求距离
z=1./(1+D.^(2*n)/D0); %计算

subplot(221),surf(x,y,z),axis([0 31 0 31 0 1]);
view(0,90); %俯视图

subplot(222),surf(x,y,z),axis([0 31 0 31 0 1]);
view(90,0); %侧视图

subplot(223),surf(x,y,z),axis([0 31 0 31 0 1]);
view(0,0); %正视图

subplot(224),surf(x,y,z),axis([0 31 0 31 0 1]);
 %三维图

运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第16张图片

view(\alpha,\beta)

第一个角度用来表示水平方向,即y轴负方向的夹角,默认值-37.5度;

第二个角度用来表示垂直方向,默认值36度。

四. 符号运算的可视化

MATLAB中除了数值结果可以绘制图像外,还提供了丰富的符号绘图功能,符号绘图命令通常以ez字母开头。

例题9

采用符号作图方法绘制变形的螺旋线。参数方程如下:

x=t,y=sint,z=2cost,\quad t\in [0,20]

解:

代码如下:

clc;clear;
syms t;
x=t;
y=sin(t);
z=2*cos(t);
ezplot3(x,y,z,[0,20])
grid on

运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第17张图片

例题10

采用mesh绘图方法绘椭球面,椭球参数方程如下:

x=sint_1cost_2,y=16sin(t_1)sin(t_2),z=2cost_1

解:

MATLAB代码:

clc;clear;
syms t1 t2;
x=sin(t1)*cos(t2);
y=16*sin(t1)*sin(t2);
z=2*cos(t1);
ezmesh(x,y,z,[0,pi,0,2*pi])
hidden off %透视效果
%注意hidden off效果对ezsurf无效

 运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第18张图片

例题11

采用ezsurf绘图方法绘制轮胎状环面,参数方程为如下:

x=cost(3+cosu),y=sint(3+cosu),z=sinu,\quad t\in[0,2\pi],u\in [0,2\pi]

解:

MATLAB代码如下:

clc;clear;
syms t u;
x=cos(t)*(3+cos(u));
y=sin(t)*(3+cos(u));
z=sin(u);
ezsurf(x,y,z,[0,2*pi,0,2*pi])
axis off %不显示坐标轴

运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第19张图片

五. 复数绘图

对于复数函数的绘图主要有两种形式。

一种是直角坐标图(plot),即分别以复数的实部虚部为坐标做出复数的表示图;

另一种是极坐标图(polar),即以复数的模幅角为坐标作图。

举例

代码:

clc;clear;
t=0:0.1:2*pi;
y=t+i*t.*sin(t);
r=abs(y);
theta=angle(y);

subplot(121),plot(y),
title('直角坐标图')

subplot(122),polar(theta,r),
title('极坐标图')

运行结果:

基于MATLAB的隐函数与三维画图(附图与代码)_第20张图片

你可能感兴趣的:(MATLAB,matlab,开发语言,隐函数,三维曲线,三维曲面)