资源描述
《MATLAB语言》课程论文
利用MATLAB绘制二维函数图形
姓名:海燕
学号:12010245375
专业:通信工程
班级:通信一班
指导老师:汤全武
学院:物理电气信息学院
成日期:2011年12月5
利用MATLAB绘制二维函数图形
( 海燕 12010245375 2010级通信1班)
[摘要]大学高等数学中涉及许多复杂的函数求导绘图极值及其应用的问题,例如二维绘图,对其手工绘图因为根据函数的表达式的难易程度而不易绘制 ,而MATLAB语言正是处理这类的很好工具,既能简易的写出表达式,又能绘制有关曲线,非常方便实用。另外,利用其可减少工作量,节约时间,加深理解,同样可以培养应用能力 。本文将探讨利用matlab来解决高等数学中的二维图形问题,并对其中的初等函数、极坐标、 进行实例分析,对于这些很难用手工绘制的图形,利用matlab则很轻易地解决。
[关键词] 高等数学 一元函数 二元函数 MATLAB语言 图形绘制
一、问题的提出
MATLAB 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是最有活力的软件。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。中学数学中常见到的是二维平面图形,由于概念抽象,学生不好理解,致使学生对学习失去信心,导致学习兴趣转移。在传统的教学中,教师在黑板上应用教具做图,不能保证所做图形的准确性,曲线的光滑度不理想,教学过程显得枯燥无味,教学质量难以保证。Matlab是集数值计算、符号计算和图形可视化三大基本功能于一体的大型软件,广泛应用于科学研究、工程计算、动态仿真等领域。Matlab是一种集成了计算功能、符号运算、数据可视化等强大功能的数学工具软件。其代码的编写过程与数学推导过程的格式很接近,所以使编程更为直观和方便,应用于教学就更加容实现Matlab软件尤其在简单的绘图中有较强的编辑图形界面功能,在中学的数学教学中的抽象函数变得直观形象、容易实现,同时也激发学生的学习兴趣,学生通过数形结合,更好地理解题意 高等数学是一门十分抽象的学科,对于一些抽象的函数,我们可以借助于几何图形来理解,但这类图形的绘制往往很复杂,仅凭手工绘制也难以达到精确的效果,这时如果使用Matlab来解决所遇到的图形问题,则能达到事半功倍的效果。在高等数学领域中有关图形方面的应用,无论是初等函数图形、还是极坐标图形、统计图,对于Matlab而言都是完全可以胜任的。
下面结合实例从几个方面来阐述matlab在高等数学二维图形中的应用。
二、用matlab绘制一元函数图像
1.平面曲线的表示形式
对于平面曲线,常见的有三种表示形式,即以直角坐标方程,以参数方程,和以极坐标表示等三种形式。
2.曲线绘图的MATLAB命令
MATLAB中主要用plot,fplot二种命令绘制不同的曲线。
plot(x,y) 作出以数据(x(i),y(i))为节点的折线图,其中x,y为同维数的向量。
plot(x1,y1,x2,y2,…) 作出多组数据折线图
fplot(‘fun’,[a,b]) 作出函数fun在区间[a,b]上的函数图。
可以用help plot, help fplot查阅有关这些命令的详细信息
问题1 作出函数的图形,并观测它们的周期性。先作函数在上的图形,用MATLAB作图的程序代码为:
>>x=linspace(-4*pi,4*pi,300); %产生300维向量x
>>y=sin(x); %正玄函数
>>plot(x,y) %二维图形绘图命令
结果如图1所示
图1 的图形
此图也可用fplot命令,相应的MATLAB程序代码为:
>>clear; close; %clear清理内存;close关闭已有窗口。
>>fplot('sin(x)',[-4*pi,4*pi]) %绘制正玄图形
结果如图2所示
图2 的图形
如果在同一坐标系下作出两条曲线和在上的图形,相应的MATLAB程序代码为:
>>x=-2*pi:2*pi/30:2*pi; %产生向量x
>>y1=sin(x); y2=cos(x); %正余玄函数
>>plot(x,y1,x,y2,’:’) %’:’表示绘出的图形是点线
结果如图3所示其中实线是的图形,点线是的图形。
图3 的图形
问题2.将图3用不同的线型及颜色加以绘制。
>>x=-2*pi:2*pi/30:2*pi; %产生向量x
>>y1=sin(x); y2=cos(x); %正余玄函数
>>plot(x,y1,x,y2,’gp’) %’ gp’表示绘出的图形是绿色五角星线
结果如图4
图4不同线型与颜色绘制的正余玄图形
问题3 作出以极坐标方程表示的心脏线
相应的MATLAB程序代码为:
>>clear; close; %clear清理内存;close关闭已有窗口
>>t=0:2*pi/30:2*pi; % 产生向量
t>>r=1+cos(t); %极坐标方程
>>x=r.*cos(t); y=r.*sin(t); %极坐标转化为直角坐标
>>plot(x,y) %绘制x,y的图形
结果如图5所示
图5 脏线
三、用matlab绘制分段函数图像
在绘制图形的同时,可以对图形加上一些说明,如图形名称,坐标轴说明
以及某一部分的含义等,这些操作称为添加图形标注,下面就举例说明。
问题4 绘制分段函数曲线并添加图形标注
f(x)=sqrt(x) 时 0<=x<4 f(x)=2时4<=x<6 f(x)=5-2/x时6<=x<8 f(x)=1时x>=8
相应的MATLAB程序代码为:
X=linspace(0,10,100); %产生一个行向量X
Y=[]; %产生一个函数值
for x0=x %用循环语句判断函数值问题
if x0>=8 y=[y,1]; %条件语句
elseif x0>=6 y=[y,5-x0/2]; %条件语句
elseif x0>=4 y=[y,2]; %条件语句
elseif x0>=0 y=[y,sqrt(x0)]; %条件语句
end %结束语句
end %结束语句
plot(x,y) %绘制X,Y图形
axis([0 10 2.5]) %设置坐标轴
title(’分段函数曲线’); %加图形变体
xlabel(’variable X’); %加X轴说明
ylabel(‘variable Y’); %加Y轴说明
text(2,1.3,’y=x^{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’); %在指定位置添加图形说明
结果如图6所示
图6 一元分段函数图
四 用matlab绘制二维隐函数图形
function implot(fun,rangexy,ngrid) %二维隐函数绘图
%输入参数说-fun 函数句柄,可以是匿名、inline和M函数该函数就是调用了contour()函数,绘制隐函数在xoy平面上的等高线,就得到了二维隐函数的图像-rangexy=[xmin xmax ymin ymax] 绘图范围,默认[-2*pi 2*] -ngrid 绘图时计算的点数,初值是20,然后逐步加细,默认50。
五.用matlab绘制二元函数图像
1.曲面绘图的MATLAB命令
MATLAB中主要用mesh,surf命令绘制二元函数图形。
mesh(x,y,z) 画网格曲面,这里x,y,z是三个数据矩阵,分别表示数据点的横坐标,纵坐标和函数值,该命令将数据点在空间中描出,并连成网格。
surf(x,y,z) 画完整曲面,这里x,y,z是三个数据矩阵,分别表示数据点的横坐标,纵坐标和函数值,该命令将数据点所表示曲面画出。
问题5画出函数的二维等高线图形,不妨将区域限制在。
则用 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
>> contour(X,Y,Z,10) %画10条等高线
>>xlabel('X-axis'),ylabel('Y-axis')%两个坐标轴标记
>>title('Contour of Surface') %标题
>>grid on %画网格线
结果如图7所示
1
图7 等高线
如果要画的等高线,则用命令
>>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
>> contour(X,Y,Z,[1 1]) %画 z=1时的等高线
结果如图8所示
图8 z=1时的等高线
五、结论
从以上利用MATLAB语言对3种基本函数的二维图形的绘制的分析我们不难得出以下结论:
二维图形的绘制是其他回吐操作的基础。
在matlab中,最基本且应用最为广泛的绘图函数为plot函数,利用它可以在二维平面上绘制出不同的曲线。Plot函数用于绘制xy平面上的线性坐标曲线图需要提供一组x坐标及其各点对应的y坐标,这样就可以绘制出分别以x,y为横纵坐标的二维曲线。
Matlab还提供了一些绘图选项,用于确定所绘曲线的线性,颜色和数据点标记符号,它们可以组合使用。数据点可以用向量或矩阵的形式给出,类型可以是实型或复型,在取数据点时一般都是等间隔采样,这对绘制高频率变化的函数不够精确,为提高精度,绘制出比较真实的函数曲线,就不能等间隔取样,而必须在变化率大的区段密集采样,以充分反映函数的变化规律,进而提高图形的真实性。Fplot函数可自适应的对函数进行采样能更好地反映函数变化规律。在matlab中如果需要绘制出具有不同坐标标度的两个图形,可以使用plotyy函数。这种图形能把函数值具有不同量纲,不同数量级的两个函数绘制在同一坐标中,有利于图形数据的对比分析。
绘制完图形后,可能还需要对图形进行一些辅助操作,以使图形意义更加明确,可读性更强。在绘制图形的同时,可以对图形加上一些说明,如图形名称,坐标轴说明以及图形某一部分的含义等。其中。Title和xlabel,ylebel函数分别说明图形和坐标轴的名称。Text函数是在(x,y)坐标处添加图形说明,添加文本说明也可以用gtext命令。
在绘制图形时,matlab可以自动根据要绘制曲线的范围选择合适的坐标刻度,使得曲线能够尽可能清晰的显示出来。所以在一般情况下用户不必选择坐标轴的刻度范围。但是如果用户对坐标系不满意,可利用axis函数对其重新设定。一般情况下,每执行一次绘图命令,就刷新一次当前图形窗口,图形窗口原有图形将不复存在,若希望在已经存在的图形上再继续添加新的图形,可使用图形保持命令hold。Hold on/off命令控制是保持原有图像还是刷新原有图形,不带参数的hold命令在两种状态之间转换。
MATLAB提供了一系列的绘图函数 ,用户不需过多的考虑绘图细节,只需给出一些基本参数就能得到所需图形 。这一类函数成为高层绘图函数,MATLAB还提供了直接对图形句柄进行操作的底层绘图函数。高层绘图操作简单明了,方便高效,使用户最常用的绘图方法,而底层绘图操作控制和表现图形的能力更强为用户更加自主地绘制图形创作了条件。
六、课程体会
经过一学期紧张而有序的课程学习,在忙碌之余也得到了颇多的收获。我深深体会到MATLAB语言相对于同类程序语言更方便更简洁易懂,这是我在学习的过程中的一些技巧:
1,如果你要是不是计算机转业的,只是为了方便自己的工作或学习,那么你没有必要把matlab教程全部学会,只需要学你需要的那部分即可,比如,绘图,矩阵运算,等等,根据你个人的需要而定,但是基本命令、数据类型、基本的程序结构(条件语句,循环语句,嵌套)、文件的IO是必须看的,因为任何一个程序都需要这几个基本的块。
2,你最好找一个熟悉编程的人来辅助你的学习,这就包括很多编程的技巧问题,程序的结构设计问题,对于程序的运行效率非常有帮助。有的时候,你编出来的程序,能够运行,但是耗时太长,也就是说你的程序没有错,但是不适合实际。或者说,对于规模小的问题能够解决,但是规模大一点的问题就需要很长很长的时间,这就需要对程序的结构和算法问题进行改进(亲身体会,编完一个程序,小的例子可以运行出结果,但是大例子需要很长时间,所以必须要改进一下)。
3,你需要找一本matlab的函数工具词典,就像汉语词典一样,你要尽量多的熟悉matlab自带的函数,及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数(如vb中,大部分的函数都需要自己编)。这一点对你的程序非常有帮助,可以使你的程序简单,运行效率高,可以节省很多时间(亲身体会)。切记!!!
4,你把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充(这一条是别人教我的,很管用),编程是一点一点积累的,所以你要需做一些随手笔记什么的。
5,编程问题最头疼的不是编程序,而是调程序,所以在你的程序编完之后,一定要进行验证其正确性,你要尽量多的设想你的问题的复杂性,当然,要一步一步复杂,这样才能保证你的程序的适用性很强。
6,对提高matlab编程能力的方法,我想主要有以下三个:
(1). 查help
(2 )多上上论坛,搜索帖子、发帖子问人
(3.) 阅读别人、特别是牛人的程序
当然了,正如所有的程序语言一样,“3分课本7分上机”,一定要动手才行,不能光看多想、多思考、多尝试,才是正路。最后,整理一下常用的快捷键(用【】表示)或命令: 1. 在命令窗口(Command Window)中:
1) 【上、下键】――切换到之前、之后的命令,可以重复按多次来达到你想要的命令
2) clc――清除命令窗口显示的语句,此命令并不清空当前工作区的变量,仅仅是把屏幕上显示出来的语句清除掉
3) clear――这个才是清空当前工作区的变量命令,常用语句clear all来完成
4) 【Tab】键――(转自版友心灯),在command窗口,输入一个命令的前几个字符,然后按tab键,会弹出前面含这几个字符的所有命令,找到你要的命令,回车,就可以自动完成。目前讨论结果是:matlab6.5版本中,如果候选命令超过100个,则不显示。而在matlab7以后版本中,则没有这个限制,均可正常提示
5) 【Ctrl+C】(或【Ctrl+Break】)――(转自版友yangjin_ren)在matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。不过进行此操作的前提是能够激活切换到命令窗口才行,呵呵。
2. 在编辑器(Editor)中:
1) 【Tab】(或【Ctrl+]】)――增加缩进(对多行有效)
2) 【Ctrl+[】--减少缩进(对多行有效)
3) 【Ctrl+I】--自动缩进(即自动排版,对多行有效)
4) 【Ctrl+R】――注释(对多行有效)
5) 【Ctrl+T】――去掉注释(对多行有效)
6) 【Ctrl+B】――括号配对检查(对版本6.5有效,但版本7.0无效,不知道是取消了还是换了另外的快捷键,请大牛们指点,其他版本没有测试过)
7) 【F12】――设置或取消断点
8) 【F5】――运行程序
[参考文献]
[1]刘卫国.MATLAB程序设计与应用(第二版)[M].北京:高等教育出版社,2006.
[2]刘志俭.MATLAB应用程序接口用户指南[M].北京:科学出版社,2000.
[3]赵楠. matlab在高等数学教学中的应用[J].天津职业院校联合学报,2007年02期
[4] 邱向群.多功能数学应用及软件—matlab.微型电脑应用[M].1994年02期
[5]崔秋珍王淑玉.几何图形在高等数学中的作用及在matlab下的实现[M].洛阳师范学院学报.2003年05期.
[6] 陈婀妍.用MATLAB绘制二维函数图形.[M].《时代人物》2008年03期
[7]飞思科技产品研发中心.MATLAB7基础与提高[M].北京:电子工业出版社.2005
[8]薛定宇.基于MATLAB/simulink的系统仿真技术与应用[M].北京:清华大学出版社,2002.
11
展开阅读全文