matlab作业

2024-11-11 版权声明 我要投稿

matlab作业(共6篇)

matlab作业 篇1

MATLAB概况与基本操作

1.选择题(每题2分,共20分):

(1)最初的MATLAB核心程序是采用D语言编写的。A.PASCAL B.C C.BASIC D.FORTRAN(2)即将于2011年9月发布的MATLAB新版本的编号为C。

A.MATLAB 2011Ra B.MATLAB 2011Rb C.MATLAB R2011b D.MATLAB R2011a(3)在默认设置中,MATLAB中的注释语句显示的颜色是B。A.黑色 B.绿色 C.红色 D.蓝色

(4)如果要以科学计数法显示15位有效数字,使用的命令是A。

A.format long e B.format long C.format long g D.format long d(5)在命令窗口新建变量a、b,如果只查看变量a的详细信息,使用的命令为A。A.whos a B.who a C.who D.whos(6)如果要清除工作空间的所有变量,使用的命令为C。A.clear B.clear all C.两者都可 D.两者都不可

(7)在创建变量时,如果不想立即在命令窗口中输出结果,可以在命令后加上B。A.冒号 B.分号 C.空格 D.逗号

(8)如果要重新执行以前输入的命令,可以使用D键。

A.下箭头↓ B.右箭头→ C.左箭头← D.上箭头↑

(9)如果要查询函数det的功能和用法,并显示在命令窗口,应使用命令C。A.doc B.lookfor C.help D.三者均可

(10)如果要启动Notebook文档,下列D操作是可行的。A.在命令窗口输入notebook命令

B.在命令窗口输入notebook filename命令 C.在Word中启动M-book文档 D.三者均可

2.填空题(每空1分,共20分):

(1)MATLAB是matrix和laboratory两个单词前三个字母的组合,意为“矩阵实验室”,它的创始人是Cleve Moler和Jack Little。

(2)在MATLAB的默认设置中,关键字显示的字体为蓝色,命令、表达式、计算结果显示的字体为黑色,字符串显示的字体为褐红色,注释显示的字体为绿色,错误信息显示的字体为红色。

(3)在命令窗口中,输出结果显示为各行之间添加空行的命令为format loose,各行之间不添加空行的命令为format compact。

(4)在MATLAB中,各种标点符号的作用是不同的。例如,空格的作用是分隔数组每行各个元素,逗号的作用是分隔数组每行各个元素或函数的各个输入参数,分号的作用是作为不显示命令结果的命令行的结尾或分隔数组各列,冒号的作用是生成一维数组或表示数组全部元素,百分号的作用是引导一行注释,„的作用是连接相邻两行,感叹号的作用是调用操作系统命令。3.程序设计题(每题10分,共40分)

(1)以25m/s的初速度向正上方投球(g=9.8m/s2),计算到达最高点的时间tp以及球从出发点到最高点的距离hp。

解:根据物理学知识,物体上抛运动的速度与经过的时间之间的关系为vpv0gtp,因此所需要的时间为tpv0vpg。而到达最高点时的速度vp0,因此可根据此公式求出tp:

v0=25;g=9.8;vp=0;tp=(v0-vp)/g

tp = 2.5510 而到达最高点所走过的距离为hpv0tp12gtp,因此有 2hp=v0*tp-1/2*g*tp^2

hp = 31.8878

(2)假设建造一个半球形的圆屋顶,其外半径为50英尺,固体混凝土墙的厚度为9英寸,计算出需要的水泥体积大小v。

解:首先将英寸转换为英尺: ft=1;in=0.0833*ft;

屋顶的体积为两个半球体积之差: R=50;t=9*in;r=R-t;V=2*pi*(R^3-r^3)

V = 3.4802e+004

(3)一架喷气式飞机以600英里的时速在距离水平面100英尺的高度飞行,如果地面陡然以4°的坡度升高,计算出多少时间(tx)之前为了避免飞机撞向地面飞行员就必须提升机头? 解:首先应该注意将英里转换为英尺: ft=1;li=5280*ft

li = 5280

其次,要使飞机不撞向地面,那么飞机应该在地面的高度小于100英尺之前就提升机头,而飞机在达到该点时走过的距离应该为 L=100*tand(4)

L = 6.9927

飞机的速度(以英尺/秒表示)v=li/3600

v = 1.4667

因此飞机需要的时间为 tx=L/v

tx = 4.7677

(4)一周的辛苦工作之后,Kirk开车到Helen,Georgia做一次漂流旅行(去消暑),他从家出发行驶200英里前往Timbuktu,然后向右转,向东行驶400英里到达Helen。编写一脚本计算Kirk家到Helen的直线距离d的大小。

解:建立直角坐标系,以Kirk家为坐标原点,向北为+y方向,向东为+x方向,则Helen的坐标为 x=400;y=200;

因此Kirk家到Helen的直线距离为 d=sqrt(x^2+y^2)

d = 447.2136

4.实践操作题(每题10分,共20分)(1)先建立自己的工作目录,再将自己的工作目录设置到MATLAB搜索路径下。请写出操作步骤或用Matlab命令实现。用help命令能查询到自己的工作目录吗? 解:步骤如下:

1.先在硬盘上建立一个工作文件夹,如:c:mywork。

2.在matlab的文件菜单中选择Set Path„菜单项,则打开一个对话框如图1所示。

图1 Set Path对话框

3.点击Add Folder„按钮,弹出一个新的对话框如图2所示。

图2 Add Folder to Path对话框

4.在该对话框中找到c:mywork文件夹(图3),点击确定按钮,对话框关闭,回到图1中的对话框,此时在该对话框中的MATLAB search path列表中出现了c:mywork文件夹(图4)。

图3 添加c:mywork文件夹

图4 保存设置路径

5.点击Save按钮,保存所设置的搜索路径,然后点击Close按钮关闭对话框。注意,一定要先Save再Close,不然搜索路径就没有设置成功。

(2)利用MATLAB的帮助功能查询inv函数的功能及用法,并将显示的英文信息翻译为中文。help inv

INV Matrix inverse.INV(X)is the inverse of the square matrix X.A warning message is printed if X is badly scaled or nearly singular.See also SLASH, PINV, COND, CONDEST, LSQNONNEG, LSCOV.Overloaded functions or methods(ones with the same name in other directories)help gf/inv.m help lti/inv.m help idmodel/inv.m help uss/inv.m help umat/inv.m help ufrd/inv.m help ndlft/inv.m help atom/inv.m help sym/inv.m

Reference page in Help browser doc inv 翻译为英文: INV:矩阵求逆

INV(X)是方阵X的逆矩阵。

如果X是坏条件数的或者接近奇异的,则会在命令窗口打印一条警告信息。

MATLAB学习感想 篇2

环科141 邢碧枞

在科技飞速发展的今天,各行各业都离不开计算机的使用,而作为以科研为主的环境科学,更是离不开对计算机及软件的学习。在这几周的课上,我们分别学习了文献管理工具EndNote 和编程软件MATLAB。

EndNote软件SCI公司的官方软件,同样也是写论文时必不可少的软件。作为文献管理软件,EndNote可以连接上千个数据库,并提供通用的检索方式,而且它能管理的数据库没有上限,可管理数十万条参考文献。在写论文时,文献可通过手动添加,在线搜索,格式转换,网站输出四个方式导入到EndNote中,而导入到EndNote中的文献可通过快捷工具插入到Word中,省去了文献排版的时间,而且极大地提高了效率。另外,EndNote支持外文文献的检索与管理。在谷歌,万方,中知网等很多网站上都支持EndNote的导出。在管理时,EndNote可修改书目信息,并进行分组,分类管理,还可恢复误删条目;另外,改变条目格式也非常便捷。

但在使用EndNote时,通常也会有一些注意事项。首先,EndNote没有中文版,所以在一开始使用时,会比较别扭,经常找不到按钮;其次,EndNote是依靠DOI编码识别,所以,没有DOI编码的文件无发插入。

MATLAB作为一款具有强大数学计算能力与图形处理能力的编程软件,深受数学、化学等领域科研人员的热爱。所以,作为环境科学专业的一名大学生,应及时掌握最前言的编程软件MATLAB。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,MATLAB的最突出的特点就是简洁。

在学习了MATLAB之后,我觉得MATLAB就像是一系列工具的合集,不仅有着强大的计算能力和绘图能力,而且MATLAB的许多工具采用的都是图形交互页面,更加方便使用者使用。另外,我觉得MATLAB的另一个优点就是它的帮助功能。在命令窗口输入’help’和想查询的指令后,就可以得到软件提供的准确有效的帮助。我们重点学习了利用MATLAB,对数据进行极值,平均值等的计算和M文件的使用。在绘图中,我们重点学习了plot, mesh, surf, waterfall 等指令。

matlab学习心得 篇3

matlab学习心得

王信权 39172215 学习matlab是听说它是一个功能强大的数学软件,但是正被微积分的计算缠身,听说有一个高级的计算器当然高兴,以后可以偷懒了,当然现在不能偷懒。听说关于自动化的计算特别复杂,如果有一种软件能帮忙解题,那是一种极大的解脱,有益于缩短研究时间。目前我只知道有三种数学软件,都是国外的,没有国内的,差距挺大的。matlab学起来挺顺手的,比C语言简单。但是深入学习的时候却困难重重,因为很多知识都没有学习,就算知道那些函数,也没有什么用处。老师布置的作业难度大,写一篇实验,大一什么都不会,写一篇这种论文谈何容易。最多也就会一些数值计算、符号计算、简单绘图,根本不会什么实验。学习matlab体会最多的是这个软件的功能强大,好多数学题都被轻易的解出。但是有一点遗憾,不知是我不会用,还是它没个功能,已知空间的电荷分布,求空间的电场分布。其中电场分布是无法用函数表达式表示。我知道计算机肯定可以实现,但是这个软件能不能实现就不知道了,我看过许多资料,但是在这方面没有提到相关信息。

总之,这个软件功能强大,不知什么时候国内才有类似的软件。

MATLAB心得与体会 篇4

首先我想说的是,在理论方面,在学习MATLAB过程中,我感觉到它和c语言有许多相似之处,他有c语言的特征,但是比c语言编程计算更加简单,适合于复杂的数学运算。但是MATLAB跟其他语言也有着很大的不同。现在用的比较多的编程语言,除了MATLAB就应该是c、c++、VHDL,VB和Delphi也接触过,如果自己抱着“把其他语言的思想运用在MATLAB里面”的话,那么我想,即使程序运行不出错,也很难把握MATLAB的精髓,也就很难发挥MATLAB的作用了。

众所周知MATLAB是一个基于矩阵运算的软件,但是,真正在运用的时候,特别是在编程的时候,许多人往往没有注意到这个问题。在使用MATLAB时,受到了其他编程习惯的影响,特别是经常使用的C语言。因此,在MATLAB编程时,for循环(包括while循环)到处都是。.这不仅是没有发挥MATLAB所长,还浪费了宝贵的时间。我这里想说的一点是,往往在初始化矩阵的时候注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C++、C的思想。

MATLAB博大精深,涉及的内容很多,所以,我认为不要试图掌握MATLAB的每一个功能,熟悉和你专业最相关的部分就可以了,这也是老师在课堂上经常说的。学MATLAB并不难,难的是学会怎么用,所以经常上机实践是很必要的。我自己感觉学习MATLAB和以前的编程能力没有太多的关系,所以不要担心自己编程能力差,自己一定用不好MATLAB,只要自己肯在这上面花费时间和精力,就一定能有所收获。在学习MATLAB的过程中,不要只问不学,并且学MATLAB要有耐心,要大胆的去试,哪怕只有一丁点儿可能,只有自己动手去实践了才能发现错误的所在,利用这个解决问题的方法要试着解决类似的问题,要举一反三,要学会变通。多读MATLAB高手写的程序,找到一个高手多向他请教这方面的问题,在几个大的论坛可以搜索出一大堆的帖子,然后慢慢去看吧,从中可以学到很多东西。善于总结,学习过的知识,看过好的经验介绍可以收藏起来,过段时间再复习一下,一段时间的积累,你会发现你的水平在慢慢提高

(这属于实践方面的体会)还有一点比较重要多用help,see also,lookfor,get, set 等常用命令,尽量摆脱c编程的习惯,总爱用循环,能不用的循环的尽量不用,掌握矢量化的精髓。(1)help: 最有效的命令。其实,可以这样说吧,一遇 到什么问题,通常可以从 help 中找到答案。就先说说对help的一些常用方法。

1)命令窗口直接敲“help”,你就可以得到本地机器上matlab的基本的帮助信息。

2)对于某些不是很明确的命令,只知道大体所属范围,譬如说某个工具箱,直接在

命令窗口中敲入 help toolboxname,一帮可以得到本工具箱有关的信息:版本号,函数名等。

3)知道函数名,直接用help funname就可以得到相应的帮助信息。

在用help命令的时候,可能因为我们开始估计的方向不一定完全正确,在列出的帮助信息中没有直接给出我们要找的东西,但是我们一定不要忽略了在帮助的最后列出的see also。譬如:曾经遇到一个画椭球的问题。刚开始我以为这个命令函数应该在graph3d中给出的。只用help的时候我们就可以看到matlabgraph3dGenerate ellipsoid。

(2)lookfor:可以说是 matlab中的google

当我们很多什么头绪都没有的时候,我们可以求助于它,往往会收到意想不到的效果。譬如:曾经在gui编程的时候,遇到过这样一个问题:想拖动鼠标时,要出现一个方框,就像你在桌面上拖动鼠标,会出现虚线框一样。当初我也刚开始一定都不知道该查找什么东西,后来想起用它了。于是,>> lookfor Rectangle。这样一条信息:GETRECT Select rectangle with mouse.get,set: GUI object 属性的帮手在GUI编程中,我们可能有时候想改变某些object的属性,或者想让它安装自己的想法实现,但是我们又不记得这些object的属性,更别提怎么设置他们的值了。这时,可以用 get(handles得到此对象的所有的属性及其当前值。用set(handles)可以得到对象所有可以设置的属性及其可能的取值找到我们需要的属性名字和可能的取值之后,就意义用 get(handles,‘propertyname’)取得此属性的值,用set(handles,‘propertyname’,values)设置此对象此属性的值。Edit: 查看m源文件的助手在应用matlab过程中,可能我们想看看它的m源文件,当然用editor定位打开也行,但是我经常采用的式直接在command窗口中用edit funname.m,就省去了定位的麻烦。

MATLAB实训小结 篇5

为期一周的MATLAB实训在学习与忙碌中度过了,时间虽短,但我们却真真切切的学到了知识,在现实工作中可以运用的知识。

在第一节课,我们便了解到MATLAB是世界上最流行的、应用最广泛的工程计算和仿真软件,它将计算、可视化和编程等功能同时集于一个易于开发的环境。MATLAB主要应用于数学计算、系统建模与仿真、数学分析与可视化、科学与工程绘图和用户界面设计等。对MATLAB的系统结构和特点等,老师也向我们做出了大致的讲解,同时,我们知道了MATLAB程序的一些最基本的应用和运算,并能够进行一些简单的编程。就这样,实训的第一天大家都在期待和兴奋中度过。

接下来的时间,主要是以大家自学和练习为主,老师进行辅导和考察。在学习过程中,不懂的可以相互之间小声的讨论,也可向老师请教,但必须确保自己真正学到了知识,认真的看书并进行编程练习。一天的学习接近尾声时,就是老师考察大家一天的收获的时候了,老师总会出一些小题目让大家编出它的程序,虽然有的题目对我们来说还是有些难度的,但是在老师的指点下我们还是编出程序的,当我们看到自己编的程序运行正确时,总是会万分的兴奋,充满成就感。

就这样,仅仅一个星期的实训就结束了,虽然不能十分熟悉和运用MATLAB的所有程序,但是我们却打下了一定的基础,在以后,当我们真正开始深入学习这门学问时,我们对它将不会再那么陌生,学起来也将轻松许多。这次实训为我们提供了一个很好的学习机会,唯一不足的就是时间有点短,我们不能在这段时间里学到更多的知识,因此,在这一周打下的基础上,我们需要用自己的努力去自学,以获取更多的知识。

MATLAB上机实验实验报告 篇6

一、实验目得 初步熟悉 MATLAB 工作环境,熟悉命令窗口,学会使用帮助窗口查找帮助信息。

命令窗口 二、实验内容(1)熟悉MATLAB平台得工作环境.(2)

熟悉MATLAB 得5 个工作窗口。

(3)MATLAB 得优先搜索顺序.三、实验步骤 1、熟悉MATLAB 得5 个基本窗口 ① mand Window(命令窗口)

② Workspace(工作空间窗口)

③ mand History(命令历史记录窗口)

④ Current Directory(当前目录窗口)

⑤ Help Window(帮助窗口)

(1)命令窗口(mand Window)。

在命令窗口中依次输入以下命令:

>〉x=1 〉> y=[1 2 3

4 5 68 9]; 〉> z1=[1:10],z2=[1:2:5]; >> w=linspace(1,10,10); >〉 t1=ones(3),t2=ones(1,3),t3=ones(3,1)〉〉 t4=ones(3),t4=eye(4)x =1 z1 =

9t1 =

t2 =

t3 =

1 t4 =

t4 =

0

0

0

0

0

0

0

0

0

0

0

思考题: ①

变量如何声明, , 变量名须遵守什么规则、就是否区分大小写。

答:(1)变量声明

1、局部变量 每个函数都有自己得局部变量,这些变量只能在定义它得函数内部使用。当函数运行时,局部变量保存在函数得工作空间中,一旦函数退出,这些局部变量将不复存在。

脚本(没有输入输出参数,由一系列MATLAB命令组成得M文件)没有单独得工作空间,只能共享调用者得工作空间。当从命令行调用,脚本变量存在基本工作空间中;当从函数调用,脚本变量存在函数空间中. 2、全局变量 在函数或基本工作空间内,用global声明得变量为全局变量。例如声明a为全局变量:

>〉global a 声明了全局变量得函数或基本工作空间,共享该全局变量,都可以给它曲赋值。

如果函数得子函数也要使用全局变量,也必须用global声明.3、永久变量 永久变量用persistent声明,只能在M文件函数中定义与使用,只允许声明它得函数存取.当声明它得函数退出时,MATLAB不会从内存中清除它,例如声明a为永久变量: 〉〉persistent a(2)变量命名规则如下: :

始于字母,由字母、数字或下划线组成;区分大小写;可任意长,但使用前N个字符.N与硬件有关,由函数namelengthmax返回,一般N=63; 不能使用关键字作为变量名(关键字在后面给出); 避免使用函数名作为变量名.如果变量采用函数名,该函数失效.(3)区分大小写

试说明分号、逗号、冒号得用法。

答:分号:加上分号“;“其作用就是将计算机结果存入内存,但不显示在屏幕上,反之,语句结尾若不加“;”,则表示在语句执行后,在将计算结果存入内存得同时,还将运算结果显示出来.逗号:分割列表

冒号:从什么到什么,比如1:10意思就是——1到10 ③ ③

l inspace())

称为“线性等分”函数, , 说明它得用法。可使用help命令,格式如下:

>>help linspace

数 说明函数 ones())、、zero s()、eye()得用法。

答;(1)ones()函数:全部元素都为 1 得常数矩阵;(2)zeros()函数:全部元素都为 0 得矩阵;(3)eye()函数:单位矩阵;

(4)linspace()函数:如 a=linspace(n1,n2,n3),表示在线性空

间上,行矢量得值从 n1 到 n2(2)工作空间窗口(Workspace). 单击工作空间窗口右上角得按钮,将其从MATLAB 主界面分离出来。

① 在工作空间查瞧各个变量,或在命令窗口用who, whos(注意大小写)查瞧各个 变量。

② 在工作空间双击变量,弹出Array Editor 窗口(数组编辑器窗口),即可修改变量。

③ 使用save 命令把工作空间得全部变量保存为my_var、mat 文件。

〉〉save my_var、mat

④ 输入下列命令: 〉〉clear all %清除工作空间得所有变量

观察工作空间得变量就是否被清空。使用load 命令把刚才保存得变量载入工作空间。

>〉load my_var、mat

⑤ 清除命令窗口命令: >〉clc(3)历史命令窗口(mand History)。

打开历史命令窗口,可以瞧到每次运行MATLAB 得时间与曾在命令窗口输入过得命 令,练习以下几种利用历史命令窗口重复执行输入过得命令得方法。

① 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Copy,然后再Paste 到命令窗口。

② 在历史命令窗口中双击要执行得一行命令,或者选中要重复执行得一行或几行命令 后,用鼠标将其拖动到命令窗口中执行。

③ 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Evaluate Selection,也可以执行。

④ 或者在命令窗口使用方向键得上下键得到以前输入得命令。例如,按方向键“↑” 一次,就重新将用户最后一次输入得命令调到MATLAB 提示符下。重复地按方向上键 “↑”,就会在每次按下得时候调用再往前一次输入得命令。类似地,按方向键“↓”得时 候,就往后调用一次输入得命令.按方向键“←“或者方向键“→”就会在提示符得命令 中左右移动光标,这样用户就可以用类似于在字处理软件中编辑文本得方法编辑这些命令。

(4)

当前目录命令窗口(Current Directory).MATLAB 得当前目录即就是系统默认得实施打开、装载、编辑与保存文件等操作时得文 件夹。打开当前目录窗口后,可以瞧到用“save”命令所保存得my_var、mat 文件就是保存在 目录C:MATLAB6p5work 下。

(5)帮助窗口(Help Window)。

单击工具栏得图标,或选择菜单View|Help,或选择菜单Help|MATLAB Help 都能 启动帮助窗口。

① 通过Index 选项卡查找log2()函数得用法,在Search index for 栏中输入需要查找得 词汇“log2”,在左下侧就列出与之最匹配得词汇条目,选择“log2[1]”,右侧得窗口就 会显示相应得内容。

② 也可以通过Search 选项卡查找log2()函数得用法.Search 选项卡与Index 选项卡 不同,Index 只在专用术语表中查找,而Search 搜索得就是整个HTML 帮助文件。

2、MATLAB 得数值显示格式设置 屏幕显示方式有紧凑(pact)与松散(Loose)两种,其中Loose 为默认方式.>〉a=ones(1,30)

〉>format pact

〉〉a 数字显示格式有short、long、short e、long e 等,请参照教材得列表练习一遍。

〉〉format long >>pi

〉〉format short >〉pi

〉>format long 〉〉pi

>>format + 〉〉pi

〉>—pi

3、变量得搜索顺序 在命令窗口中输入以下指令:

>>pi

〉>sin(pi);

>>exist(’pi”)

〉>pi=0;>〉exist(’pi“)

>〉pi

〉〉clear pi 〉>exist('pi’)>>pi

思考题:① 3 次执行exist(’pi’)得结果一样吗?如果不一样,试解释为什么? 答:不一样,pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为pi后来得值,但就是当执行clear pi之后所赋得值被清空,因此pi得值又成为3、1416 ② 圆周率 pi 就是系统得默认常量,为什么会被改变为 0? 答:pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为 pi 后来得值,但就是当执行 clear pi之后所赋得值被清空,因此 pi 得值又成为3、1416

实验二

MA TLAB语言基础 一、实验目得 基本掌握 MATLAB 向量、矩阵、数组得生成及其基本运算(区分数组运算与矩阵运算)、常用得数学函数。交接字符串得操作.二、实验内容(1)向量得生成与运算。

(2)矩阵得创建、引用与运算。

(3)

多维数组得创建及运算。

(4)字符串得操作。

三、实验步骤 1、向量得生成与运算 1)

向量得生成 直接输入法: A =

>〉 B=[1;2;3;4;5]

B =

5  冒号生成发:

〉〉 A=1:2:10 ,B=1:10,C=10:—1:1

A =

B =

C =

10

1  函数法:

Linspace()就是线性等分函数,logspace()就是对数等分函数。

>〉 A=linspace(1,10),B=linspace(1,30,10)A =

Columns 1 through 91、0000

1、0909

1、1818

1、2727

1、3636

1、4545

1、5455

1、6364

1、7273

Columns 10 through 181、8182

1、9091

2、0000

2、0909

2、1818

2、2727

2、3636

2、4545

2、5455

Columns 19 through 272、6364

2、7273

2、8182

2、9091

3、0000

3、0909

3、1818

3、2727

3、3636

Columns 28 through 36

3、4545

3、5455

3、6364

3、7273

3、8182

3、9091

4、0000

4、0909

4、1818

Columns 37 through 454、2727

4、3636

4、4545

4、5455

4、6364

4、7273

4、8182

4、9091

5、0000

Columns 46 through 545、0909

5、1818

5、2727

5、3636

5、4545

5、5455

5、6364

5、7273

5、8182

Columns 55 through 63

5、9091

6、0000

6、0909

6、1818

6、2727

6、3636

6、4545

6、5455

6、6364

Columns 64 through 72

6、7273

6、8182

6、9091

7、0000

7、0909

7、1818

7、2727

7、3636

7、4545

Columns 73 through 81

7、5455

7、6364

7、7273

7、8182

7、9091

8、0000

8、0909

8、1818

8、2727

Columns 82 through 908、3636

8、4545

8、5455

8、6364

8、7273

8、8182

8、9091

9、0000

9、0909

Columns 91 through 999、1818

9、2727

9、3636

9、4545

9、5455

9、6364

9、7273

9、8182

9、9091

Column 100

10、0000

B =

Columns 1 through 91、0000

4、2222

7、4444

10、666713、8889

17、1111

20、333323、555626、7778

Column 1030、0000 >> A=logspace(0,4,5)A =

10

100

1000

10000 练习:

使用 logspace()创建1—4得有 10 个元素得行向量。

答案:

>〉 A=logspace(1,10,4*pi)

A =1、0e+010 *

Columns 1 through 9

0、0000

0、0000

0、0000

0、0000

0、0000

0、0000

0、0001

0、0005

0、0035

Columns 10 through 120、0231

0、1520

1、0000 2)向量得运算 维数相同得行向量只见可以相加减,维数相同得列向量也可以相加减,标量可以与向量直接相乘除。

〉〉 A=[1 2 3 4 5],B=3:7,A =

B =

>〉 AT=A”,BT=B“, AT =

BT =

>〉 E1=A+B, E2=A-B

E1 =

10E2 =

—2

—2

—2

〉〉 F=AT—BT, F =

-2

—2

〉〉 G1=3*A, G2=B/3, G1 =

12

15

G2 =1、0000

1、3333

1、6667

2、0000

2、3333  向量得点积与叉积运算。

〉〉 A=ones(1,10);B=(1:10); BT=B”;>> E1=dot(A,B)

E1 =

55

〉〉 E2=A*BT

E2 =

〉〉 clear >> A=1:3,B=3:5,A =

B =

〉〉 E=cross(A,B)

E = -2

—2 2.矩阵得创建、引用与运算

1)矩阵得创建与引用

矩阵就是由元素构成得矩阵结构,行向量与列向量就是矩阵得特殊形式。

 直接输入法:

〉〉 A=[1 2 3;4 5 6]

A =

〉〉 B=[ 1 4 75 86 9 ] B =

〉> A(1)

ans =〉〉 A(4:end)

ans =

6 〉〉 B(:,1)ans =

2〉> B(:)ans =

8>〉 B(5)

ans =抽取法 〉> clear 〉> A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16] A =

10

12

13

16 >〉 B=A(1:3,2:3)

B =

10

11 〉> C=A([1 3],[2 4])

C =

10

12 〉〉 A([1 3;2 4])ans =

5 函数法: 〉〉 A=ones(3,4)A =

>〉 B=zero(3)

??? Undefined function or method “zero’ for input arguments of type ”double’、>> B=zeros(3)B =

0

0

0

0

0 >> C=eyes(3,2)??? Undefined function or method “eyes’ for input arguments of type ”double’、〉> C=eye(3,2)C =

0

0

0

0 >> D=magic(3)D =

拼接法 〉〉 clear 〉> A=ones(3,4)A =

>〉 B=zeros(3)

B =

0

0

0

0

0

0

0 >〉 C=eye(4)C =

0

0

0

0

0

0

0

0

0

>〉 D=[A B] D =

0

0

0

0

0

0

0 >〉 F=[A;C] F =

0

0

0

0

0

0

0

0

拼接函数与变形函数法:

〉〉 clear 〉> A=[0 1;1 1] A =

0

〉> B=2*ones(2)

B =

>> cat(1,A,B,A)ans =

0

0

>〉 cat(2 A,B,A)

??? cat(2 A,B,A)Error: Unexpected MATLAB expression、>〉 cat(2,A,B,A)ans =

0

0

1 >〉 repmat(A,2,2)ans =

0

0

0

0

〉> repmat(A,2)ans =

0

0

练习:使用函数法、拼接法、拼接函数法与变形函数法,按照要求创建以下矩阵:A 为

得全1矩阵、B 为得 0 矩阵/C 为得单位矩阵、D 为得魔方阵、E 由 C

与D纵向拼接而成,F 抽取 E 得2—--5 行元素生成、G 由 F 经变形为得矩阵而得、以 G 为子矩阵用复制函数(repmat)生成得大矩阵H。

答案 :

>〉 A=ones(3,4)

A =

1 〉〉 B=zeros(3,3)B =

0

0

0

0

0

0

0

0 >〉 C=eye(3)

C =

0

0

0

0

>〉 D=magic(3)D =

>> E=[C;D] E =

0

0

0

0

0

〉〉 F=(2:5,:)??? F=(2:5,:)Error: Expression or statement is incorrect—-possibly unbalanced(, {, or [、>〉 F=E(2:5,:)F =

0

0

〉〉 G=respace(E,3,4)

??? Undefined mand/function “respace’、〉>

G=respace(F,3,4)

??? Undefined mand/function ”respace“、〉> G=reshape(F,3,4)

G =

0

0

0

0

〉〉 H=repmat(G,2,2)H =

0

0

0

0

0

0

0

0

0

2)矩阵得运算  矩阵得加减、数乘与乘法

已知矩阵: >> A=[1 2

-1], A =

-1 >〉 B=[-1 0

2] B =

0

>〉 A+B ans =

1 〉〉 2*A ans =

-2 >〉 2*A-3*B ans =

-8 〉〉 A*B ans =

4-4

—2  矩阵得逆矩阵 〉〉 format rat;A=[1 0 1;2 1 2;0 4 6] A =

0

>> A1=inv(A)A1 =

—1/3

2/3

-1/6

-2

0

4/3

-2/3

1/6

>〉 A*A1

ans =

0

0

0

0

0

矩阵得除法 >〉 a=[1 2 1;3 1 4;2 2 1],b=[1 1 2],d=b’ a =

b =

d =

>> c1=b*inv(a),c2=b/a c1 =

6/7

3/7

-4/7

c2 =

6/7

3/7

-4/7

>> c3=inv(a)*d, c4=ab c3 =

2/7

-4/7

??? Error using ==〉 mldivide Matrix dimensions must agree、>〉 c3=inv(a)*d,c4=ad c3 =

2/7

-4/7

c4 =

2/7

-4/7

练习: 按下列要求求出各种得矩阵运算得值

求矩阵得秩、特征值与特征向量、矩阵得乘幂与开方;

矩阵得指数与对数

矩阵得提取与翻转 答案:

〉〉 A=[6 3

4 3

—2 5 7 —4

8-1 —3 —7] A =

-4

-1

—3

—7 〉> B=rank(A)B =〉> rb=rank(A)

rb =>> [X,Lamda]=eig(A)

??? Error using ==〉 eig Matrix must be square、〉〉 [X,Lamda]=eigs(A)??? Error using ==〉 eigs A must be a square matrix or a function which putes A*x、〉〉 C=[6 3 4

-2 5 7

—1-3] C =

—2

—1

—3 >> [X,Lamda]=eigs(C)

X =0、8013

-0、1094

-0、1606

0、3638

—0、6564

0、86690、4749

0、7464

-0、4719 Lamda =9、7326

0

0

0

-3、2928

0

0

0

1、5602 〉〉 [X,Lamda]=eig(C)

X =

0、8013

—0、1094

—0、16060、3638

—0、6564

0、86690、4749

0、7464

-0、4719 Lamda =9、7326

0

0

-3、2928

0

0

0

1、5602 〉> [X,Lamda]=eig(C)

X =

0、8013

—0、1094

-0、1606

0、3638

—0、6564

0、8669

0、4749

0、7464

—0、4719 Lamda =9、7326

0

0

0

—3、2928

0

0

0

1、5602 〉> D=A^2 ??? Error using ==> mpower Matrix must be square、〉> D=C^2 D =

33

34

〉〉 E=sqrtm(C)E =

2、2447 + 0、2706i0、6974 — 0、1400i0、9422-0、3494i

-0、5815 + 1、6244i

2、1005-0、8405i

1、7620-2、0970i

1、9719 - 1、8471i

-0、3017 + 0、9557i

0、0236 + 2、3845i >> F=expm(C)F =

1、0e+004 *

1、0653

0、5415

0、6323

0、4830

0、2465

0、2876

0、6316

0、3206

0、3745 〉〉 G=logm(C)Warning: Principal matrix logarithm is not defined for A with

nonpositive real eigenvalues、A non-principal matrix

logarithm is returned、〉 In funm at 153

In logm at 27 G =

1、7129 + 0、4686i0、5305-0、2425i0、5429-0、6049i

1、1938 + 2、8123i0、3658 — 1、4552i

—0、5514-3、6305i

-0、0748 - 3、1978i

0、7419 + 1、6546i1、8333 + 4、1282i >> H=fliplr(C)H =

-2

—1

>> I=triu(C)I =

0

0

-3 〉〉 J=tril(C)

J =

0

0

-2

0

-3 >> K=diag(C)K =

6-3 3.多维数组得创建及运算 1)多维数组得创建 >〉 A1=[1,2,3;4 5 6;7,8,9];A2=reshape([10:18],3,3)A2 =

10

13

16

14

17

12

15〉〉 T1(:,:,1)=ones(3);T1(:,:,2)=zeros(3)T1(:,:,1)

=

T1(:,:,2)=

0

0

0

0

0

0

0 〉> T2=ones(3,3,2)

T2(:,:,1)=

1 T2(:,:,2)=

1 >> T3=cat(3,A1,A2),T4=repmat(A1,[1,1,2])

T3(:,:,1)=

T3(:,:,2)=

10

13

16

17

15T4(:,:,1)

=

T4(:,:,2)=

2)多维数组得创建

数组运算用小圆点加在运算符得前面表示,以区分矩阵得运算。特点就是两个数组相对应得元素进行运算。

〉〉 A=[1:6];B=ones(1,6);>> C1=A+B,C2=A—B C1 =

C2 =

0

>> C3=A、*B,C4=B、/A,C5=A、B C3 =

6 C4 =

1、0000

0、5000

0、3333

0、2500

0、2000

0、1667 C5 = 1、0000

0、5000

0、3333

0、2500

0、2000

0、1667

关系运算或逻辑运算得结果都就是逻辑值.>〉 I=A〉3,C6=A(I)

I =

0

0

0

1 C6 =

6 〉〉 A1=A-3,I2=A1&A A1 =

—2

—1

0

I2 =

0

〉〉 I3=~I I3 =

0

0 4.字符串得操作 1)字符串得创建

>〉 S1=”Ilike MATLAB’ S1 = Ilike MATLAB >> S2=“I'’m a stuent、” S2 = I“m a stuent、〉> S3=[S2,”and’,S1] S3 = I“m a stuent、andIlike MATLAB 2)求字符串长度 〉〉 length(S1)ans =>> size(S1)ans =

13)字符串与一维数值数组得相互转换 >> CS1=abs(S1)CS1 =

101

32

65

84

66 〉> CS2=double(S1)CS2 =

108

105

101

32

77

65

76

>> char(CS2)

ans = Ilike MATLAB >> setstr(CS2)

ans = Ilike MATLAB 练习:用char()与向量生成得方法创建如下字符串AaBbCc、、、、、、XxYyZz、〉> S1=65:90;S2=97:122;〉〉 C=[S1;S2];>>

C=C(:)’;〉>

S3=double(C);char(S3)ans = AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz 实验三

MAL TAB B 数值运算 一、实验目得

掌握 MATLAB 得数值运算及其运算中所用到得函数,掌握结构数组与细胞数组得操作。

二、实验内容

1)

多项式运算。

2)

多项式插值与拟合。

3)

数值为积分。

4)

结构数组与细胞数组。

三、实验步骤

1、多项式运算

1)

多项式表示。在 MATLAB 中,多项式表示成向量得形式.如: 在 MATLAB 中表示为 >> s=[1 3-5 0 9] 2)

多项式得加减法相当于向量得加减法,但必须注意阶次要相同。如不同,低阶次得要补 0。如多项式与多项式相加。

〉> s1=[0 0 2 3 11] 〉〉 s2=[1 2 —5 4 7] 〉〉 s3=s1+s2 答;s1 =

0

0

3s2 =

—5

s3 =

—3

18 3)

多项式得乘、除法分别用函数 conv与得 deconv实现。

〉> s1=[2 3 11] >> s2=[1 3 —5 4 7] >〉 s3=conv(s1,s2)

>> s4=deconv(s3,s1)答;s1 =

11 s2 =

s3 =

—29

65

s4 =

7 4)

多项式求根用函数roots。

>〉 s1=[2 4 2] >> roots(s1)

答;s1 =

ans =

—1

5)

多项式求值用函数 polyval >> s1=[2 4 1-3] 〉〉 polyval(s1,3)

〉> x=1:10 〉〉 y=polyval(s1,x)答;s1 =

-3 ans =

90 x =

10 y =

Columns 1 through 8

193

352

579

886

1285

Columns 9 through 10 练习:求得“商”及余数.〉> s1=[1 0 1];s2=[1 3];s3=[1 1]; 〉> s4=[1 0 2 1]; >> [q,r]=deconv(conv(conv(s1,s2),s3),s4)答;q =

4 r =

0

0

-1 2、多项式插值与拟合 有一组实验数据如附表 1—1 所示。

附表 1-1 X 1 2 3 4 5 6 7 8 9 10 Y 16 32 7

1

分别用拟合(二阶至三阶)与插值(线性与三次样条)得方法来估算X=9、5 时 Y 得值。以下就是实现一阶拟合得语句。

〉> x=1:10 >〉 y=[16 32 70 142 260 436 682 1010 1342 1960] 〉> p1=polyfit(x,y,1)

%一阶拟合 >> y1=polyval(p1,9、5)

%计算多项式 P1 在x=9、5 得值 答;x =

9y =

Columns 1 through 8

32

70

142

260

436

682

1010

Columns 9 through 10

1342

1960 p1 =

200、9818 -510、4000 y1 =1、3989e+003 3、数值微积分

1)

差分使用 diff 函数实现。

>〉 x=1:2:9 〉〉 diff(x)答;x =

ans =

2 2)

可以用因变量与自变量差分得结果相处得到数值微分。

〉> x=linspace(0,2*pi,100);>〉 y=sin(x); >〉 plot(x,y)>〉 y1=diff(y)、/diff(x); 〉〉 plot(x(1:end-1),y1)答;

3)

cumsum 函数求累计积分,trapz 函数用梯形法求定积分,即曲线得面积。

〉〉 x=ones(1,10)

>> cumsum(x)>> x=linspace(0,pi,100); >> y=sin(x); 〉〉 trapz(x,y)〉> p=cumsum(y); >> p(100)*pi/(100—1)答;x =

ans =

9ans =

1、9998 ans =

1、9998 练习:图 A1就是瑞士地图,为了算出其国土面积,首先对地图作如下测量:以由西向东方向为 X 轴,由南向北方向为 Y 轴,选择方便得原点,并将从最西边界点到最东边界点在 X 轴上得区间适当划分为若干段,在每个分点得Y方向测出南边界点与北边界点得 Y 坐标Y1与 Y2,这样就得到表 1,根据地图比例尺回到18mm相当于 40Km,试由测量数据计算瑞士国土近似面积,与其精确值 41228 比较。地图得数据见附表 1—2(单位mm).附表 1—2 X 7 10、5 13 17、5 34 40、5 44、5 48 56 61 68、5 76、5 80、5 91 Y1 44 45 47 5

34 41 45 46 Y2 44 59 7

18 1 18 续表 X 96 101 104 106、5 111、5 118 123、5 1 36、5 142 146 150 157 158 Y1 43 37 33 28 32 65 55 54 52 50 66 66 68 Y2 121 124 1 21 1 21 121 116 1 22 83 81 82 86 85 68 提示:由高等数学得知识,一条曲线得定积分就是它与 x 轴所围成得面积,那么两条曲线所围成得面积可由两条曲线得定积分相减得到。、结构数组与细胞数组 1)

机构数组得创建. 〉> student、number=’20050731001’;〉〉 student、name=’Jack”;〉〉 student(2)、number=’20050731002’;〉〉 student(2)、name=’Lucy“; >> student 或者用 struct 函数创建。

>> student=struct(”number“,{’001”,“002’},”name',{'Jack’,“Lucy’});答;student =

1x2 struct array with fields:

number

name 2)

机构数组得操作。

〉> student(1)、subject=[]

%添加 subject 域并赋予空值 〉〉 student(1)、score=[] >〉(studeng)〉>fieldnames(studeng)

〉>fieldnames(student)

〉〉 getfield(student,{2},'name')〉〉 student=rmfield(student,”subject’)

%删除 subject 域 〉〉 student=setfield(student,{1},“score’,90);>> student(2)、score=88;

%比较与上一条语句就是否效果一样 答;student =

1x2 struct array with fields:

number

name

subject student =

1x2 struct array with fields:

number

name

subject

score ??? Undefined function or variable ’studeng’、练习:创建一结构数组stusorce,其域为:No,Name,English,Math,Chinese,Total,Average。结构数组得大小为 2×2。

3)

细胞数组得创建。

〉> A={’How are you!”,ones(3);[1 2;3 4],{“cell’}};

%直接创建

〉〉 B(1,1)={’Hello world”};

%由各个细胞元素创建

>> B(1,2)={magic(3)};

>〉 B(2,1)={[1 2 3 4]};答

或者用cell 函数先创建空得细胞数组,然后再给各个元素赋值 c=cell(1,2); >> c(1,1)={’Hello world’};>> c(1,2)={magic(3)}; 〉〉 c(1,3)={[1 2 3 4]}; 4)

细胞数组得操作。

〉> ans1=A(1,1)>> ans2=A(1,1)>〉 whos ans1 ans2 〉〉 celldisp(A)〉> a1=A{2,1}(1,2)>〉 [a2 a3]=deal(A{1:2})

答;ans1 =

’How are you!’ ans2 =

’How are you!’

Name

Size

Bytes

Class

Attributes

ans1

1x1

84

cell

ans2

1x1

84

cell

A{1,1} = How are you!

A{2,1} =

A{1,2} =

A{2,2}{1} = cell a1 =a2 = How are you!a3 =

实验四

MA LT AB B 符号运算

一、实验目得

掌握符号变量与符号表达式得创建,掌握MALTAB得symbol工具箱得一些基本运用。

二、实验内容

1)

符号变量、表达式、方程及函数得表示。

2)

符号微积分运算.

3)

符号表达式得操作与转换.4)

符号微分方程求解.三、实验步骤1、符号运算得引入

在数值运算中如果求,则可以不断让得让x趋近0,一球得表达式趋近什么数,但终究不能令 x=0,因为在数值运算中 0 不就是能作除数得。MATLAB得符号运算能解决这内问题。输入如下命令: 〉> f=sym(’sin(pi*x)/x')

>> limit(f,’x“,0)答;f = sin(pi*x)/x ans = pi 2 2、符号常量、符号变量、符号表达式得创建

1)

使用 sym()创建 输入以下命令,观察 Workspace 中 A、B、f就是什么内性得数据,占用多少字节得内存空间。

>〉 A=sym(”1’)

%符号常量 〉〉 B=sym(’x’)

%符号变量 >> f=sym(’2*x^2+3*x-1’)

%符号表达式 >> clear >> f1=sym(“1+2”)

%有单引号,表示字符串 >〉 f2=sym(1+2)

%无单引号 >〉 f2=sym(1+2)

〉> f4=sym(“2*x+3’)

%为什么出错 〉〉 x=1 〉〉 f4=sym(2*x+3)

答;A = 1 B = x f = 2*x^2+3*x-1 f1 = 1+2 f2 = 3 f2 = 3 f4 = 2*x+3 x =f4 = 5 通过瞧 MATLAB 得帮助可知,sym()得参数可以使字符串或就是数值类型,无论就是哪种类型都会生成符号类型数据。

2)

使用 syms创建 〉> clear >〉 syms x y z 〉> x,y,z 〉〉 f1=x^2+2*x+1 >〉 f2=exp(y)+exp(z)^2 >> f3=f1+f2 答;x = x y = y z = z f1 = x^2+2*x+1 f2 = exp(y)+exp(z)^2 f3 = x^2+2*x+1+exp(y)+exp(z)^2 3 3、符号矩阵创建

>〉 syms a1 a2 a3 a4 〉〉 A=[a1 a2;a3 a4] 〉> A(1),A(3)答;A = [ a1,a2] [ a3, a4] ans = a1 ans = a2 4 4、符号算术运算

1)

符号向量相乘、相除 符号量相成与数值量相乘一样,分成矩阵乘与数组乘。

〉> a=sym(5);b=sym(7); 〉> c1=a*b >〉 c2=a/b >> a=sym(5);B=sym([3 4 5]);>〉 C1=a*B,C2=aB >> syms a b >> A=[5 a;b 3];B=[2*a b;2*b a];〉> C1=A*B,C2=A、*B >〉 C3=AB,C4=A、/B 答;c1 =

35 c2 = 5/7 C1 = [ 15, 20, 25] C2 = [ 3/5, 4/5,1] C1 = [ 10*a+2*a*b,5*b+a^2] [

2*a*b+6*b,b^2+3*a] C2 = [

10*a,a*b] [ 2*b^2,3*a] C3 = [

2*a*(b—3)/(—15+a*b),(a^2-3*b)/(—15+a*b)] [

2*b*(a-5)/(-15+a*b), —(5*a-b^2)/(-15+a*b)] C4 = [ 5/2/a,a/b] [

1/2, 3/a] 2)

符号数值任意精度控制与运算 任意精度得 VPA 运算可以使用命令 digits(设定默认得精度)与vpa(对指定对象以新得精度进行计算)来实现。

>〉 a1=sym(’2*sqrt(5)+pi')

〉> a=sym(’2*sqrt(5)+pi’)〉〉 b=sym(2*sqrt(5)+pi)

>> digits >> vpa(a)>> digits(15)>〉 vpa(a)〉〉 c1=vpa(a,56)

〉〉 c2=vpa(b,56)

答 a1 = 2*sqrt(5)+pi a = 2*sqrt(5)+pi b = 8572296331135796*2^(-50)

Digits = 32 ans = 7、637263128 ans = 7、637 c1 = 7、6372631285535581572696

c2 = 7、6372726175781250000000 注意观察c1 与c2 得数值类型,c1 与 c2 就是否相等。

3)

符号类型与数值类型得转换 使用命令sym可以把数值型对象转换成有理数性符号对象,命令vpa可以讲数值型对象转换为任意精度得 VPA 型符号对象.使用 double,numeric 函数可以将有理数型与 VPA 型符号对象转换成数值对象、〉> clear >〉 a1=sym('2*sqrt(5)+pi’)

>〉 b1=double(a1)

%符号转数值 >> b2=isnumeric(b1)

%判断就是否转换成了数值 >> a2=vpa(a1,70)

%数值转符号 答;a1 = 2*sqrt(5)+pi b1 =7、6137 b2 =

1 a2 = 7、6372631285535589083128858 5 5、、符号表达式得操作与转换

1)独立变量得确定原则 独立变量得确定原则:在符号表达式中默认变量就是惟一得.MATLAB 会对单个英文小写字母(除 i、j外)进行搜索,且以 x 为首选独立变量。如果表达式中字母不唯一,且无 x,就选在字母表最接近x 得字母.如果有相连得字母,则选择在字母表中较后得那一个。例如:中,y 就是默认独立变量。,t 就是默认独立变量。

输入以下命令,观察并分析结果。

>> clear >〉 f=sym(”a+b+i+j+x+y+xz’)

>〉 findsym(f)

〉> findsym(f,1)>〉 findsym(f,2)>> findsym(f,3)

>〉 findsym(f,4)〉〉 findsym(f,5)>〉 findsym(f,6)答;f = a+b+i+j+x+y+xz ans = a, b, j,x,xz, y ans = x ans = x,xz ans =

x,xz,y ans = x,xz,y,j ans = x,xz,y,j,b ans = x,xz,y,j,b,a 2)符号表达式得化简 符号表达式化简主要包括表达式美化(pretty)、合并同类项(collcet)、多项式展开(expand)、因式分解(factor)、化简(simple或 simplify)等函数。

①合并同类项(collect)。分别按 x 得同幂项与e指数同幂项合并表达式: . 〉〉 syms x t; >〉 f=(x^2+x^exp(—t)+1)*(x+exp(-t));〉〉 f1=collect(f)〉〉 f2=collect(f,’exp(-t)“)答;f1 = x^3+exp(-t)*x^2+(x^exp(-t)+1)*x+(x^exp(-t)+1)*exp(-t)

f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x ②对显示格式加以美化(pretty)。针对上例,用格式美化函数可以使显示得格式更符合数学书写习惯。

>〉 pretty(f1)>〉 pretty(f2)

答;f1 = x^3+exp(-t)*x^2+(x^exp(—t)+1)*x+(x^exp(—t)+1)*exp(-t)

f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x >〉

pretty(f1)pretty(f2)

exp(-t)

exp(-t)

x

+ exp(—t)

x

+(x

+ 1)

x +(x

+ 1)exp(—t)

exp(—t)

exp(-t)

(x

+ x

+ 1)exp(-t)+(x

+ x

+ 1)x 注意与直接输出得 f1 与 f2 对比。

③多项式展开(expand)。展开成 x 不同次幂得多项式、〉> syms x 〉> f=(x—1)^12;〉> expand(f)〉〉 pretty(expand(f))

答;ans = 1+x^12-12*x^11+66*x^10—220*x^9+495*x^8—792*x^7+924*x^6-792*x^5+495*x^4-220*x^3+66*x^2—12*x

+ x

- 12 x

+ 66 x

— 220 x

+ 495 x

x

+ 924 x

- 792 x

+ 495 x

- 220 x

+ 66 x

- 12 x ④ 因式分解(factor)。将表达式做因式分解。

>> syms x;f=x^12—1; 〉> pretty(factor(f))

答;ans = 1+x^12—12*x^11+66*x^10—220*x^9+495*x^8-792*x^7+924*x^6—792*x^5+495*x^4—220*x^3+66*x^2-12*x

12

11

+ x

— 12 x

+ 66 x

— 220 x

+ 495 x

x

+ 924 x

— 792 x

+ 495 x

— 220 x

+ 66 x

- 12 x 〉〉 syms x;f=x^12—1;pretty(factor(f))

(x-1)(1 + x

+ x)(1 + x)

(1 — x + x)(1 + x)(x

— x

+ 1)⑤化简(simple或 simplify)。

将函数化简.〉〉 clear 〉〉 syms x;f=(1/x^3+6/x^2+12/x+8)^(1/3); 〉> g1=simple(f)>〉 g2=simplify(f)

答;g1 =(2*x+1)/x g2 =((2*x+1)^3/x^3)^(1/3)6 6、符号表达式得变量替换

subs 函数可以对符号表达式中得符号变量进行替换 >> clear >> f=sym(’(x+y)^2+4*x+10’)〉〉 f1=subs(f,’x',’s')

%使用 s 替换x >〉 f2=subs(f,”x+y’,“z’)答;f =(x+y)^2+4*x+10 f1 =(s+y)^2+4*s+10 f2 = z^2+4*x+10 7、符号极限、符号积分与微分

1)

求极限函数得调用格式 limit(F,x,a)

%返回符号对象 F 当 x→a 时得极限 limit(F,a)

%返回符号对象 F 当独立变量*→a 时得极限

limit(F)

%返回符号对象 F 当独立变量→0(a=0)时得极限 limit(F,x,a,’right’)

%返回符号对象 F 当 x→a 时得右极限 limit(F,x,a,’left”)

%返回符号对象F当 x→a 时得左极限 例一:

〉〉 clear >> f=sym(“sin(x)/x+a*x”)

>〉 limit(f,“x’,0)

%以 x 为自变量求极限 >> limit(f,”a’,0)

%以 a 为自变量求极限 >> limit(f)

%在默认情况下以 x 为自变量求极限 >> findsym(f)

%得到变量并且按字母表顺序排列 答‘f = sin(x)/x+a*x ans = 1 ans = sin(x)/x ans = 1 ans = a,x 例二: >> clear >〉 f=sym('sqrt(1+1/n));

〉〉 limit(f,n,inf)

%求 n 趋于无穷大时得极限

2)

求积分函数得调用格式 int(F)

%求符号对象 F 关于默认变量得不定积分 int(F,v)

%求符号对象 F 关于指定变量 v 得不定积分 int(F,a,b)

%求符号对象 F 关于默认变量得从 a 到 b 得定积分 int(F,v,a,b)

%求符号对象 F 关于指定变量得从 a 到b得定积分 3)

求微分方程得调用格式 diff(F)

%求符号对象 F 关于默认变量得微分 diff(F,v)

%求符号对象 F 关于指定变量 v 得微分 diff(F,n)

%求符号对象 F 关于默认变量得 n 阶微分,n 为自然数 1、2、3…… diff(F,v,n)%求符号对象 F 关于指定变量 v 得 n 阶微分 8 8、符号方程求解

1)常规方程求解函数得调用格式 g=solve(eq)

%求方程(或表达式或字串)eq 关于默认变量得解

g=solve(eq,var)

%求方程(或表达式或字串)eq 关于指定变量 var 得解 g=solve(eq1,eq2,…、,eqn,var1,var2,…,varn)

%求方程(或表达式或字串)eq1,eq2,eq3,……eqn 关于指定变量组var1,var2,……,varn)得解 求一元二次方程得解.其求解方法有多种形式:

① seq=solve(“a*x^2+b*x+c')

② seq=solve(’a*x^2+b*x+c=0”)③ eq=’a*x^2+b*x+c“;④ eq=”a*x^2+b*x+c=0’; seq=solve(eq)

⑤sym x a b c

eq=a*x^2+b*x+c seq=solve(eq)

2)常微分方程求解 求解常微分方程得函数就是 dsolve。应用此函数可以求得常微分方程(组)得通解,以及给定边界条件(或初始条件)后得特解。

常微分方程求解函数得调用格式:

r=dsolve(“eq1,eq2,…’,’cond1,cond2,…’,’v’)r=dsolve(’eq1’,’eq2”,…,“cond1’,’cond2’,…,’v”)说明: ① 以上两式均可给出方程 eq1,、qeq2 对应初始条件 cond1、cond2 之下得一 v 作为解变量得各微分方程得解。

② 常微分方程解得默认变量为 t。

③ 第二式中最多可接受得输入式就是 12 个。

④ 微分方程得表达方法。

在用 MATLAB 求解常微分方程时,用大写字母 Dy表示,用D2y表示,依此类推。

边界条件以类似于 y(a)=b 给出。其中 y 为因变量,a、b 为常数、如果初始条件给得不够,求出得解为含有 C1、C2 等待定常数得通解。

例一 求微分方程得通解、练习:(1)求。

(2)求函数得积分;求函数得导数(3)计算定积分(4)求下列线性方程组得解

(5)求解但 y(0)=2,在 z(0)=7 时,微分方程组得解。

实验五

MATLA B 程序设计

一、实验目得

掌握 MATLAB 程序设计得主要方法,熟练编写 MATLAB函数、二、实验内容

(1)M 文件得编辑。

(2)程序流程控制结构。

(3)子函数调用与参数传递。

(4)局部变量与全局变量。

三、实验步骤1、M M 文件得编辑

选择MATLAB 得菜单,打开新得M文件进行编辑,然后输入以下内容,并保存文件名为 expl、m。

s=0;for n=1:100

s=s+n;end s 答;s =

5050 保存好文件后,在命令窗口输入expl 即可运行该脚本文件,主义观察变量空间。紧接着创建 M 函数文件,然后输入以下内容,并保存文件名为 expl2、m。

function s=expl2(x)

s=0;for n=1:x

s=s+n; end

保存好文件后,在命令窗口输入

>〉 clear 〉> s=expl2(100)以 open 命令可以打开 M 文件进行修改。

〉〉open conv

%打开 conv 函数 2 2、程序流程控制结构

1)

for 循环结构

>〉 for n=1:10 n end 答;n =n =n =n =n =n =

6 n =n =

n =n =

另一种形式得 for 循环: 〉> n=10:—1:5;>〉 for i=n

%循环得次数为向量 n 得列数 i end 答;i =

10 i =i =i =i =i =2)

while 循环结构 在命令窗口输入:

clear x=1;while 1 x=x*2 end 将会瞧到 MATLAB 进入死循环因为 while 判断得值恒为真,这时须按 Ctrl+C键来中断运行,并且可瞧到 x 得值为无穷大。

练习:

(1)请把 exp2、m函数文件用 while 循环改写。

(2)用公式求得近似值,直到最后一项得绝对值小于为止,试编写M脚本文件、3)

if-else—end 分支结构

if—else—end 分支结构有如下 3 种形式。

(a)

if

表达式 语句组 1 end(b)

if

表达式 语句组 1 else 语句组2 end(c)

if

表达式 A

语句组 1 else if 表达式 B 语句组 2 else if 语句组 3 …… else

语句组 n end 4)

switch—case结构 创建 M 脚本文件 exp3、m,输入以下内容并在命令窗口中运行。

%功能:判断键盘输入得数就是奇数还就是偶数 n=input(’n=');if isempty(n)

error(’please input n');

n=input(“n=’);end switch mod(n,2)

case 1

A=’奇数'

case 0

A=’偶数” End 答;n=input('n=’); if isempty(n)

error('please input n’);

n=input(“n=’); end switch mod(n,2)

case 1

A=”奇数“

case 0

A=”偶数' end n=1 A = 奇数 3、子函数与参数传递

有一个函数,试编写实现该函数得函数文件.function g=expl4(x)

%主函数 g=0;for n=1:x

g=g+fact(n);

%调用子函数 end

function y=fact(k)

%子函数 y=1; for n=1:k

y=y*n; end 输入参数可以有函数 nargin 计算,下面得例子 sinplot(),当知输入一个参数 w 时,sinplot()函数会给p赋予默认值 0。4、局部变量与全局变量

上一篇:附属学校招生策划书下一篇:中小企业降低人才流失率对策研究