matlab数学建模基本运算.ppt

上传人:tia****nde 文档编号:12806163 上传时间:2020-05-25 格式:PPT 页数:127 大小:1.26MB
返回 下载 相关 举报
matlab数学建模基本运算.ppt_第1页
第1页 / 共127页
matlab数学建模基本运算.ppt_第2页
第2页 / 共127页
matlab数学建模基本运算.ppt_第3页
第3页 / 共127页
点击查看更多>>
资源描述
1,数学建模暑期集训MATLAB,2,matlab在建模竞赛中的作用,3,4,第1单元数据计算,5,1.1、MATLAB基本概念和操作,6,1.2基本运算功能,MATLAB的基本运算可分为三类:算术运算关系运算逻辑运算,7,1.2.1算术运算,8,使用变量来进行更复杂的问题求解,a=15+20-50+3*9a=12b=30b=30c=a*bc=360d=a3-b*cd=-9072,9,标点符号:%:注释:续行;但变量和注释不允许序号逗号:显示结果分号:不显示结果,10,逗号或分号的区别,x=2,y=3%逗号隔开,屏幕有回显x=2y=3m=2;n=3;%分号隔开,无回显m%在提示符后直接输入变量名可查看变量的值m=2,11,基本算术运算符,12,例1-1求解算术表达式的值,(12+2*(7-4)/33ans=0.6667,13,1.2.2关系运算,14,关系运算的结果类型为逻辑量(0,1),x=2;x3ans=0x关系运算逻辑与逻辑或,16,MATLAB运算的基本单元是实数或复数元素组成的矩阵,大部分运算或命令都是在矩阵运算意义下执行的。,变量与常量:1*1矩阵,在MATLAB中,不需对矩阵的维数和类型进行说明,MATLAB会根据用户所输入的内容自动进行配置。,1.3基本数据类型,17,1.3基本数据类型,MATLAB数据类型数值逻辑字符串元胞(cell)结构(struct)类(class),元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组的内存空间也是动态分配的。,类是一种数据类型,与普通的数据类型不同的是类不仅包含数据,还包含对数据的操作,类把数据和数据操作方法封装在一起,作为一个整体参与程序的运行。类具有可继承性,创建一个新的类的时候,可以在一个基类中添加成员派生出新类。,18,1.3.2变量和表达式,变量的命名方式:变量名由字母、数字和下划线组成;变量名中的英文字母大小写是有区别的;变量名的最大长度是有规定的不同版本的系统规定不同:19个字符、31或63个字符等可调用namelengthmax函数得到系统规定长度,19,MATLAB系统的特殊变量和常数,20,1.3.3、MATLAB赋值语句,格式1变量表达式,功能:计算赋值号右端表达式的值,赋给变量。当键入回车键该语句被执行。语句执行之后,窗口自动显示出执行结果。,例a=1+2*sin(1),a=2.6829,例a=1+2*sin(1);,例a=1+2*sin(1),b=2,例a=1+2*sin(1)%后面是注释,21,1.3.4、MATLAB赋值语句,格式2表达式,功能:计算表达式的值,赋给MATLAB的永久变量ans。,例1+2*sin(1),ans=2.6829,22,1.3.5MATLAB常用数学函数,23,函数使用注意事项,所有函数名必须小写。函数一定是出现在赋值号的右边。每个函数对其自变量的个数和格式都有一定的要求,如使用三角函数时要注意角度的单位是“弧度”而非“度”。例如sin(1)表示的不是sin1而是sin57.28578。函数允许嵌套。例如:sqrt(abs(sin(225*pi/180)。,24,例1:设两个复数a=1+2i,b=3-4i,计算a+b,a-b,ab,a/b。,a=1+2i;b=3-4i;c=a+b;d=a-b;e=a*b;f=a/b;c,d,e,f,c=4.0000-2.0000id=-2.0000+6.0000ie=11.0000+2.0000if=-0.2000+0.4000i,25,例2:计算下式的结果,其中x=-3.5,y=6.7。,x=(-3.5)*pi/180;y=6.7*pi/180;z=sin(abs(x)+abs(y)/sqrt(cos(abs(x+y),z=0.1772,26,例3我国人口按2000年第五次全国人口普查的结果为12.9533亿,如果年增长率为1.07%,求公元2010年末的人口数。,计算人口的公式为p1=p0(1+r)n其中:p1为第n年后的人口数量,p0为人口初值,r为年增长率。,r=0.0107;n=2010-2000;p0=12.9533e8;p1=p0*(1.0+r)n,p1=1.4408e+009,27,1.3.6、数值显示格式,MATLAB赋值语句执行结果的显示格式由format命令控制。如果结果为整数,则显示没有小数;如果结果不是整数,则输出形式有:,format(short):短格式(5位定点十进制数)9.1253formatlong:长格式(15位定点十进制数)9.12345678900000formatshorte:短格式e方式(显示5位浮点十进制数)9.9123e+001formatlonge:长格式e方式(显示15位浮点十进制数)9.912345678900000e+001formatbank:按元、角、分(小数点后具有两位)的固定格式。99.12formathex:十六进制格式,缺省方式,注format命令只是影响结果的显示,不影响其计算与存储;MATLAB总是以双字长浮点数(双精度)来执行所有的运算。,28,例x=1234567890 x=1.2346e+9,例x=1.234567890 x=1.2346,例x=1234567890;formatlongex=1.23456789000000e+9,例x=1.234567890;formatlongxx=1.23456789000000,29,清屏:clc:清除命令窗口的所有显示内容;退出MATLAB:(1)单击MATLAB命令窗口的“关闭”按钮。(2)在命令窗口File菜单中选ExitMATLAB命令。(3)在MATLAB命令窗口输入Exit或Quit命令。,1.4、清屏和退出,30,2、MATLAB的矩阵运算,1、矩阵的存储结构,在MATLAB中矩阵元素按列存储。,在MATLAB中的存储顺序,例,31,要用MATLAB做矩阵运算,第一步是矩阵输入(定义),矩阵输入须遵循以下规则:必须用中括号把所有矩阵元素括起来。同一行的不同元素之间数据元素用空格或逗号(,)间隔。用分号(;)指定一行结束。也可分成几行输入,用回车代替分号。数据元素可是数值、变量、表达式或函数,系统将自动计算。,2、矩阵的输入,32,方法一直接输入,例,A=1,2,3,4;5678;9101112;13141516,注意逗号、空格和分号的用法,分成几行输入,用回车代替分号,33,元素是表达式,b=1,3,4+sqrt(-9);sin(pi/4),4,5;c=2,0,0;0,0,1;a=b+c*i,34,方法二利用冒号表达式,功能:产生一个由e1开始到e3结束,步长为e2的行向量。,a=0.50001.50002.50003.50004.5000,a=0.50001.50002.50003.50004.5000,冒号表达式中如果省略e2,则步长为1,最后一个分量不大于e3,如果e2a=linspace(2,9,6),方法三利用函数生成,格式1linspace(a,b,n),功能:创建从a开始,到b结束,有n个元素的线性等分行向量,n缺省值为100。,a=2.00003.40004.80006.20007.60009.0000,等价于a:(b-a)/(n-1):b,36,例a=logspace(-1,-3,3),方法三利用函数生成,格式2logspace(a,b,n),注意:将a到b平均分成n等分,设分点是x1,xn,-1到-3的3等分点是-1、-2、-3,功能:创建从10a开始,到10b结束,有n个元素的线性等分行向量,n缺省值为50。,a=0.10000.01000.0010,方法四利用M文件产生,37,3、多维矩阵(数组)的创建,以三维矩阵为例。三维矩阵由行、列和页组成,第三维称为页,每一页包含一个由行和列组成的二维数组。,例要求输入一个2行、2列、3页的三维矩阵,其第1、2、3页元素分别为:,a(:,:,1)=11;33;20;a(:,:,3)=4;,如未对某元素、某行或某页赋值,其值为0,38,4、矩阵元素的操作,A(m,n):第m行,第n列元素,A(2,3),A(m,:):第m行元素(冒号表示全部),A(2,:),A(:,3),A(m1:m2,n1:n2):第m1行到第m2行和第n1列到第n2列的所有元素。,A(1:2,2:3),例,A(m):第m个元素,A(3),第3列,ans=6,ans=7,ans=456,ans=369,ans=2356,39,A(:):列向量。元素按矩阵的列进行排列。,ans=147258369,矩阵扩展:如果在原矩阵中一个不存在的位置上赋值,则该矩阵会自动扩展行列数,其他没有赋值的元素默认为零(变维结构)。,A=123004560078900000010,A(:),A(4,5)=10,例,40,删除子块:如果将矩阵的子块赋值为空矩阵,则相当于消除了相应的矩阵子块。,例,A(4:5,:)=,A=123004560078910,例,B(:,3:5)=,B=1267812,41,例A=123;456;D=789;,A=1103456,A(1,2)=10,A(1,:)=D,A=789456,A(1:2,1:2)=12;34,A=123346,A=56;78,A=5678,为矩阵元素赋值,用向量为矩阵某一行元素赋值,为矩阵的某一块元素赋值,为矩阵元素赋值的同时,改变矩阵的维数(结构),42,B=A(3:-1:2,1:3),B=789456,C=A(end:-1:1,:),C=789456123,D=AC(:,13),D=123794564678913,43,特殊用途矩阵,产生各种特殊用途矩阵的好用指令:,44,魔方陣,magic(n)可以產生一個nn的魔方陣(MagicMatrix),其各個直行、橫列及兩對角線的元素值總和都相等,45,均勻和高斯分布,rand指令及randn指令則常用於產生亂數矩陣範例9-11:matrix11.m,46,2.1.3矩阵的算术运算,1矩阵的加减运算:(加)、(减)2矩阵乘法:*(乘)3矩阵除法:/(右除)、(左除)4矩阵的乘方:(乘方)5矩阵转置:(转置运算符),47,2.1.4矩阵的关系运算,关系运算符:(大于)=(大于或等于)、=(等于)、=(不等于)。关系运算符的运算法则:关系运算将对两个矩阵的对应元素进行比较。,48,2.1.5矩阵的逻辑运算,必须是两个同维矩阵或其中一个矩阵为标量才能进行MATLAB提供了一些逻辑函数,49,2.1.6矩阵函数,50,1求矩阵的行列式的值,X=1230;5608;901112;0141516;det(X)ans=-5464,51,2求矩阵的秩,X=1,2,3;2,3-5;471;rank(X)ans=2,52,3求逆矩阵,X=1230;5608;901112;0141516;Y=inv(X)Y=0.22990.09080.0351-0.07170.19400.0798-0.06590.00950.1274-0.08350.03220.0176-0.28920.00840.02750.0377Y*X%矩阵与其逆阵相乘结果是单位矩阵ans=1.000000001.000000001.000000001.0000X*Y%矩阵的逆阵是唯一的ans=1.000000001.000000001.000000001.0000,53,4求特征值和特征向量,X=-211;020;-413;VD=eig(X)V=-0.7071-0.24250.3015000.9045-0.7071-0.97010.3015D=-100020002,54,5矩阵分解,A=2-13;121;243;L,U=lu(A)%三角分解L=1.0000000.50000.50001.00001.00001.00000U=2.0000-1.00003.000005.0000000-0.5000,55,6求解线形方程组,56,把matlab工作空间中一些有用的数据长久保存下来的方法是生成mat数据文件。save将工作空间中所有的变量存到matlab.mat文件中。,5、数据的保存与获取,默认文件名,savedata将工作空间中所有的变量存到data.mat文件中。savedataab将工作空间中a和b变量存到data.mat文件中。,57,下次运行matlab时即可用load指令调用已生成的mat文件。loadloaddataloaddataab,即可恢复保存过的所有变量,58,知识回顾,Matlab的基本组成单位Matlab语言(运算符,矩阵为基本单位)控制结构,库函数,数据结构,输入输出,面向对象(C语言)工作环境句柄图形工具箱API矩阵的操作矩阵的建立,元素的操作,算术运算,逻辑运算,函数,特殊矩阵,常见命令,即是语言也是编程环境,59,核心(逻辑),Matlab的工作环境的构成,常见命令基于矩阵的操作思想矩阵的运算符,60,2.2向量,向量是矢量运算的基础行向量列向量,61,2.3数组,数组运算方式是一种元素对元素的运算(不按照线性代数的规则);除了加、减法的与矩阵相同以外,乘、除、幂的数组运算符都是通过在标准的运算符前面加一个圆点来生成。,62,数组运算,x=123;456;789;y=987;654;321;x+y%数组和矩阵的加法规则相同ans=101010101010101010x.*y%数组乘法:对应元素相乘ans=9162124252421169x*y%矩阵乘法:按照线性代数理论进行ans=30241884695413811490,63,多维数组维间处理的函数,1reshape2size3ndims4cat5permute6ipermute7shiftdim8squeeze,64,2.4多项式,多项式是形如P(x)=a0 xn+a1xn-1+an-1x+an的式子。在MATLAB中,多项式用行向量表示:P=a0a1an-1an,65,2.4.1多项式的生成与表达,例:已知向量A=1348000,用此向量构造一多项式并显示结果。(x-1)(x+34)(x+80)(x-0)(x-0)PA=poly(A)PAX=poly2str(PA,X)X5+113X4+2606X3-2720X2,66,2.4.2多项式的运算,1.多项式的算术运算参加加减运算的多项式应该具有相同的阶次。多项式乘法采用conv函数,除法由deconv函数完成。2.求根求多项式的根采用roots函数。3.求值函数polyval可以将某个特定数值代入多项式函数polyvalm可以求出当多项式中的未知数为方阵时的值。4.求导使用polyder函数对多项式求导。,67,应用举例,68,应用举例,69,应用举例,例2-31将表达式(x-4)(x+5)(x2-6x+9)展开为多项式形式,并求其对应的一元n次方程的根。p=conv(1-4,conv(15,1-69)px=poly2str(p,x)x=roots(p),70,2.5、字符串,在MATLAB语言中,字符串是指用一对单引号括起来的字符序列。,例xm=ShandongUnivercityofScienceAndTechnology,在MATLAB中,字符串被当做行向量。每个字符占2个字节。,例xm(7),ans=n,71,当输入的字符串中含有单引号时,每个单引号符号都必须使用两个连续的单引号字符。,例a=你好a=你好,当输入的字符串中含有双引号时,双引号可以直接按字符使用。,例a=”你好”a=“你好”,72,例s4=thisstringarrayhasmultiplerows,注每行字符串大小应该相等,S4thisstringarrayhasmultiplerows,多行串数组的输入,输入的是2行17列矩阵,思考1、s4=thisstringarray;hasmultiplerows?2、s4=thisstringarray,hasmultiplerows?3、s4=thisstringarrayhasmultiplerows?4、s4=thisstringarray;multiplerows?,S4(2)?h,73,1、字符串的简单操作,S13=s(3:9)S13=warey,s(end:-1:1)ans=uoyerawoh,s3=s1(1:4),s2s3=这是一个例子,例s=howareyous1=这是一个字符串s2=例子,截取字符串的第3到9个字符,字符串逆序显示,字符串拼装,思考1、s4=s(3:50)?2、s4=s1(3:7)?3、s4=s(end:-2:5)?4、s4=s(end:-2:4)?,74,length(x)返回字符串x的长度double(x)字符串x的ASCII码存储内容char(x)ASCII码转换成字符串class(x)或ischar(x)判断变量x是否是字符串strcmp(x,y)比较字符串x和y是否相等fingstr(x,x1)返回子串x1在x中的起始位置deblank(x)删除字符串x尾部的空格upper(x)字符串x小写转换成大写lower(x)字符串x大写转换成小写find(x)返回矩阵A中非零元素所在位置,2、常用字符串函数,75,例str1=Hello;str2=IlikeMATLAB;str3=你好!;,length(str1),double(str1),x=72101108108111;char(x),x1=class(str1);x2=ischar(str1);x3=class(1);x1,x2,x3,length(str2),length(str3),ans=5,ans=15,ans=3,ans=72101108108111,ans=Hello,x1=charx2=1x3=double,当x为字符串时class(x)返回char;当x为字符串时ischar(x)返回1否则返回0,76,str2num()字符串转换成数字。num2str()将数字转换成字符串int2str()将数字四舍五入为整数,然后转换成字符串。mat2str()将矩阵转换成字符串,3、字符串数值转换函数,例s=pi;,例s1=pi,j;exp(log(3)pi;,s=pi,str2num(s),pi在MATLAT里有特殊的含义,s1=pi,j;exp(log(3)pi,ans=3.1416,77,例x=log(3);s=pij;exp(x)pi;,str2num(s1),s=pij;exp(x)pi,str2num(s)ans=,ans=3.14160+1.0000i3.00003.1416,例s1=pi,j;exp(log(3)pi;,s1是表达式(不含用户自定义变量)时,先计算表达式的值,然后再转换逗号、分号或空格是分割符。,78,例n=2;xx=thereare,num2str(n),kgeggs,例B=rand(2,4),B1=num2str(B,3),xx=thereare2kgeggs,B=0.82140.61540.92180.17630.44470.79190.73820.4057,B1=0.8210.6150.9220.1760.4450.7920.7380.406,保持3位有效数字,转换为字符串,随机生成数值矩阵,79,A=mat2str(pi/2*S),例S=eye(2),S=1001,生成单位矩阵,A=1.57079632679490;01.5707963267949,80,disp()将字符串内容显示到命令窗口sprintf()按照给定格式,数字转换成字符串,返回值为字符串格式fprintf()按照给定格式把文本写到文件或显示屏上,返回值为显示的字符串的长度sscanf()按照给定格式从字符串中读取数字,4、字符串输入输出函数,字符串操作是以变量名=字符串的形式输出结果,下面介绍用字符串输入输出函数输出字符串。,81,s1=sprintf(圆周率pi=%0.6fn,pi);disp(s1),s1=圆周率pi=3.14159;disp(s1),例比较,s1=圆周率pi=3.14159;s1,圆周率pi=3.14159,s1=圆周率pi=3.14159,例,圆周率pi=3.141593,s1=sprintf(圆周率pi=%15.6fn,pi);disp(s1),圆周率pi=3.141593,注从%到f之间的内容是不显示的,它只是规定了数据pi的格式。,82,5、字符串计算函数,eval()字符串计算函数,运行用户创建的M函数,计算并赋值给其他变量。,s=1+6*9/8;n=eval(s)n=7.7500,functiony=f1(x)y=x2+2;a=eval(f1(2)a=6,计算符号表达式的值:,调用函数并计算其值:,83,习题演练1,已知x=123456789试去掉其首部空格。,提示:可生成4*3的矩阵或者1*12的矩阵,84,建立一个字符串向量,然后对该向量做如下处理取第15个字符组成子字符串;统计字符串中小写字符的个数;将字符串中的小写字符变成大写字符,其余保持不变。,85,3.1数值运算与符号运算,数值运算在运算前必须先对变量赋值,再参加运算。符号运算不需要对变量赋值就可运算,运算结果以标准的符号形式表达。,符号是数学的语言,是人们进行表示、计算、推理、交流和解决问题的工具。,86,3.2符号计算基础,3.2.1符号对象1.建立符号变量和符号常数(1)sym函数sym函数用来建立单个符号量,例如,a=sym(a)建立符号变量a,此后,用户可以在表达式中使用变量a进行各种运算。,87,例3.1考察符号变量和数值变量的差别。,在MATLAB命令窗口,输入命令:a=sym(a);b=sym(b);c=sym(c);d=sym(d);%定义4个符号变量w=10;x=5;y=-8;z=11;%定义4个数值变量A=a,b;c,d%建立符号矩阵AB=w,x;y,z%建立数值矩阵Bdet(A)%计算符号矩阵A的行列式det(B)%计算数值矩阵B的行列式,88,例3.2比较符号常数与数值在代数运算时的差别,在MATLAB命令窗口,输入命令:pi1=sym(pi);k1=sym(8);k2=sym(2);k3=sym(3);%定义符号变量pi2=pi;r1=8;r2=2;r3=3;%定义数值变量sin(pi1/3)%计算符号表达式值sin(pi2/3)%计算数值表达式值sqrt(k1)%计算符号表达式值sqrt(r1)%计算数值表达式值sqrt(k3+sqrt(k2)%计算符号表达式值sqrt(r3+sqrt(r2)%计算数值表达式值,89,(2)syms函数syms函数的一般调用格式为:symsvar1var2varn函数定义符号变量var1,var2,varn等。用这种格式定义符号变量时不要在变量名上加字符分界符(),变量间用空格而不要用逗号分隔。,90,2.建立符号表达式例6.3用两种方法建立符号表达式。在MATLAB窗口,输入命令:U=sym(3*x2+5*y+2*x*y+6)%定义符号表达式Usymsxy;%建立符号变量x、yV=3*x2+5*y+2*x*y+6%定义符号表达式V2*U-V+6%求符号表达式的值,91,例3.4计算3阶范得蒙矩阵行列式的值。设A是一个由符号变量a,b,c确定的范得蒙矩阵。命令如下:symsabc;U=a,b,c;A=1,1,1;U;U.2%建立范得蒙符号矩阵det(A)%计算A的行列式值,92,例3.5建立x,y的一般二元函数。在MATLAB命令窗口,输入命令:symsxy;f=sym(f(x,y);,93,3.2.2基本的符号运算,1.符号表达式运算(1)符号表达式的四则运算例3.6符号表达式的四则运算示例。在MATLAB命令窗口,输入命令:symsxyz;f=2*x+x2*x-5*x+x3%符号表达式的结果为最简形式f=2*x/(5*x)%符号表达式的结果为最简形式f=(x+y)*(x-y)%符号表达式的结果不是x2-y2,而是(x+y)*(x-y),94,(2)因式分解与展开factor(S)对S分解因式,S是符号表达式或符号矩阵。expand(S)对S进行展开,S是符号表达式或符号矩阵。collect(S)对S合并同类项,S是符号表达式或符号矩阵。collect(S,v)对S按变量v合并同类项,S是符号表达式或符号矩阵。,95,例3.7对符号矩阵A的每个元素分解因式。命令如下:symsabxy;A=2*a2*b3*x2-4*a*b4*x3+10*a*b6*x4,3*x*y-5*x2;4,a3-b3;factor(A)%对A的每个元素分解因式,96,例3.8计算表达式S的值。命令如下:symsxy;s=(-7*x2-8*y2)*(-x2+3*y2);expand(s)%对s展开collect(s,x)%对s按变量x合并同类项(无同类项)factor(ans)%对ans分解因式,97,(3)表达式化简MATLAB提供的对符号表达式化简的函数有:simplify(S)应用函数规则对S进行化简。simple(S)调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。例3.9化简命令如下:symsxy;s=(x2+y2)2+(x2-y2)2;simple(s)%MATLAB自动调用多种函数对s进行化简,并显示每步结果,98,2.符号矩阵运算transpose(S)返回S矩阵的转置矩阵。determ(S)返回S矩阵的行列式值。colspace(S)返回S矩阵列空间的基。Q,D=eigensys(S)Q返回S矩阵的特征向量,D返回S矩阵的特征值。,99,3.2.3符号表达式中变量的确定MATLAB中的符号可以表示符号变量和符号常数。findsym可以帮助用户查找一个符号表达式中的的符号变量。该函数的调用格式为:findsym(S,n)函数返回符号表达式S中的n个符号变量,若没有指定n,则返回S中的全部符号变量。在求函数的极限、导数和积分时,如果用户没有明确指定自变量,MATLAB将按缺省原则确定主变量并对其进行相应微积分运算。可用findsym(S,1)查找系统的缺省变量,事实上,MATLAB按离字符x最近原则确定缺省变量。,100,3.2符号变量和符号表达式,符号变量和符号表达式在使用前必须说明sym函数f1=sym(ax2+bx+c)%创建符号变量f1和一个符号表达式syms函数clearsymsabcxwhosNameSizeBytesClassa1x1126symobjectb1x1126symobjectc1x1126symobjectx1x1126symobject,101,3.3符号表示式的运算,3.3.1算术运算clearf1=sym(1/(a-b);f2=sym(2*a/(a+b);f3=sym(a+1)*(b-1)*(a-b);f1+f2%符号和ans=1/(a-b)+2*a/(a+b)f1*f3%符号积ans=(a+1)*(b-1)f1/f3%符号商ans=1/(a-b)2/(a+1)/(b-1),102,3.3.2函数运算,1合并、化简、展开等函数collect函数:将表达式中相同幂次的项合并;factor函数:将表达式因式分解;simplify函数:利用数学中的函数规则对表达式进行化简;numden函数:将表示式从有理数形式转变成分子与分母形式。2反函数finverse(f,v)对指定自变量为v的函数f(v)求反函数3复合函数compose(f,g)求f=f(x)和g=g(y)的复合函数f(g(y)compose(f,g,z)求f=f(x)和g=g(y)的复合函数f(g(z)4表达式替换函数subs(s)用赋值语句中给定值替换表达式中所有同名变量subs(s,old,new)用符号或数值变量new替换s中的符号变量old,103,例,clearf1=sym(exp(x)+x)*(x+2);f2=sym(a3-1);f3=sym(1/a4+2/a3+3/a2+4/a+5);f4=sym(sin(x)2+cos(x)2);collect(f1)ans=x2+(exp(x)+2)*x+2*exp(x)expand(f1)ans=exp(x)*x+2*exp(x)+x2+2*xfactor(f2)ans=(a-1)*(a2+a+1)m,n=numden(f3)%m为分子,n为分母m=1+2*a+3*a2+4*a3+5*a4n=a4simplify(f4)ans=1,104,例,clearsymsxyfinverse(1/tan(x)%求反函数,自变量为xans=atan(1/x)f=x2+y;finverse(f,y)%求反函数,自变量为yans=-x2+yclearsymsxyztu;f=1/(1+x2);g=sin(y);h=xt;p=exp(-y/u);compose(f,g)%求f=f(x)和g=g(y)的复合函数f(g(y)ans=1/(1+sin(y)2),105,例,clearsymsabsubs(a+b,a,4)%用4替代a+b中的aans=4+bsubs(cos(a)+sin(b),a,b,sym(alpha),2)%多重替换ans=cos(alpha)+sin(2)f=sym(x2+3*x+2)f=x2+3*x+2subs(f,x,2)%求解f当x=2时的值ans=12,106,3.4微积分,3.4.1极限,107,108,3.4.2微分,diff(f)求表达式f对默认自变量的一次微分值;diff(f,t)求表达式f对自变量t的一次微分值;diff(f,n)求表达式f对默认自变量的n次微分值;diff(f,t,n)求表达式f对自变量t的n次微分值。,109,110,3.4.3积分,int(f)求表达式f对默认自变量的积分值;int(f,t)求表达式f对自变量t的不定积分值;int(f,a,b)求表达式f对默认自变量的定积分值,积分区间为a,b;int(f,t,a,b)求表达式f对自变量t的定积分值,积分区间为a,b,111,112,3.5方程求解,3.5.1数学方程数学方程的求解由函数solve实现:solve(f)求解符号方程式fsolve(f1,fn)求解由f1,fn组成的数学方程组3.5.2常微分方程使用函数dsolve来求解常微分方程:dsolve(eq1,eq2,.,cond1,cond2,.,v),113,例,symsabcxf=sym(a*x*x+b*x+c=0)solve(f)ans=1/2/a*(-b+(b2-4*c*a)(1/2)1/2/a*(-b-(b2-4*c*a)(1/2)solve(1+x=sin(x)ans=-1.9345632107520242675632614537689dsolve(Dy=x,x)%求微分方程y=x的通解,指定x为自变量。ans=1/2*x2+C1dsolve(D2y=1+Dy,y(0)=1,Dy(0)=0)%求微分方程y=1+y的解,加初始条件ans=-t+exp(t)x,y=dsolve(Dx=y+x,Dy=2*x)%微分方程组的通解x=-1/2*C1*exp(-t)+C2*exp(2*t)y=C1*exp(-t)+C2*exp(2*t),114,应用举例,115,应用举例,116,应用举例,117,应用举例,118,应用举例,119,导弹追踪问题,设位于坐标原点的甲舰向位于x轴上点A(1,0)处的乙舰发射导弹,导弹头始终对准乙舰如果乙舰以最大的速度v0(常数)沿平行于y轴的直线行驶,导弹的速度是5v0,求导弹运行的曲线方程乙舰行驶多远时,导弹将它击中?,解法一(解析法),120,由(1),(2)消去t,整理得模型:,ToMATLAB(chase1),轨迹图见程序chase1,121,解法二(数值解法),1建立M文件eq1mfunctiondy=eq1(x,y)dy=zeros(2,1);dy(1)=y(2);dy(2)=1/5*sqrt(1+y(1)2)/(1-x);,2取x0=0,xf=09999,建立主程序ff6m如下:x0=0,xf=09999x,y=ode15s(eq1,x0 xf,00);plot(x,y(:,1),b)holdony=0:001:2;plot(1,y,b*),结论:导弹大致在(1,02)处击中乙舰.,ToMATLAB(ff6),令y1=y,y2=y1,将方程(3)化为一阶微分方程组,122,解法三(建立参数方程求数值解),设时刻t乙舰的坐标为(X(t),Y(t),导弹的坐标为(x(t),y(t),3因乙舰以速度v0沿直线x=1运动,设v0=1,则w=5,X=1,Y=t.,123,4解导弹运动轨迹的参数方程,建立M文件eq2m如下:functiondy=eq2(t,y)dy=zeros(2,1);dy(1)=5*(1-y(1)/sqrt(1-y(1)2+(t-y(2)2);dy(2)=5*(t-y(2)/sqrt(1-y(1)2+(t-y(2)2);,取t0=0,tf=2,建立主程序chase2m如下:t,y=ode45(eq2,02,00);Y=0:001:2;plot(1,Y,-),holdonplot(y(:,1),y(:,2),*),ToMATLAB(chase2),124,5结果见图1,导弹大致在(1,02)处击中乙舰,与前面的结论一致,图1,图2,返回,在chase2m中,按二分法逐步修改tf,即分别取tf=1,05,025,直到tf=021时,得图2,结论:时刻t=021时,导弹在(1,021)处击中乙舰,ToMATLAB(chase2),125,慢跑者与狗,一个慢跑者在平面上沿椭圆以恒定的速率v=1跑步,设椭圆方程为:x=10+20cost,y=20+5sint突然有一只狗攻击他这只狗从原点出发,以恒定速率w跑向慢跑者,狗的运动方向始终指向慢跑者分别求出w=20,w=5时狗的运动轨迹,126,地中海鲨鱼问题,意大利生物学家Ancona曾致力于鱼类种群相互制约关系的研究,从第一次世界大战期间,地中海各港口几种鱼类捕获量百分比的资料中,他发现鲨鱼等的比例有明显增加(见下表),而供其捕食的食用鱼的百分比却明显下降显然战争使捕鱼量下降,从而食用鱼增加,鲨鱼等也随之增加,但为何鲨鱼的比例大幅增加呢?,他无法解释这个现象,于是求助于著名的意大利数学家VVolterra,希望建立一个食饵捕食系统的数学模型,定量地回答这个问题,127,学好计算机的唯一途径是你的编程能力与你在计算机上投入的时间成,结束语,上机练习,正比,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!