MatlabRa基础教程Word格式文档下载.docx
- 文档编号:17817542
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:46
- 大小:1.08MB
MatlabRa基础教程Word格式文档下载.docx
《MatlabRa基础教程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MatlabRa基础教程Word格式文档下载.docx(46页珍藏版)》请在冰豆网上搜索。
“猎狗追兔”问题有很多种版本,这里取一种:
如下图所示,有一只猎狗在B点位置,发现了一只兔子在正东北方距离它250m的地方O处,此时兔子开始以8m/s的速度正向正西北方向,距离为150m的洞口A全速跑去。
假设猎狗在追赶兔子的时候,始终朝着兔子的方向全速奔跑。
请回答下面的问题:
(1)猎狗能追上兔子的最小速度是多少?
(2)在猎狗能追上兔子的情况下,猎狗跑过的路程是少?
(3)假设猎狗在追赶过程中,当猎狗与兔子之间的距离为30m时,兔子由于害怕导致奔跑速度每秒减半,而狗却由于兴奋奔跑速度每秒增加0.1倍,在这种情况下回答前面两个问题。
题目暂且就先放在这里,接下来我们就开始MATLABR2014a的基础教程学习。
三、基本操作
这部分,基本的函数和编程是主要的学习内容。
这里提一点,如果你有点编程基础,编程部分扫一扫就行。
OK,说了那么多,那我们开始吧。
1、认识界面与基本计算
首先,打开界面(至于软件哪里下,嘿嘿):
1是菜单栏与工具栏,和其它软件的功能差不多;
2是当前文件夹,可以在这选取需要的文档;
3是工作区,显示细节;
4是命令行窗口,这是我们主要的工作区间。
页面中各选项的详细功能,一方面同其它软件并没有太大区别,另一方面我们结合着例题来讲。
图3.1MATLAB主界面
每个软件都有自己的输入语言,就是你想让软件做什么,那么你得先对软件做点什么。
比如QQ里的操作,打开QQ就点企鹅,聊天就打字,享受特权就充值,红钻、黄钻、绿钻、紫钻……但我们一开始就知道MATLAB不是一款平民化的软件,虽然它很亲民,所以我们在真正进入这扇大门内之前,先要有一定的基础知识,那就是学习MATLAB的语言,指导软件按照自己的想法操作进行。
因为软件是M开头,所以一般大家称为M语言(不是微软公司的那个,那个好像没什么消息了),这里先举n个例子:
1|、在命令行窗口中输入1+1(看见>
>
这个符号没,就在这后面,输入法改成英文,这里的运算符号应为半角),然后回车就得到下面的图了,ans即answer的意思,这是最简单的计算,你可以理解为我们常用的计算器(这里介绍个小贴士,在按下回车运行完程序后,再输入“clc”回车,看看有什么效果。
哈哈,这个以后会经常用到,也可以在命令行窗口的右上角的倒三角中选择“清空命令行窗口”);
2、接下来看看加减乘除幂,分别为+、-、*、/、\,^,两个都是除号,一个是左除,一个是右除,比如6÷
3,可以写成6/3,也可以写成3\6,看看下面的例子[25-8×
(3+1)]÷
4,自己动手试试;
3、接着我们看看正弦余弦函数,注意这里的角度要化为弧度,sin30°
应该写成sin(30*pi/180),这里pi指代π,看图中的例子tan45°
+sin60°
;
4、最后说一下sqrt(x)和exp(x)这两种算法,其实它们叫做函数更准确,意思分别指对x开方与自然常数e的指数函数,如下:
图3.2基本运算例子
至此,我们学会了MATLAB最基础的加减乘除幂等运算,多练练手,就熟悉了。
其它的运算法则这里就不特别介绍了,碰上了我再讲讲,大家若需要,可以网上搜其使用方法。
2、m文件与常见指令
正在操作的你可能会遇见下面的一个问题,按下回车键后,我们是不能修改我们已经输入过的式子,大家可能认为输错了就直接“clc”,但以后我们写的程序不说成千上万,十几句、几十句是有的,学过二级的都应该有体会,中间一步错了,难道都得推倒重来吗?
大家可以试试下面的例子:
a=1,b=a+1,那么b=2。
在第二张图里,即使没按回车键,我们依然不能修改a=2这个手误。
所以在这里,我们要学会另一项重要的技能,那就是m文件。
呼呼,XX一下,好多,我挑个简单点的给大家讲讲。
工欲善其事,必先利其器,所以,关于M语言的学习我们先停一下。
图3.3错误示例
所谓m文件,就是用MATLAB语言编写的、可以在MATLAB中运行的程序。
它是以普通文本格式存放的,故可以用任何文本编辑软件进行编辑。
MATLAB提供的m文件编辑器就是程序编辑器。
m文件有两种形式,一种称为命令文件(ScriptFile),另一种称为函数文件(FunctionFile),两种文件的扩展名都是m,这个咱先不用区分,我们现在先只用ScriptFile,即脚本文件。
挑明了,咱在命令行窗口写东西不能随意修改,那咱就在别的可以修改的位置写,这位置可以在其它软件上,当然MATLAB也自行提供了相应的编辑功能,写完后导入到小M中运行,不行再回去改呗。
那么我们来看看,如何使用m文件。
新建:
主页->
新建脚本,这时会出现一个标题为“Untitled”的编辑器页面,我们可以在这个窗口书写我们的命令,接着在工具栏里面找到“运行”,此时软件会提示你先保存,你就重新命个名再保存,接下来就可以运行了。
当然运行这部分是在命令行窗进行的,如果发现什么不对,可以马上回编辑器里面修改,然后再继续运行。
上面的例子,大家都可试着用这种方式操作。
图4.4m文件说明
每个软件都会有自己常用的一些命令,熟练地掌握这些命令能大大提高我们的工作质量,所以在这里说明一下MATLAB中常用的几个命令:
clc:
clearall:
closeall
help+
doc+
3、变量与赋值
好了,我们继续来学习M语言,这次看看最基础的变量与赋值。
我们知道,如果只是单纯地进行数值计算,其实小M在我们手中和一个计算器也没什么差别,所以,我们要学点更高级的,这里就从变量与赋值入手。
什么是变量,这里注意它有两个属性,变量名与变量值,你定义一个变量名,比如a,“a”是一个变量名字,但它的意思肯定不是作字母a来使用,我们要将一些数值赋予它,比如a=3,那么这个过程就是对变量的赋值,3也就成为了a的变量值,然后我们接着赋值a=5,a此时就不是3而是5。
就像一个饮料瓶,你可以向里面装可乐,也可以装雪碧,但一次只能装一种,想装什么的时候就赋值去吧。
当然,这只是最基础的赋值,不过其它的赋值道理也一样。
这里提一下,变量名的取法有一定的规则:
(1)变量名对大小写敏感;
(2)变量名的第一个字符必须为英文字母,其长度不能超过31个字符;
(3)变量名可以包含下连字符、数字,但不能包含空格符、标点;
(4)变量名不能使用MATLAB系统预定义的变量,例如ans、inf(无限大)、i、j(虚数单位)等。
文中提到的部分资料我会汇成一个文件,私信新浪微博:
4麦儿,就可以了。
这里大家可以自己试着做些操作,因为比较容易理解,就不一一截图了:
1、>
a=3+4
2、>
a=1;
b=a+1
这里注意一点,就是“;
”这个分号,我们书写换行时,一般都是要打上一个。
下面是我找的一张MATLAB中标点符号的一览表,大家需要时就瞅瞅。
图4.5MATLAB标点符号一览表
上面是简单的字母赋值,我们知道MATLAB这个名字是由MATrix和LABoratory(矩阵实验室)组成的,所以再高级一点的我们就要学习向量(数组)以及矩阵的定义了,其实向量感觉上就是一维矩阵。
我们先做个最简单的例子,定义一个[12345]这个向量,有两种写法:
x=[1,2,3,4,5]或者是x=[12345],其实就是一个用逗号一个空格,推荐用逗号,以后熟练了再按自己的偏好。
这个是行向量,那列向量呢?
还是两种方法,我们知道一般换行后要用到分号,所以列向量应该是x=[1;
2;
3;
4;
5],或者是x=[12345]这里为了方便,用空格代表换行键,所以很明显,第一种方法较简单。
然而事实是,当我们学习过转置矩阵后,x=[1,2,3,4,5]’这个是不是觉得很nice啊。
这里介绍的方法称为直接输入法,其实对于特殊(虽然特殊,但很常见)的向量,我们还有其它的定义法,但根据本文的宗旨,不要一次学太杂,由简到难的学习,所以这里只能先卖个关子,该它上场的时候就会出现了。
说了向量,其实就是一维矩阵,那我们定义矩阵就很容易了。
矩阵是一个m行×
n列的元素矩形列阵,其中的元素可以是数字、符号或者是数学式,举个例子x=[1,2,3;
4,5,6;
7,8,9],这里还是注意一下逗号和分号,他们的用法同上,同样逗号也可以用空格代替,下面是截图。
有的人可能要问了,为什么最后一个没打“;
”,这是因为我们按照顺序先有“[”,写完所有的才盖上“]”,当只有半个“[”时,不加;
换行是允许的。
下面介绍几个特殊的矩阵,ones矩阵,ones(n)是全1方阵,one(m,n)是m×
n的全1矩阵,同理zeros也是一样的。
当然,除了0和1,大家千万不要弄出什么twos之类的,别调皮,我试过,不行。
最后介绍一个单位矩阵eye(n),因为是单位矩阵,所以就是方阵啦,见下图。
好啦,至此,我相信大家应该基本上学会了怎么定义变量、向量以及矩阵了,下一节我们来学习一下向量与矩阵的运算,在草稿上你会运算它们吗?
会的话,告诉你,在M上运算更加简单。
4、向量及矩阵的运算
4.1向量的运算
下面是几个常见的向量运算公式,其实都是一些熟悉的面孔。
函数名称
说明
A+B
A加B
A-B
A减B
A.*B
A乘B
A./B
A左除B
A.\B
A右除B
A.^n
A的n方
sqrt(A)
A的平方
length(A)
显示向量A的长度
表3.4.1向量的常见函数
式子中A、B分别为某个向量,如A=[1,2,3,4,5],B=[6,7,8,9,10],我这里举个例子,其它的大家请自行操刀解牛:
A=[1,2,3,4,5];
B=[6,7,8,9,10];
A.*B
ans=
614243650
其实说白了,就是向量中对应元素的加减乘除,当然两个向量维度必须一致,不然,不然就不公平啊。
此刻,各位看官是否注意到一点,是的,你注意的是非常重要的一点,在M中,运算向量的乘除幂时,需要在运算符之前加个小点,为什么呢,这里说明一下:
图3.4.1错误说明
我们分析一下,软件提示“内部矩阵维度必须一致”,也就是说我们这里不管是向量(说白了就是一维行矩阵或列矩阵)还是矩阵,软件都按照矩阵的算法进行计算,那么a*b这种属于矩阵的算法明显就不适用于向量的乘法(应该是m×
n与n×
p这种类型),所以为了方便向量的这类运算,软件就开了个绿色通道,自制了一种运算符号,点乘。
4.2矩阵的运算
讲完了向量,再来看看矩阵,公式有很多,但都很容易上手,挑自己要用的,用多了就熟练了。
这里列一个表,方便大家理解。
C*B
常数C乘B
A*B
A^n
size(A)
显示矩阵A的维度
A(i,j)
显示矩阵第i行第j列的元素
A(i,:
)
显示矩阵第i行的所有元素
A(:
j)
显示矩阵第j列的所有元素
rot90(A,K)
矩阵A逆时针转置K个90°
fliplr(A)
左右翻转矩阵
flipud(A)
上下翻转矩阵
inv(A)
逆矩阵
pinv(A)
伪逆矩阵
det(A)
方阵行列式的值
rank(A)
矩阵的秩
trace(A)
矩阵的迹
eig(A)
矩阵的特征值
[V,D]=eig(A)
矩阵的特征值与特征向量
表3.4.2矩阵的常见函数
除此之外,还有诸如指数运算、对数运算以及n多矩阵分解的等等等等,以后碰见再说吧,反正现在学了不用很快也就忘了,先记牢几个基础的吧。
至此,我想大家应该学会了向量与矩阵几种常见计算,其实相比手算,已经简单了许多,只要勤加练习就能熟练掌握。
5、符号变量与微积分
对于微积分,我想大家都不会陌生,那年大一学高数,一个人默默地坐在最后一排,望着黑板……哼、哼,这里先结构上说一下我们这一讲的内容,如下:
1、符号变量;
2、求极限;
3、求导数;
4、求积分;
5、解微分方程。
好像就这么多吧,忘了,大概基本上就是全部的了,不是你打我。
5.1符号变量
好,我们开工。
那么第一个问题来了,微积分里面要先设定变量x和y等等,那是不是与上面的x=1的写法相同呢?
答案是否定的,我们这里的变量,你无法一开始就知道x是多少,所以这里需要换一种写法:
sym、syms。
这里面涉及到数值运算与符号运算的区别,有兴趣的可以自己了解一下。
看看符号变量的定义函数:
1、sym(‘x’):
一次定义一个符号变量;
2、symsabc…:
一次可以定义多个。
下面举几个简单例子:
sym(‘x’)
sym(‘x’);
y=x.^2+5(大家擦亮眼睛看看,这里有一个点,为什么呢?
是时候该给大家说一说另外两种定义向量的方法了)
这里用数组代替向量更生动、贴切一些。
我们之前讲过几种向量的定义方法,下面我们来看看另外两种方法:
(1)冒号生成法:
x=[2,4,6,8,10],这里写成x=2:
2:
10,2和10分别代表最大值与最小值,2是间距。
x=2:
10,这种写法里省去了间距,软件默认为1,如下图;
(2)线性等分法:
x=[2,4,6,8,10],也可以写成linspace(2,10,5),这里的2和10分别指的是最小值与最大值,5则是指将2到10均分成5个数字,见下图。
图3.4.2冒号生成法与线性等分法
说到这,我们提一下为什么要定义数组呢?
原来啊,我们在研究函数时,一般都会确定一个定义域,像上面的y=x2+5,我们一般会设定一个定义域,比如[2,10],这样我们就可以按照上面的几种方法设定了。
既然定义域是数组,那么在写程序时,就要记得要加点哦
3、>
symsabc;
f=sym(‘a+b+c’)
这里有多种写法,如:
symsfabc;
f=a+b+c
写法很多,大家根据习惯来哈。
5.2极限
符号变量的定义我们以后会经常遇到,在后面的例题中不断地去体会它。
现在我们开始学习极限的写法,这个比较简单,就只有几个公式:
1、
:
limit(f)。
这里软件默认函数f对x求其x趋向于0的极限;
2、
limit(f,x,a)、limit(f,a)。
还是默认对x;
3、
limit(f,x,+inf)。
对x趋向无穷求极限,负无穷为-inf;
4、
limit(f,x,a,’left’)。
这里的x不能省,ButIdon’tknowwhy;
5、
limit(f,x,a,’right’)。
同上。
下面是几个例子:
图3.4.3求极限
我相信,有人会问,咦,这里没有用点除啊,怎么也能出结果。
想一想,聪明的一休哥……
我们知道定义符号变量后,如果它是数组,那么就得加点,如果它不是数组,是向量呢?
目前我们没有在定义后接着写x=-1:
1,所以软件并不知道它是什么,因此这里加不加点都可以。
但一般情况下,对于函数,我们知道它的定义域是个数组,所以建议还是加个点。
5.3求导
关于极限的写法我们已经学完了,按照思路,现在到了求导了,还是只有几个公式:
1、diff(f):
f对默认变量x求一阶导;
2、diff(f,t):
f对给定变量t求一阶导;
3、diff(f,n):
f对默认变量x求n阶导;
4、diff(f,t,n):
f对给定变量t求n阶导。
下面是两个例子:
图3.4.4求导数
上面的例子虽然求了n阶偏导,但是求导的变量没有变,下面来看一个例子:
z=x3×
y4,求
symsxyz;
z=x^3*y^4;
diff(diff(z,x),y)(这里,其实就是一个嵌套连用)
求导这部分基本上也就没什么了,下面再看看求积分,当年积分比求导难几个档次,不过,在M中,差距就几秒钟。
5.4求积分
求积分有解析解(符号解)和数值解这两种方法,下面就一一道来。
解析解获得的解是一些严格的数值、符号、公式之类的,结果精度高;
数值解得到的答案是一个接近真实结果的数值。
这样说不好懂,上个例子:
x2=3,x=
就是一个解析解,而x=1.732则是数值解。
在实际情况下,有时并不能得到准确的解析解,这时就会采用数值解。
下面是符号解的基本写法:
1、int(f):
f对默认变量求积分;
2、int(f,t):
f对给定变量t求积分;
3、int(f,a,b):
f对默认变量在数值区间[a,b]上求积分;
4、int(f,t,a,b):
f对给定变量t在数值区间[a,b]上求积分;
5、int(f,‘m’,‘n’):
f对默认变量在符号区间[m,n]上求积分;
6、int(f,t,‘m’,‘n’):
f对给定变量t在符号区间[m,n]上求积分;
7、int(int(f)):
二重积分,也是一个嵌套结构。
下面看两个例子:
数值解的写法是这个式子:
integral(f,a,b):
其中f是函数句柄,a与b为积分范围。
什么是函数句柄,以前没听过啊,这里Bing一下:
f(x)=x2:
f=@(x)(x.^2)。
其中@(x)(x.^2)就是匿名函数,第一个括号里面是自变量,第二个括号里面是表达式,@是函数指针,f=@(x)(x.^2)表示将匿名函数@(x)(x.^2)赋值给f,于是f就表示该函数。
所以,f
(2)=2.^2=4,f(1:
3)=[1:
3].^2=[149]等等。
注意这里的点乘。
定义匿名函数时也可以调用别的匿名函数,比如:
f1=@(x,y)(x.^2+y.^2);
(定义了函数x2+y2)
f2=@(t)(f1(t,2))(定义了函数t2+4)
那么函数句柄有什么特别的用处呢?
网上找了下,两个,一个是提高运行速度,另一个是使用可以与变量一样方便,这个,额,以后慢慢体会吧。
我们还是来看例子吧,就三个例子,对应三种情况:
//此处应该有误。
f=@(x)3*x.^2+1;
integral(f,0,1)
2
呼呼,依葫芦画瓢就成。
(这里说明一下,就是分别求x+1、2x+1......5x+1的积分啦)
f=@(x)(1:
5)*x+1;
integral(f,0,1,'
ArrayValued'
true)(这个位置可能没看明白,这里用到了integral(f,a,b,Name,Value)这种写法,有兴趣大家可以了解一下)
1.50002.00002.50003.00003.5000
3、多重积分
二重积分:
integral2(f,xmin,xmax,ymin,ymax)
三重积分:
integral3(f,xmin,xmax,yxin,ymax,zmin,zmax)
再来个例子,我们关于积分的部分就学完啦:
f=@(x,y,z)x+y+z;
integral3(f,0,1,0,1,0,1)
1.5000
最后说了例子:
f=@(x)x+y;
结果却提示错误,说明integral不能对特定变量求积分,这只是我的猜测。
原因可能如前面所说的这是数值解,上例得到的结果含有参数,与本意不合,哈哈,纯属自己瞎蒙的。
5.5级数求和
级数理论是分析学的一个分支,它与另一个分支微积分学一起作为基础知识和工具出现在其余各分支中。
二者共同以极限为基本工具,分别从离散与连续两个方面,结合起来研究分析学的对象,即变量之间的依赖关系──函数。
(摘自搜狗百科)
所以这里插个队,说一下级数求和的两个公式:
1、symsum(expr,var):
expr是级数的表达通式,var是自变量,求和值默认为symsum(var+1)-symsum(var);
2、symsum(expr,var,a,b):
a、b是var的取值范围,求和值就为symsum(b)-symsum(a)。
长话短说,两个例子就能说明问题:
sym('
i'
);
symsum(i)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MatlabRa 基础教程