数学实验第二版书稿(上).pdf
《数学实验第二版书稿(上).pdf》由会员分享,可在线阅读,更多相关《数学实验第二版书稿(上).pdf(95页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、MATLAB软件基础1.引言MATLAB的名称由MATrix(矩 阵)和 LABoratory(实验室)两词的前三个字母组合而成.早期主要用于现代控制中复杂的矩阵、向量的各种运算.现已发展成为一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。使用MATLAB,可以解决最基本的数学问题,诸如数值计算,矩阵计算,符号运算,统计分析,求解优化问题等等.不仅如此,MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。MATLAB软件的命令系统本身构成了 种功能强大的程序设计语言,用这种语言可以比较方
2、便地定义用户需要的各种函数和程序包,系统本身也提供了许多应用程序包.2.MATLAB软件的基本命令双击MATLAB软件的图标即可启动MATLAB软件在其命令窗口中出现“”后即可输入命令,如 s in(p i/2)燃后按下回车键即可执行相应的命令.2.1 算术运算MATLAB软件的算术运算是指加减乘除及乘方、开方运算.例 1 3*(5-2)+4A(6-3)/2ans=41在 MATLAB软件中,乘法用“*”表示,除法用“/”表示,乘方用“表示.例 2 2A(1/2)ans=1.4142MATLAB对数据采取近似计算,在默认设置下,结果保留5 位数字.例 3 l/3+pians=3.4749p i
3、表示圆周率乃.例 4 2100%计 算 2 的 100次方ans=1.2677e+030结果用科学计数法表示,1.2677e+030表示1.2677x 1O30.在输入命令中,可用之后写入命令的注解,注解并不影响命令的执行,例如例4 中的命令.2.2 函数MATLAB软件提供了许多数学上的函数,表 1给出了一些常用的函数.在 M ATLAB软件中,英文字母大小写严格区分.函数与命令后面的表达式要放在小括号里.例 5 sin(pi/6)ans=0.5000表1 常用的函数函数数学含义函数数学含义abs(x)Ximag(z)z的虚部acos(x)arccos xlog(x)nxacot(x)arc
4、 cot xloglO(x)logio Xasin(x)arcsin xmax(xl,x2,.)atan(x)arctan xmin(xl,x2,.)angle(z)argz(幅角的主值)mod(a,b)a除以b的余数nchoosek(n,k)cprimes(n)不大于n的所有素数ceil向上取整rand0,1之间均匀随机数conj(z)Z的共扼复数randn标准正态分布随机数cos(x)COSXreal(z)Z的实部cot(x)cotxround四舍五入取整exp(x)exsec(x)secxfactorial(n)n!sin(x)sinxfix(x)向零方向取整sqrt(x)4xfloor
5、向下取整tan(x)tanx例 6 sqrt(3.3+1.5i)ans=1.8608+0.4031i例 7 randans=0.8147例 8 rand(1 seed,45);rand%以45为种子数产生随机数ans=0.08092.3 赋值与函数定义MATLAB软件中可以直接给变量赋值,并进行运算.变量名必须以字母开头,不能有空格和标点符号(可以有下划线).例 9 x=lx=1例 10 a=l,b=2;c=3a=1c=3MATLAB软件中的语句可以写在同一行里,中间用分号或逗号隔开,分号之前的命令不显示结果,逗 号(或不加标点符号)之前的命令显示结果.例 11 d=a+b*cd=7MATLA
6、B软件中还可以定义函数.最简单的函数命令形式为:f=inline(函数表达式)例 12 f=inline(xA2+yA2);f(1,2)ans=5更为一般的函数定义形式见本实验“M 文件”部分.2.4逻辑运算如同许多高级程序语言一样,MATLAB软件也提供了逻辑运算的功能.逻辑运算可用于程序中的条件控制.1.关系运算表 2 给出了常用的关系运算.表2关系运算X二二y;相等x二y不相等xy大于x可大于或等于xy小于x 二y|小于或等手一例 13 3=2ans=1若逻辑判断的结果为真,则值为1,否则值为0.注:在MATLAB中一般不使用连续的关系运算符.例 14 -3-2-1ans=0在 例13中
7、,系统先判断,值 为1,于是-3-24.1)&-(3.2=2.0)ans=13.逻辑判断命令在MATLAB软件中的一些名词后之前加上“is”构成了许多逻辑判断命令,例如:isempty(是否为空集)isequal(是否相等)isfloat(是否浮点数)isglobal(是否全局变量)isinteger(是否整数)isprime(是否素数)isreal(是否实数)isvector(是否向量)例16 x=isprim e(2),y=isprim e(4)x=1y=o2.5矩阵与向量MATLAB软件提供了相当丰富的关于矩阵与向量的函数命令.关于向量与矩阵的运算是非常快捷与方便的.1.向量与矩阵的定义
8、(1)直接定义:直接输入向量或矩阵的元素,同行的元素以逗号或空格来分隔,不同的行用分号或回车分隔.例 17 a=l,2,3;4,5,6;7,8,1 0 a=1 2 34 5 67 8 10 x=2,3x=2 3 y=4;5 y=45(2)向量的冒号定义:a:d:b形式的语句生成一个行向量,范围在a与b 之间,a 为第一个元素,d 为间隔,d 的取值不能为0。例 18 z=12:-3:l12 9 6 3(3)语句定义zeros(m,n)产生m 行 n 列的元素全为0 的矩阵;ones(m,n)产生m 行 n 列的元素全为1 的矩阵;eye(n)产生n 阶单位矩阵;diag(u)产生一个对角矩阵,
9、其对角线元素与向量u 的元素一致.例 19 diag(2,6)ans=2 00 62.矩阵的元素操作MATLAB利用下标访问矩阵的元素.例 20 a=l,2,3;4,5,6;7,8,10;bl=a(3,l)%bl为 a 的第3 行 第 1 列的元素b2=a(1,3,1,2)%b2为 a 的第1,3 行 第 1,2 列的元素构成的矩阵b3=a(end,:)%b3为 a 的最后一行所有列元素构成的矩阵b4=a(7)a(:,4)=3,2,l当将矩阵a 添上第4 列b5=reshape(a,2,6)%将 a 重写为2 行 6 列的矩阵c=find(b3=8)%求 b 3 中等于8 的元素的位置%将 a
10、 的所有列按照从左到右的次序排列,b4求第7 个元素运行以上语句得到的结果为:bl=7b2=1 27 8b3=7 8 10b4=3147b5=14c=2 3 35 6 28 10 17 5 3 10 22 8 6 3 123.矩阵的基本运算矩阵的加减法是对相同维数的矩阵的对应元素进行加减,与一般的理解一致.如果是矩阵和标量进行加减,则该矩阵的所有元素与该标量进行运算.例 21 x=1,2Z 3;4,5,6 ;y=7,8,9;4,3,2 ;z=x+y,w=x-5z=8 10 128 8 8w=-4-3-2-1 0 1矩阵A 与 B 相乘C=A*B,其结果与代数中矩阵相乘也是一致的,要求 A 的列
11、数等于B 的行数.在 MATLAB中,对矩阵还有另一种乘法:A.*B,此时要求A 与 B有相同的维数,其结果为A 与 B 的对应元素相乘.矩阵方程组AX=B以 及 XA=B的解可以分别用A B 与 A/B 来表示.A./B 表示A 与 B 的对应元素相除得到的矩阵.若 n 为正整数,A 为一个方阵,则 A-n 表示矩阵A 的 n 次方.若A为一个一般的矩阵或向量,A J n 表示A 的每个元素求n 次方.x+y+z=6例 22 求解线性方程组 2 x-y +3 z=9,并验证.5x+y-z -4解:相应的命令为A=l,l,l;2,-l,3;5,l,-l;b=6;9;4 ;x=A b,r=A*x
12、-b得到的结果为x=1.00002.00003.0000r=1.0e-14*0.08880.1776-0.0444由于是近似求解,结果有微小的误差.2.6符号运算符号表达式是代表数据、变量、函数等的字符串或字符串数组.在线性代数、微积分等学科中一些运算必须使用符号运算.MATLAB中,sym命令定义单个的符号表达式,sym s定义多个符号变量.例 23 s y m s a b x y将 a,b,x,y定义为符号变量.例 24 x=s y m (A xz z 7 r e a l );%定义x为符号变量,它代表实数 y=s y m(,x,,,r e a l,);z=x+i*y;c o n j (z
13、)%求共钝复数a n s =x-s q r t(-1)*y例 2 5 下面的语句将符号表达式中的a用 值 1 进行替换.f=s y m(1(a+b)A21);a=l;g=s u b s(f)g=(1+b)人 2也可以用s u b s。(a+b L 2 l a,1)得到一样的效果.例 26 s i m p l e 函数可以化简符号表达式.y=s y m(12*s i n(x)*c o s(x)1)r z=s i m p l e(y)y =2*s i n (x)*c o s(x)z =s i n (2*x)2.7 M 文件M A T L A B 中有两种工作方式,种 直接交互的命令行模式,例如在前
14、面所举的例子中,所有的命令都是在命令窗口输入,然后按回车键执行命令.如果程序比较长,或数据量比较大,在命令窗口输入是不方便的.M A T LA B提供了另一种工作模式:文件驱动模式.文件驱动模式,即将所要执行的命令语句存放在一-个后缀为m 的文件中(一般称为M 文件)在命令窗口可以调用该文件,执行其中的命令.在 M A T L A B 菜单栏中依次单击“F i l e”-“N e w”-“Mf l e”即可创建并编辑一个M文件.在 M A T L A B 的“c u r r e n t d i r e c t o r y”窗口(在默认设置下,该窗口位于菜单栏下方的右边),我们可以设置当前的文件
15、夹.如果我们将M 文件存放于当前文件夹或M A T L A B 设置好的的搜索文件夹中,即可调用该文件.1.程序文件程序文件包含了一连串的M A T L A B 命令,调用该文件时,这些命令会依次得到执行.例 27 设置当前文件夹为“d:u s e r”,并在该文件夹下建立“p r o l.m 文件,其文件内容为x=l :2y=x .A2s u m(y),求各个元素之和在命令窗口输入“p r o l”,即可执行“p r o l.m”文件中的命令,得到的结果为5.2.函数文件函数文件可以看做定义复杂函数的一种方式,可以接受参数,也可以返回参数.MATLAB软件附带了许多函数文件,以实现特定的功能
16、.函数文件的第一行必须包含关键词function”以及输入变量、输出变量,函数名.例 28下面的程序求两个数的和、差、积、商.function h,c,j,s=g(x,y)h=x+y;c=x-y;j=x*y;s=x/y;将其存到当前文件夹的“g.m”中.若在命令窗口执行h,c,j,s=g(4,5)就可以分别求出4 与 5 的和、差、积、商.例 2 9 下面的程序用来检验一个正整数是否可以写成两个素数的和.如果正整数x 不能写成两个素数的和,则输出一个空集;若正整数x 能写成两个素数的和,则输出给出两个素数构成的集合,这两个素数的和为 X.function s=f(x)m=2;n=floor(x
17、/2);s=;while isempty(s)&m0例30定义符号函数入()=0 x =0 .其函数文件如下-1 x 0y=ie ls e if x=0y=0e ls ey=-iend2.循环结构高级程序设计语言都提供了描述重复执行的循环语句.在MATLAB软件中也提供了一些类似的循环控制结构.for循环for循环的循环次数一般是已知的,其格式如下:for x=a rra y%x为循环变量c omma nds%组命令c o m m a n d s是循环体end20例31下面的程序可用来计算乞儿与2 0!A=s=0;p=l;fo r k=l:20s=s+k;P=P*k;end;d is p(s=
18、z n u m 2 str(s),p=,n u m 2 str(p)结果显示为s=210,p=2432902008176640000注:d isp 命令在屏幕上显示数组,rw m 2str命令将数转化为字符串.(2)while 循环若循环次数事先不确定,循环是用某个条件来控制的,可以用while循环来实现,其格式如下:while expression%判断条件commands%组命令commands是循环体,%只要条件为真,循环体即反复执行,直到条件为假.end1 2例 32数列*“满足X。=l,x+1,可以证明该数列极2 xn限为V L 试求出,使得lx“-拒 1 epsx=(x+2/x)/
19、2;n=n+l;s to p c=a b s(x-s q rt(2);endnx其结果为:n=4x=1.4142135623746902.9 输入输出命令I.键盘输入命令input在运行程序时,有时变量不事先给定,而是在运行过程中给出,我们可以用input命令来实现.其基本格式为r=inputC提示符)例如,在例32的程序中,将eps=l e-8 改为ep s=in p u t(*eps=1).执行该程序,命令窗口会出现“eps=”的提示,此时即可输入一个数,比如 le.1 2,程序继续运行,得到n 的值为5.2.屏幕输出命令dispd is p 命令用来输出变量的值,可以是数字或字符串.例
20、33 a=l;b=2.5;d is p(azb ),d is p(a=,num 2str(a),b=,n u m 2 str(b)运行结果为1.0000 2.5000a=l b=2.53.格式输出命令fprintffprintf命令用来对数据进行格式输出.其一般格式为fprintf(fid,format,A,)其中,fid为文件名,format是输出格式,A 等是输出变量.若缺省fid,则在命令窗口输出.例 34 a=l;b=2.5;fprintf(a=%5i,b=%10.3f ,a,b)输出的结果为a=l,b=2.500常见的集中输出控制符:i(整数输出,前面有数字则表示输出位数),e(科学
21、计数法输出),f(浮点输出,前面有数字则表示输出位数和小数点后的位数),g(e与 f 的结合,根据情况决定输出格式)n(换行符).4.文件建立与关闭命令fopen与 fclose如果要存储大量的数据,我们可以建立个文件来存储数据.例35下面的命令首先产生-个矩阵,然后将其存入一个文件,最后显示该文件的内容.x=0:0.2:1;y=x;exp(x);fid=fopen(1 a.txt1r 1wt1);fprintf(fid,1%6.2f%12.8fn f,y);fclose(fid);type a.txt 告显示文件内容以下为屏幕显示的内容0.001.000000000.201.22140276
22、0.401.491824700.601.822118800.802.225540931.002.718281835.格式读入命令fscanffscanf命令用来对数据进行格式读入.其一般格式为fscanf(fid,format,size)其中,fid为文件名,format是输出格式,size是表示数据的多少.例3 6下面的程序将a.txt文件的内容读入到矩阵b 中.fid=fopen(1 a.txt1,*r1);b=fscanf(fid,1%g%g I 2 inf);b=b,fclose(fid);6.文件读入命令load利用load命令可以很方便的将文件中的内容读入.例3 7执 行 load
23、 a.txt命令可以直接将a.txt文件中的数据读入到矩阵a 中.2.10窗口、文件、系统命令表4常用的窗口、文件、系统命令命令功能dir列出当前文件夹下的文件与子文件夹diary创建系统命令与计算结果的日志文件diary(*filename 1)创建指定文件名的日志文件diary off暂停执行diary命令who列出工作空间中的变量名称whos列出工作空间中的变量的详细内容save filename x y将变量x,y存入指定的文件clear清除所有变量clear x y清除名为x y 的变量clc清除命令窗口的所有显示内容elf清除图形窗口的所有内容help name查找命令的使用方法f
24、open(file)打开一个文件fclose(file)关闭一个文件tic开始计时toe给出tic开始计时到此刻的时间clock给 出 6 个数的行向量,分别是当前的年,月,日,时,分,秒MATLAB软件提供了一些命令对文件、窗口等进行操作.表4 列出了常用的一些命令.例如c lc 命令可以讲当前的命令窗口中所有的内容清除.在例如我们记得某个MATLAB的命令的名称,比如sum,但是不记得它的用法,我们可以用help sum来查找该命令的使用格式与意义.例 3 8 下面的命令以当前时间的秒数为种子产生随机数.每次重新启动 MATLAB时,产生的随机数是一致的.该命令提供了 一 种产生不同随机数
25、的方法.u=clock;rand(seed,u(6);rand;实验一 MATLAB软件的使用【实验目的】1.用 MATLAB软件进行各种数学处理;2.用 MATLAB软件进行作图;3.用 MATLAB软件编写程序.1.初等代数1.1 表达式的运算1.一元多项式的运算在 MATLAB中,一元多项式可以用一个行向量来表示,即多项式的系数按照变量的指数降序排列得到的向量.比如多项式2/+3/一*+1用向量 2 0 3-1 1 来表示.表1.1列出了一元多项式的常用命令.表 1.1 一元多项式的常用命令命令说明roots(p)求多项式的根ploy(p)以P 中元素为根的多项式polyval(p,x)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 实验 第二 书稿
限制150内