1.6 MATLAB中的函数绘图(2)
在介绍了一元函数的平面绘图之后,下面来介绍如何绘制极坐标下的函数图像,以及参数方程形式的函数、多元函数的图像等。
极坐标系下,函数的表达式通常为r=f(θ),绘图的命令为polar(θ, r, S)。比如要绘制心形曲线r=3(1+cosθ),可以使用如下命令:
>> theta=0: 0.1: 2∗pi; >> r=3∗(1+cos(theta)); >> polar(theta, r)
输出结果如图1-15所示。
图1-15
再比如绘制螺旋曲线r=3(1+θ2),输入如下命令:
>> theta=0: 0.1: 4∗pi; >> r=3∗(1+theta.^2); >> polar(theta, r)
输出结果如图1-16所示。
图1-16
三维曲线一般以参数方程的形式来表达,通常表示为x=f(t), y=g(t), z=t。相应的绘图命令为plot3(x, y, z, S)。比如绘制x=sint, y=cost, z=t的图形,只需输入如下命令:
>> t=0: 0.1: 4∗pi; >> x=sin(t); >> y=cos(t); >> z=t; >> plot3(x, y, z)
输出的图像结果如图1-17所示。
图1-17
有的一元函数中含有参数,如果希望展示参数取不同值时的函数图像,则可以将参数视为另一个变量,用三维绘图命令plot3(x, y, z, S)来展示相应的图像。
比如函数y=a(sinx+4cosx),其中,x为自变量,a为参数。要想了解参数a取不同值时的函数图像变化,可以将其视为二元函数z=x(siny+4cosy),输入如下命令:
>> x=-3: 0.1: 3; >> y=0: 0.1: 2∗pi; >> [ x, y]=meshgrid( x, y); %产生一个以向量x为行、 y为列的矩阵 >> z=x. ∗sin(y)+4∗x. ∗cos(y); >> plot3( x, y, z) %绘制x取不同值时,对应的y-z曲线
输出结果如图1-18所示。
图1-18
可以看到,x(即原函数中的a)变化时,函数图像有很明显的不同。
对于形如z=f(x, y)的三维曲面,给定x和y的取值范围,即可用surf(x, y, z)命令绘制曲面。比如绘制z=xsiny+4xcosy图像,可以输入如下命令:
>> x=-3: 0.1: 3; >> y=0: 0.1: 2∗pi; >> [ x, y]=meshgrid(x, y); >> z=x. ∗sin(y)+4∗x. ∗cos(y); >> surf(x, y, z)
输出结果如图1-19所示。
图1-19
为了让图像看起来更平滑、美观,可以使用命令shading flat,如将图1-19变成如图1-20所示更平滑的形式。
图1-20
MATLAB中提供的绘图命令还有很多,比如mesh(x, y, z)命令可用于绘制二元函数的三维网格图。输入如下命令:
>> x=-3: 0.1: 3; >> y=0: 0.1: 2∗pi; >> [ x, y]=meshgrid(x, y); >> z=x. ∗sin(y)+4∗x. ∗cos(y); >> mesh(x, y, z)
可以得到函数z=xsiny+4xcosy的图像,如图1-21所示。
图1-21
meshz(x, y, z)命令可以绘出带参考平面的三维网格图。输入下面的命令:
>> [ x, y]=meshgrid(-2: 0.1: 2); >> z=x.^2+y.^3; >> meshz(x, y, z)
得到的是z=x2+y3带有参考平面的图像,如图1-22所示。
图1-22
用meshc(x, y, z)命令可以绘制具有基本等高线的网格图。比如输入:
>> [ x, y]=meshgrid(-2: 0.1: 2); >> z=x.^2+y.^3; >> meshc(x, y, z)
得到函数z=x2+y3具有等高线的图像,如图1-23所示。
图1-23
绘制具有基本等高线的曲面图也可以用surfc(x, y, z)命令。另外,我们还可以用surface(x, y, z)绘制函数在x-y平面上的投影图,z值大小以颜色来区分。比如输入如下命令:
>> [ x, y]=meshgrid(-2: 0.1: 2); >> z=x.^2+y.^3; >> surface(x, y, z)
输出结果如图1-24所示。
图1-24
如果并不掌握函数表达式,只有一组点的坐标,则可以绘制其散点图。这在进行数据分析时非常有用,可以通过绘图了解这些散点的大致走向和特征。
绘制散点图的命令为plot(x, y, k)或scatter(x, y, k)。假设有一组点(1,10),(2,30),(3,67),(4,89),(5,130),输入如下命令:
>> x=[1, 2, 3, 4, 5]; y=[10, 30, 67, 89, 130]; >> plot(x, y, k)
得到的图像如图1-25所示。
图1-25
输入scatter命令:
>> scatter(x, y, k)
输出结果如图1-26所示。
图1-26
对MATLAB的简单介绍到此为止。MATLAB的功能和使用技巧非常多,可以根据自己的需要,在使用中慢慢学习。从下一章开始,我们将运用MATLAB进行各种各样的数学实验。我们会看到,原本抽象的理论推导和公式运算将通过实验展现出令人惊艳的另一面。