MATLAB第二讲数值计算和符号计算.ppt

上传人:wuy****n92 文档编号:70799825 上传时间:2023-01-28 格式:PPT 页数:40 大小:213KB
返回 下载 相关 举报
MATLAB第二讲数值计算和符号计算.ppt_第1页
第1页 / 共40页
MATLAB第二讲数值计算和符号计算.ppt_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《MATLAB第二讲数值计算和符号计算.ppt》由会员分享,可在线阅读,更多相关《MATLAB第二讲数值计算和符号计算.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Matlab基础应用1第二讲第二讲 数值计算和符号运算数值计算和符号运算Matlab基础应用21.1.数值计算数值计算1.1 矩阵和数组基础矩阵和数组基础创建矩阵创建矩阵元素标识元素标识矩阵操作矩阵操作矩阵函数矩阵函数1.2 矩阵和数组的计算矩阵和数组的计算Matlab基础应用31.3 1.3 多项式运算多项式运算 MATLAB MATLAB语言把多项式表达成一个语言把多项式表达成一个行向行向量量,该向量中的元素是按,该向量中的元素是按降幂降幂排列多项式各排列多项式各项系数的,如果缺某次幂项,则该次幂项系项系数的,如果缺某次幂项,则该次幂项系数为。数为。f(x)=f(x)=a an nx xn

2、 n+a an-1n-1x xn-1n-1+a a1 1x+x+a a0 0 用行向量用行向量 p=p=a an n a an-1n-1 a a1 1 a a0 0 表示。表示。多项式多项式 行向量行向量Matlab基础应用4u可用polyval函数,计算多项式在变量为特定值的结果。1.3.1 1.3.1 多项式求值多项式求值例2:计算x=0:0.5:3时,p(x)=x3+21x2+20 x值。解:p1=1 21 20 0;x=0:0.5:3;polyval(p1,x)0 15.3750 42.0000 80.6250 132.0000 196.8750 276.0000Matlab基础应用5

3、多项式求根多项式求根 -求方程的解求方程的解例例3 3:p(x)=xp(x)=x3 3-6x-6x2 2-72x-27-72x-27u 在MATLAB利用函数:roots解:解:p=1-6-72-27r=roots(p)r=12.1229 -5.7345 -0.3884Matlab基础应用61.3.3 1.3.3 部分分式展开部分分式展开u利用residue函数来实现部分分式展开。u语法:语法:r,p,k=residue(B,A)r,p,k=residue(B,A)其中:其中:B,AB,A分别为分子、分母多项式系数行向量;分别为分子、分母多项式系数行向量;r r为为r1,r1,rnrn留数行向

4、量;留数行向量;p p为为p1p1pnpn极点行向量;极点行向量;k k为直项行向量。为直项行向量。Matlab基础应用71.3.4 1.3.4 多项式乘除运算多项式乘除运算o多项式的乘法多项式的乘法u语法:语法:p=conv(p1,p2)p=conv(p1,p2)u说明:说明:p p是多项式是多项式p1p1和和p2p2的乘积多项式。的乘积多项式。o多项式的除法多项式的除法u语法:语法:q,r=deconv(p1,p2)q,r=deconv(p1,p2)u说明:说明:p1p1被被p2p2除,商为多项式除,商为多项式q q,余数式为,余数式为r r。Matlab基础应用81.3.4 1.3.4

5、多项式乘除运算(续)多项式乘除运算(续)例4:a(x)=x2+2x+3;b(x)=4x2+5x;求c=a(x)*b(x)。解:a=1 2 3;b=4 5 0;c=conv(a,b)c=4 13 22 15 0d,r=deconv(c,a)d=4 5 0r=0 0 0 0 0Matlab基础应用9(1 1)字符串用字符数组来存储,以单引号)字符串用字符数组来存储,以单引号 来界定来界定。(2 2)常见的字符串函数)常见的字符串函数:length(str):length(str):计算字符串的长度;计算字符串的长度;double(str):double(str):查看字符串的查看字符串的ASCII

6、ASCII码码;char(x):char(x):将将ASCIIASCII码转换成字符串形式码转换成字符串形式;strcmp(x,y):strcmp(x,y):比较两字符串是否相同;比较两字符串是否相同;strcat(s1,s2,strcat(s1,s2,):):字符串级连函数字符串级连函数;findstr(x,x1):findstr(x,x1):查找查找x x中是否有中是否有x1x1;(3 3)执行字符串:)执行字符串:eval(str)eval(str)命令命令 例例1 1:str1=str1=a=2*3a=2*3;eval(str1)a=6;eval(str1)a=61.4 1.4 字符串

7、字符串Matlab基础应用10(1 1)元胞数组的基本单元是元胞,每个元胞可存放不同类型)元胞数组的基本单元是元胞,每个元胞可存放不同类型(矩阵、数组、字符串等)的数据,以(矩阵、数组、字符串等)的数据,以 来界定。来界定。(2 2)元胞数组的创建:)元胞数组的创建:方法方法1 1:直接创建:直接创建 如:如:A=A=THISTHIS,3 4;ones(3),3 4;ones(3),ONEONE,TWOTWO方法方法2 2:由各元胞创建:由各元胞创建 如:如:A(1,1)=A(1,1)=THISTHIS A(1,2)=3 4 A(1,2)=3 4 A(2,1)=ones(3)A(2,1)=on

8、es(3)A(2,2)=A(2,2)=ONEONE,TWOTWO (3)(3)元胞数组元素内容的获取:元胞数组元素内容的获取:X=AX=A 2,12,1 X=1 1 1;1 1 1;1 1 1 X=1 1 1;1 1 1;1 1 1 1.5 1.5 元胞数组元胞数组Matlab基础应用11(1 1)结构数组的基本组成是结构,每个结构都包含某一对象的)结构数组的基本组成是结构,每个结构都包含某一对象的多个域,以多个域,以.来标识域。来标识域。(2 2)结构数组的创建:)结构数组的创建:方法方法1 1:TU(1)=TU(1)=structstruct(namename,曲线曲线1 1,colorc

9、olor,redred,)方法方法2 2:TU(1).name=TU(1).name=曲线曲线1 1;TU(1).color=TU(1).color=redred TU(1).shape=TU(1).shape=sinsin;TU(1).position=0 piTU(1).position=0 pi TU(2).name=TU(2).name=曲线曲线2 2;TU(2).color=TU(2).color=blueblue TU(2).shape=TU(2).shape=coscos;TU(2).position=0 2*piTU(2).position=0 2*pi(3)(3)结构数组元素

10、内容的获取:用结构数组元素内容的获取:用.号来获取号来获取 X=TU(2).shape X=cosX=TU(2).shape X=cos1.6 1.6 结构数组结构数组Matlab基础应用121.7 1.7 数据分析数据分析u遵循的原则:遵循的原则:(1 1)如果输入是向量,则按整个向量进行)如果输入是向量,则按整个向量进行 计算。计算。(2 2)如果输入的是矩阵,则)如果输入的是矩阵,则按列按列进行运算。进行运算。因此因此:一定要将需要分析的数据按列进行分类。一定要将需要分析的数据按列进行分类。若已有的矩阵是按行进行分类的,可用矩阵的旋若已有的矩阵是按行进行分类的,可用矩阵的旋转使矩阵变成按

11、列进行分类转使矩阵变成按列进行分类Matlab基础应用13函数名函数名功能功能max(X)max(X)矩阵中各列的矩阵中各列的最大值最大值。min(X)min(X)矩阵中各列矩阵中各列最小值最小值。mean(X)mean(X)矩阵中各列矩阵中各列平均值平均值。std(X)std(X)矩阵中各列矩阵中各列标准差标准差,指各元素与该列平均,指各元素与该列平均值值(mean)(mean)之差的平方和开方。之差的平方和开方。median(X)median(X)矩阵中各列的矩阵中各列的中间元素中间元素。var(X)var(X)矩阵中各列的矩阵中各列的方差方差。C=cov(X)C=cov(X)矩阵中各列间

12、的矩阵中各列间的协方差协方差。S,k=sort(X,n)S,k=sort(X,n)沿第沿第n n维按模增大维按模增大重新排序重新排序,k k为为S S元素的元素的原位置。原位置。数据统计和相关分析数据统计和相关分析Matlab基础应用14函数名函数名功能功能diff(X,m,n)diff(X,m,n)沿第沿第n n维求第维求第m m阶列向差分阶列向差分。差分是求相邻行。差分是求相邻行(列列)之间的差,结果会减少一行(列)之间的差,结果会减少一行(列)fx,fy=gradient(Z)fx,fy=gradient(Z)对对Z Z求求x x、y y方向的方向的数值梯度数值梯度。sum(X)sum(

13、X)矩阵矩阵各列元素的和各列元素的和。cumsum(X,n)cumsum(X,n)沿第沿第n n维求维求累计和累计和cumprod(X,n)cumprod(X,n)沿第沿第n n维求维求累计乘积累计乘积trapz(x,y)trapz(x,y)梯形法求积分梯形法求积分近似于求元素和,把相邻两点数近似于求元素和,把相邻两点数据的平均值乘以步长表示面积。据的平均值乘以步长表示面积。x x为自变量,为自变量,y y为函数。为函数。cumtrapz(x,y,n)cumtrapz(x,y,n)用梯形法沿第用梯形法沿第n n维求函数维求函数y y对自变量对自变量x x累计积分累计积分。1.7.2 1.7.2

14、 差分与积分差分与积分Matlab基础应用151.7.3 1.7.3 卷积和快速傅立叶变换卷积和快速傅立叶变换-离散序列离散序列p卷积uConvConv:计算向量的卷积。计算向量的卷积。uconv2conv2:计算二维:计算二维(矩阵或二维数组矩阵或二维数组)卷积。卷积。udeconvdeconv:解卷积运算。:解卷积运算。p快速傅立叶变换快速傅立叶变换u fft fft:一维快速傅立叶变换。:一维快速傅立叶变换。u ifft ifft:一维快速傅立叶:一维快速傅立叶逆逆变换。变换。Matlab基础应用16u课程导入课程导入o求半径为5的圆的面积o数值运算:r=5 s=pi*r2 s=78.5

15、398o如果要求求解的精度保留到小数点后10位,怎样求解呢?符号运算是数值运算的扩展符号运算是数值运算的扩展,为了得到更高精度的运算结果为了得到更高精度的运算结果o符号运算:syms s r s=pi*r2 r=5 s=vpa(subs(s),32)s=78.53981633974482 符号运算符号运算Matlab基础应用172.1 2.1 符号对象的建立符号对象的建立2.1.1 2.1.1 创建符号常量(创建符号常量(symsym是是symbolicsymbolic缩写)缩写)u语法:语法:sym(常量常量)例例1 1:创建数值常量和符号常量:创建数值常量和符号常量a1=2*sqrt(5)

16、+pi%数值常量数值常量a2=sym(2*sqrt(5)+pi)%符号常量符号常量符号对象符号对象:是一种数据结构,用来存储代表符号:是一种数据结构,用来存储代表符号的的字符串字符串,包括符号常量、符号变量和符号,包括符号常量、符号变量和符号表达式,符号运算的结果也都是符号对象。表达式,符号运算的结果也都是符号对象。Matlab基础应用18(1 1)使用)使用symsym命令创建命令创建u符号变量:符号变量:sym(sym(argarg,参数参数)%参数设置数学特性参数设置数学特性,可为可为positive,real,unreal,positive,real,unreal,可省略可省略;u符号

17、表达式:符号表达式:sym(sym(表达式表达式)注意注意:符号对象必须用符号对象必须用单引号单引号括起来括起来MATLABMATLAB才能识别。才能识别。例例2 2:f=sym(f=sym(sin(x)+5*x sin(x)+5*x )f f 符号表达式名符号表达式名 sin(x)+5*x sin(x)+5*x 符号表达式符号表达式 符号标识符号标识2.1.2 2.1.2 创建符号变量和表达式创建符号变量和表达式注意注意:常数与符号变量常数与符号变量的相乘不能省的相乘不能省*(2 2)使用)使用symssyms命令创建:命令创建:一个或多个符号变量的创建一个或多个符号变量的创建 syms(s

18、yms(arg1arg1,arg2arg2,参数参数)syms arg1 arg2 syms arg1 arg2 参数参数Matlab基础应用19例例3:f1=sym(a*x2+b*x+c)%方法一方法一o whoso Name Size Bytes Classo f1 1x1 146 sym objectoGrand total is 12 elements using 146 bytessyms a b c x%方法二方法二 f2=a*x2+b*x+c whosName Size Bytes Class a 1x1 126 sym object b 1x1 126 sym object c

19、 1x1 126 sym object f2 1x1 146 sym object x 1x1 126 sym objectGrand total is 20 elements using 650 bytes注意注意:方法一只创建了符号表达式方法一只创建了符号表达式,没有创建符号变量没有创建符号变量;而方法二既创建了符号表达式而方法二既创建了符号表达式,又创建符号变量又创建符号变量.Matlab基础应用20u使用使用symsym和和symssyms命令创建命令创建A=sym(a,b;c,d)A=a,b c,dsyms f g h kB=f,g;h,k B=f,g h,k 2.1.3 2.1.3

20、 创建符号矩阵创建符号矩阵例例4:Matlab基础应用21(1 1)数值运算保留)数值运算保留8 8位有效位数位有效位数,每一次数值运算有一定的每一次数值运算有一定的截截断误差断误差,重复的多次数值运算就可能会造成很大的,重复的多次数值运算就可能会造成很大的累累积误差积误差;符号运算不进行数值计算,无截断误差。;符号运算不进行数值计算,无截断误差。(2 2)符号运算可以得出完全的封闭解或任意精度的数值解。)符号运算可以得出完全的封闭解或任意精度的数值解。(3 3)符号运算的时间较长,而数值运算速度快。)符号运算的时间较长,而数值运算速度快。(4 4)数值运算中必须先对变量赋值;符号运算无须事先

21、对变数值运算中必须先对变量赋值;符号运算无须事先对变量赋值量赋值,但,但必须先定义必须先定义,运算结果以标准的符号表达,运算结果以标准的符号表达式形式给出。式形式给出。2.2.1 2.2.1 符号运算与数值运算的区别符号运算与数值运算的区别2.2 2.2 符号运算符号运算Matlab基础应用22(1 1)基本运算符)基本运算符u符号矩阵:符号矩阵:“+”,“-”,“*”,“”,“/”,“”,“”符号数组:符号数组:“.*.*”,“././”,“.”,“.”,“.”(2 2)关系运算符)关系运算符u运算符运算符只有只有“=”,“=”。2.2.2 2.2.2 符号运算中的运算符符号运算中的运算符M

22、atlab基础应用232.2.3 2.2.3 符号运算中的函数运算符号运算中的函数运算(1 1)三角函数和双曲函数三角函数和双曲函数 除除atan2atan2外与数值运算外与数值运算(包括使用方法包括使用方法)相同。相同。(2 2)指数和对数函数指数和对数函数 没有没有log2log2和和log10log10,其余与数值运算相同。,其余与数值运算相同。(3 3)复数运算复数运算 没有提供相角的命令,其余与数值运算相同。没有提供相角的命令,其余与数值运算相同。(4 4)矩阵代数命令矩阵代数命令 与数值运算相同。与数值运算相同。Matlab基础应用24例例5 5:求符号矩阵求符号矩阵 的行列式值、

23、的行列式值、共轭转置和特征值。共轭转置和特征值。syms a11 a12 a21 a22A=a11,a12;a21,a22;det(A)%计算行列式值计算行列式值A%计算共轭转置计算共轭转置eig(A)%计算特征值计算特征值Matlab基础应用252.2.4 2.2.4 符号运算任意精度控制符号运算任意精度控制(1 1)设置默认的全局精度)设置默认的全局精度u语法:语法:digits(n)%ndigits(n)%n为期望的有效位数,默认为期望的有效位数,默认 的为的为3232位。位。(2 2)把单个对象)把单个对象s s表示为表示为n n位有效位数的符号对象位有效位数的符号对象u语法:语法:S

24、=vpa(s,n)%nS=vpa(s,n)%n省略时按省略时按digitsdigits给定的给定的 精度精度Matlab基础应用26a1=2/3a1=0.6667%数值型a2=sym(2/3)a2=2/3digitsdigits=32%默认的32位有理数型vpa(a2)ans=.66666666666666666666666666666667a3=vpa(2/3,15)a3=0.666666666666667%VPA型例例6:Matlab基础应用272.2.5 2.2.5 数值对象与符号对象的相互转换数值对象与符号对象的相互转换u将数值对象转化为符号对象将数值对象转化为符号对象 格式:格式:s

25、ym(s)sym(s)或或vpa(s),vpa(s),其中其中s s为数值对象为数值对象 例例7 7:A=2.5,1.8;1/1.6,3/5 A=2.5,1.8;1/1.6,3/5 B=sym(A)B=sym(A)或或B=vpa(A,n)B=vpa(A,n)u将符号对象转化为数值对象将符号对象转化为数值对象 格式:格式:numeric(s)numeric(s)或或double(s)double(s)或或evaleval(s),(s),其中其中s s为符号对象为符号对象 例例8 8:a1=sym(a1=sym(2*sqrt(5)2*sqrt(5)a2=eval(a1)a2=eval(a1)ans

26、=4.4721 ans=4.4721Matlab基础应用282.3.2.3.符号表达式的操作符号表达式的操作(1 1)当符号表达式中含有多个符号变量时,例如)当符号表达式中含有多个符号变量时,例如“f=x+yf=x+y”,则只有一个变量是独立变量,其余的符号变量当作,则只有一个变量是独立变量,其余的符号变量当作常量来处理。常量来处理。(2 2)若没有指定自由变量,)若没有指定自由变量,MATLABMATLAB按如下规则选择自由变按如下规则选择自由变量:量:小写小写i i和和j j不能做自由变量不能做自由变量选择自由变量的顺序:首选选择自由变量的顺序:首选x x,没有,没有x x选择字母顺序离选

27、择字母顺序离x x最最近的字符变量;若与近的字符变量;若与x x距离相同,则在距离相同,则在x x后面的优先。后面的优先。大写字母比小写字母都靠后大写字母比小写字母都靠后函数确定自由变量:函数确定自由变量:语法:语法:findsym(EXPR,1)findsym(EXPR,1)2.3.1 2.3.1 自由变量的确定自由变量的确定Matlab基础应用292.3.2 2.3.2 符号表达式的函数操作符号表达式的函数操作u合并、化简、展开等函数合并、化简、展开等函数ucollect(f)collect(f):将表达式:将表达式 f f中相同幂次的中相同幂次的项合并项合并;ufactor(f)fact

28、or(f):将表达式:将表达式 f f因式分解因式分解;usimplify(f)simplify(f):利用代数中的函数规则对表达式:利用代数中的函数规则对表达式化简化简;uexpand(f)expand(f):将符号表达式:将符号表达式展开成多项式展开成多项式的形式的形式u反函数和复合函数反函数和复合函数ufinverse(f,v)finverse(f,v):求指定变量:求指定变量v v的函数的函数f(v)f(v)的反函数的反函数ucompose(f,g,z)compose(f,g,z):求:求 f(x)f(x)和和g(y)g(y)的复合函数的复合函数f(g(z)f(g(z)Matlab基础

29、应用302.3.3 2.3.3 符号表达式的替换符号表达式的替换usubssubs函数用来对符号表达式中的符号变量或字函数用来对符号表达式中的符号变量或字符串进行替换,从而化简符号表达式。符串进行替换,从而化简符号表达式。u语法:语法:(1 1)subs(s)%subs(s)%用给定值替换用给定值替换s s中赋值的变量中赋值的变量(2 2)subs(s,old,new)subs(s,old,new)s s 为符号表达式;为符号表达式;old old 为旧符号变量;为旧符号变量;new new 为新值或表达式;为新值或表达式;Matlab基础应用31用subs函数对符号表达式 进行替换。例9:f

30、=sym(x+y)2+3*(x+y)+5)x=5;f1=subs(f)f1=(5+y)2+3*(5+y)+5 f2=subs(f,x+y,z)f2=z2+3*z+5 Matlab基础应用322.4 2.4 符号方程求解符号方程求解u代数方程代数方程u代数方程的求解由函数代数方程的求解由函数solvesolve实现:实现:u语法:语法:usolve(f)solve(f)求解符号方程求解符号方程f f usolve(f1,solve(f1,fn),fn)求解由求解由f1,f1,fn,fn组成的组成的代数方程组代数方程组 u常微分方程常微分方程u使用函数使用函数dsolvedsolve来求解常微分方

31、程来求解常微分方程u语法:语法:dsolve(dsolve(eqeq,condcond,v v)dsolve(eq1,eq2,cond1,cond2,.,v)dsolve(eq1,eq2,cond1,cond2,.,v)Matlab基础应用33例10:1.求代数方程求代数方程a*x*x+b*x+c=0的解的解 f=sym(a*x*x+b*x+c=0)solve(f)2.求微分方程求微分方程y=x的通解,指定的通解,指定x为自由变量。为自由变量。dsolve(Dy=x,x)%注意注意y的输入方法的输入方法3.求微分方程求微分方程y=1+y的特解,加初始条件的特解,加初始条件y(0)=1,y(0)

32、=0dsolve(D2y=1+Dy,y(0)=1,Dy(0)=0)4.微分方程组的通解微分方程组的通解x,y=dsolve(Dx=y+x,Dy=2*x)u注意微分表达式和初始条件的输入方法。注意微分表达式和初始条件的输入方法。Matlab基础应用342.5 2.5 符号微积分符号微积分p符号微分符号微分u语法:语法:udiff(f)diff(f)求求f f对对自由变量自由变量的一阶微分的一阶微分udiff(f,diff(f,v v)求求f f对符号对符号变量变量v v的一阶微分的一阶微分udiff(f,diff(f,v v,n),n)求求f f对符号变量对符号变量v v求求n n阶阶微分微分o

33、符号积分符号积分u语法:语法:uint(f,int(f,v v)求表达式求表达式f f的对符号变量的对符号变量v v的的不定积不定积分分uint(f,int(f,v v,a,b),a,b)求表达式求表达式f f的对符号变量的对符号变量v v的在的在(a,b)(a,b)范围内范围内定积分定积分Matlab基础应用35例例11:Matlab基础应用36例例12:Matlab基础应用372.6 符号积分变换F=fourier(f,t,w)求时域函数f(t)的傅立叶变换F(w)f=ifourier(F,w,t)求频域函数F(w)的傅立叶反变换o 傅立叶(Fourier)变换及其反变换F=laplace

34、(f,t,s)求时域函数f(t)的拉普拉斯变换f=ilaplace(F,s,t)求频域函数F的拉普拉斯反变换o 拉普拉斯(Laplace)变换及其反变换o Z变换及其反变换F=ztrans(f,n,z)求时域序列f(n)的Z变换f=iztrans(F,z,n)求频域序列F的Z反变换Matlab基础应用38uMATLAB提供了十多个绘图命令,可以很容易地将符号表达式图形化,这些命令开头为“ez”(1)绘制符号函数的二维曲线u语法:ezplot(f,xmin,xmax,fig)u说明:f:是将要画的符号函数;xmin,xmax:是自变量范围,默认值为-2pi,2pi;fig:是指定的图形窗口,默认

35、为当前窗口。(2)绘制符号函数的三维曲线uezplot3(x,y,z,tmin,tmax,animate)u说明:x,y,z分别为符号函数x(t),y(t),z(t);tmin,tmax为t的范围,可省略;animate用来设置动画的绘制曲线过程,可省略。2.7 符号函数的可视化Matlab基础应用391.计算f(t)=1/t的Fourier变换Fsyms t wF=fourier(1/t,t,w)2.求1/(s+2)的拉普拉斯的反变换syms s tf1=ilaplace(1/(s+2),s,t)ezplot(1/(s+2)3.求函数f=2n的Z变换syms n z f=2*nFz=ztrans(2*n,n,z)例13:Matlab基础应用40扩展阅读o符号极限和符号级数o图形化的符号函数计算器oMaple接口

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁