语音播报
《MATLAB语言》课程论文
MATLAB绘图功能解决数学函数分析问题
姓名:
学号:
专业:电子信息工程
班级:1班
指导老师:汤全武
学院:物理电气信息学院
完成日期:2010-12-19
MATLAB 绘图功能解决数学函数分析的问题
()
【摘要】
数学分析中有很多问题我们用计算的方法做会很麻烦,相反如果我们可以精确的画出函数图形,就可以很直观的观察出函数的特性,我们想要解决的,例如求函数单调性,函数的对称性,对称区间,函数的奇偶性等一些问题就会一目了然。而Matlab 具有强大的绘图功能,并且Matlab 用起来也特别方便,利用Matlab 绘图功能我们可以绘制出各类曲线,这样我们就可以利用Matlab 的绘图功能解决数学函数分析上的问题,避免了传统的手工绘图的麻烦和不确定性以及局限性。
【关键字】Matlab 绘图 二维曲线 函数 解决 问题 一﹑问题的提出
Matlab 的绘图功能可以绘制各种曲线,包括二维图形和三维图形,还可以对图形进行修饰和控制,以增强图形的表现效果。Matlab 提供了两个层次的绘图操作,一种是对图形句柄进行的底层绘图操作,另一种是建立在底层绘图操作上的高层绘图,而Matlab 绘图用户不需要过多的考虑绘图细节,只需要给出一些基本的参数就可以绘制所需图形。利用Matlab 的绘图功能我们在解决数学函数分析问题,就不用在麻烦的计算,也不用再手工画图,我们只需利用Matlab 所给出的一些函数就可以轻松的绘制出各种曲线。那么利用Matlab 绘图功能我们究竟可以解决哪些数学函数分析的问题呢?Matlab 绘图功能怎么能很好的运用在数学上呢? 二﹑Matlab 的二维绘图功能与数学函数分析。 1. Matlab 绘制二维曲线的基本函数。 (1)plot 函数
此函数用来绘制直角坐标系中的二维曲线 Plot 函数的基本调用格: Plot (x,y,linspec …)
其中x 绘制以元素维横坐标,y 为纵坐标的曲线,x,y 具有相同的长度的向量。linspec 指曲线的线性,标记,颜色。
例:在区间0≦x ≦π内,绘制曲线y=2e-0.5xsin(2πx). 程序如下:
x=0:pi/100:2*pi
y=2*exp(-0.5*x).*sin(2*pi*x); plot(x,y)
执行后,打开一个图形窗口,在其中绘出图图1所示曲线。 运行结果如图所示:
1234567
-1.5
-1
-0.5
0.5
1
1.5
2
图1 )2sin(5.02x x e y π=的曲线
(2)含多个输入参数的plot函数。
Plot(x1,y1,x2,y2,…Xn,Yn)
此函数可以用开在同一坐标内绘制多条函数曲线。
①当输入参数都为向量时,X1和Y1,X2和Y2,…Xn和Yn分别组成一组向量对,每一组向量对可以绘制一条曲线,这趟可以在同一坐标绘制多条曲线。
②当输入参数有矩阵形式时,配对的X,Y按对应列元素的横纵坐标分别绘制曲线。曲线的条数等于矩阵的列数。
(3)线型,标记,颜色
标志符颜色标志符线型和点型
y 黄色∙点
m 紫色 圆圈
c 青色××号
r 红色+ +号
g 绿色——号
b 蓝色**号
w 白色._点划线
k 黑色﹍虚线
利用这些绘图选项,我们在绘图时可以对不同函数曲线的线形,颜色进行设置,这样会使图形表现的更清晰、更明确。
含选项的plot函数调用格式如下:
Plot(X1,Y1,选项1,X2,Y2,选项2,…Xn,Yn,选项n)
(4)双坐标函数plotyy.
在matlab中,如果需要绘制出具有不同纵坐标标度的两个图形,可以用plotyy.函数,这种图形能把函数具有不同量纲不同数量级的两个函数绘制在同一个坐标中,有利于图形数据的比较分析。
调用格式:
plotyy.(x1,y1,x2,y2)
其中,x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对.
(5)图形标注
Title (图形说明)
Xlabel (X轴说明)
Ylabel (Y轴说明)
Text (X,Y,图形说明)
Legend (图例1,图例2,…
(6)坐标控制
Axis([Xmin Xmax Ymin Ymax Zmin Zmax ])
若只给出四个参数,则MATLAB按照X,Y轴的最大值和最小值选择坐标范围,以绘制出合适的二维曲线。
以下是AXIS常用的函数:
Axis equal : 纵,横坐标采用等长度。
Axis square : 产生正方形坐标系。
Axis auto : 使用默认设置。
Axis off : 取消坐标轴。
Axis on : 显示坐标轴。 (7)图形保持
Hold on
一般情况下,每执行一次绘图命令,就刷新一次当前窗口,图形原有的窗口将不存在,若希望在以存的图形上继续添加新的图形,可以使用图形保持命令,hold on/off 命令控制时保持原有图形还是刷新原有图形,不带参数的hold 的命令在两种状态之间切换。 (8)图形窗口分割函数。
Subplot(m,n,p)
该函数将当前图形窗口分成m ×n 个绘图区,即m 行,每行n 个区,且选定第p 个区为当前活动区。 (9)fplot
此函数可以提高绘图的精确度,避免手工绘图等距取样的局限向。 调用格式
Fplot(filename,lims,tol,选项)
其中Filename 为函数名,以字符形式出现,lims 为x ,y 的取值范围,tol 为相对容许误差。
以上我们介绍了matlab 绘制二维曲线的一些函数的功能及其调用格式,下面我们分析一下如何用matlab 绘图功能解决数学函数分析的问题,以及利用matlab 解决数学问题具有那些优越性。
2.用matlab 绘图功能可以解决的数学函数分析的问题。 (1)用matlab 绘图功能求函数值遇问题。
例1. 求分段函数
Y=⎪⎪⎪
⎩⎪⎪⎪⎨⎧-3
252x
x 64
0≥
≥≥≥x x x x
的值域
下面我们用matlab 绘图来解决这个问题。 Matlab 程序:
X=linspace(0,10,100); %坐标轴取值范围 Y=[]; %从一个空矩阵开始 for X0=X %把X 的值赋给X0 if X0>=8 %判断X 取值范围 Y=[Y,1]; %将X0添加到Y 中 elseif X0>=6 %判断X 取值范围 Y=[Y,5-X0/2]; %将X0添加到Y 中 elseif X0>=4 %判断X 取值范围 Y=[Y,2]; elseif X0>=0 Y=[Y,sqrt(X0)]; end end
plot(X,Y) %绘制函数图像 axis([0 10 0 2.5]) %坐标设置 title('分段函数曲线'); %加图形标题 xlabel('varible x'); %加x 轴说明 ylabel('varible y'); %加y 轴说明
text(2,1.3,'y=x6{1/2}'); %在指定位置添加图形说明 text(4.5,1.9,'y=2'); text(7.3,1.5,'Y=5-X/2'); text(8.5,0.9,'y=1'); 运行结果如图所示:
01234
5678910
0.5
1
1.52
2.5
分段函数曲线
v arible x
v a r i b l e y
y=x61/2
y=2
Y=5-X /2
y=1
图2 求分段函数值域的曲线
由于我们可以看出分段函数的值域在0到2之间 (2)用matlab 绘图功能求函数最大值和最小值。。
例2.求函数2215)9(x x y +-=的在定义域【-100,100】内的最大值和最小值。 用matlab 绘图解决这个问题。 Matlab 程序:
x=-100:0.01:100; %坐标控制 y=(x-9).^3+6*x.^2+9*x.^2;
subplot(1,1,1); %选择在1×1个区域内的1号区域 plot(x,y,'b') %绘制函数曲线
运行结果如图所示:
-100
-80-60-40-20020406080100
-1.5-1
-0.5
0.5
1x 10
6
图3 求函数2
2
15)9(x x y +-=最大值和最小值的曲线
由图我们可以看出函数2215)9(x x y +-=在定义域内单调递增,所以其最大值和最小值分别在端点处取得,我们只需将端点值带入即可。 得:
Ymax=903571 Ymin=-1445029
在计算时我们可以利用matlab 程序算出结果,这里只用绘图功能。 如果用计算的方法我们还得先计算函数的导数,然后求极值点,在根据具体计算来判断,很麻烦,用matlab 绘制出函数图形问题一目了然。
(3) 用matlab 绘图功能求函数周期性和函数连续性。
例3.求函数y=3
)
cos(2
x 的周期并且判断函数的连续性
首先对于这样一个函数我们很难用手工画出其图形来。下面我们用matlab 来绘制函数图形。 程序如下:
x=0:pi/100:2*pi; y=(cos(x).^2)/3;
plot(x,y)
运行结果如图所示:
01234567
0.05
0.1
0.15
0.2
0.25
0.3
0.35
图4 y=
3
)
cos(2
x 的曲线
用matlab 编辑的函数很简单,就三句语句,我们就可以很容易的得到函数曲线,此函数在定义域内是连续的周期为2π.
例4。试比较正弦函数和余弦函数的共同点和不同点。 用matlab 作图
程序如下:
x=-3*pi:pi/100:3*pi; %坐标范围设置 y1=sin(x); y2=cos(x);
plot(x,y1,'k:',x,y2,'b-') %绘制函数
axis([0,9,-5,5]) %设置坐标轴
text(1.4,0.3,'cos(x)'); %在指定位置添加说明 text(2.8,0.5,'sin(x)');
legend('sin(x)','cos(x)'); %加图例
运行结果:
1
2
3
4
5
6
7
8
9
-5-4-3-2-1012345cos(x)
sin(x)
sin(x)cos(x)
图5 )cos(),sin(x y x y -=的曲线
Matlab 绘图功能可以在同一个坐标系内绘制不同的函数图像,这样在一个坐标系内不同函数表现的相同点不同点就会一目了然。 (4)求函数间断点
例5.以下程序是一个分段函数的绘图程序
x=-10:0.1:1; y=x.^3;
plot(x,y,'-g'); %绘制函数曲线 x=1:0.1:4; y=x.^2;
hold on %设置图形保持状态 plot(x,y,'-r'); %绘制函数曲线 x=4:0.1:10; y=2.^x;
plot(x,y,'-b'); %绘制函数曲线
-10
-8-6-4-20246810
-1000
-500
500
1000
1500
图6 分段函数曲线
由图我们可以看出函数是连续的没有间断点
(5)用matlab 绘图功能求函数单调性﹑极值点﹑拐点。
例6.求函数3x y 的单调区间,极值及拐点。 用计算的方法解: ①求单调区间 设f(
3
x
x 1>x 2>0,f(x 1)>f(x 2)>0.
则f(x 1)-f(x 2)
=x 13
-x 23
=(x 12
-x 22
)(x 12
+x 1x 2+x 22
)
因为x 1>x 2>0所以x 12-x 22>0.x 12+x 1x 2+x 22>0 所以f(x 1)-f(x 2)>0,x 1=x 2=0, f(x)=0。 所以在x>0时f(x)>0
函数y=x 3单调递增,同理可得y=x 3在x<0内也单调递增。 综上可得,y=x 3在整个定义域内单调递增。 ②求极值及拐点
Y ′=3x 2
令y ′=0,得出:x 1=x 2=0.
y ′>0,
所以函数没有极值点。
凹凸区间和拐点的问题就不在这计算了。
由上面计算过程可以看出计算法求函数的单调区间,极值点很麻烦,如果我们可以绘制处y=x 3和导数Y ′=3x 2的函数图像,就可以很直观的看出函数在其定义域内的性质。
下面我们用matlab 绘制二维函数曲线来解决这个问题。 Matlab 程序:
x=-10:0.01:10; %给出坐标取值区间 y1=x.^3-; %第一个曲线
y2=(3*x).^2; %函数一阶导数的曲线 y3=6*x; %函数二阶导数的曲线
plot(x,y1,x,y2,x,y3) %在同一个坐标内绘制原函数,一阶导数,二阶导数曲线
运行结果如图所示:
-10
-8
-6
-4
-2
2
4
6
8
10
-1000
-800-600-400-20002004006008001000
图7 求函数单调性的函数曲线
图中蓝线是原函数y=x 3
的曲线,由此图形我们可以看出函数在其定义域内是单调递
增的趋势。
图中绿线是导数Y ′=3x 2
的曲线,我们可以根据其在定义域内函数值的大小来判断原函数的单调性,我们知道如果函数一阶导数大于0,责其在此定义域内单调递增,相反如果一阶导数小于0则函数在此定义域内单调递减,由图中一阶导数曲线可以看出,此函数一阶导数在整个定义域内函数值都大于0,所以原函数y=x 3在其定义域内单调递增。
(6)用matlab 绘图功能还可以解决函数奇偶型,对称性等。 三、结论
1.通过比较用计算的方法和用matlab 绘图解决数学函数分析的问题发现,传统的计算方法在解决函数分析时很复杂,也很麻烦,我们也希望可以用手工绘图来解决问题,但是用手工画图,图形本身是由表达式给出的,简单一点的还可以但是复杂一点的例如:
logx 3
x
类似这样的函数,常常越出我们的想象,根本不知其形。还有一些因为绘图能力
不及,难以描绘。所以手工绘图也会有很多麻烦。我们在面对这些问题时,无疑选择matlab 绘图时最简单的。
2.matlab 的图形功能时多样化的,我们可以很简单的通过改变程序参数就可以改变图形的格式,直到达到自己所需要的形状为止。通过matlab 绘图,我们也可以对坐标进行控制,可以在同一个坐标系内绘制不同的函数图像,这样有利于比较函数的性质,同时在分析问题上又进以步带来了方便。
3.利用matlab 语言我们在求解函数问题时不止可以画图,matlab 里的好多函数都可以进行数值计算,我们只需编辑相应的程序,就可以计算出结果,同时可以达到数形结合的效果使问题更简单化。
4.matlab 语言的功能是多样话的,在我们解决数学问题时,方法都不是唯一确定的,通过自己对matlab 的掌握程度,用户可以选择适合自己的简单的方法去解决问题呢。总
而言之,在数学函数分析的问题上,利用matlab语言绘制图形就是最简单最具有可视化的方法,matlab绘图及其它功能将在数学教学上有很大帮助作用。
四、课程体会
通过一学期学习matlab语言发现matlab语言博大精深,我们不可能全部学会,因为它是在不断开发不断更新的,但是就matlab任何一方面内容来说,只要掌握一些都会有很大用途,就像本论文中涉及到的绘图功能,因为我对matlab绘图方面了解也不是特别深,所以引出的用途可能也不够到位,但是就我学到的这些已经很奇妙了用途也很大了,尤其在数学教学方面会起到很大作用。而这次的论文写作过程中通过自己找资料重新学习matlab有关绘图方面的知识发现,matlab在绘图方面功能很强大也很神奇,不仅可以绘制平面图形还可以绘制立体图形,同样可以依据你的要求画出点状分布,直方图等,你能想到的都可以满足。在图书管找资料过程中发现matlab绘图功能已经广泛的应用与数学试验方面,尤其平时很让人头痛的函数积分问题,用matlab会出立体图形更让人感觉到奇妙。以后自己要好好学学matlab语言。
【参考文献】
【1】刘卫国. Matlab程序设计与应用(第二版)[M].北京:高等教育出版社,2006 【2】同济大学.高等数学上册(第六版)[M].北京:高等教育出版社,2007年4月.
【3】李尚志等.数学实验(第二版)高等教育出版社。2008年2月
【4】周晓阳.数学实验与Matlab(第一版)华中科技大学出版社.2005年8月
【5】www.cnki.net“用Matlab解决数学图形问题”.宁夏大学计算机学院.