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

上传人:牧羊曲112 文档编号:6512068 上传时间:2023-11-08 格式:PPT 页数:40 大小:213KB
返回 下载 相关 举报
MATLAB第二讲数值计算和符号计算.ppt_第1页
第1页 / 共40页
MATLAB第二讲数值计算和符号计算.ppt_第2页
第2页 / 共40页
MATLAB第二讲数值计算和符号计算.ppt_第3页
第3页 / 共40页
MATLAB第二讲数值计算和符号计算.ppt_第4页
第4页 / 共40页
MATLAB第二讲数值计算和符号计算.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《MATLAB第二讲数值计算和符号计算.ppt》由会员分享,可在线阅读,更多相关《MATLAB第二讲数值计算和符号计算.ppt(40页珍藏版)》请在三一办公上搜索。

1、Matlab基础应用,1,第二讲 数值计算和符号运算,Matlab基础应用,2,1.数值计算,1.1 矩阵和数组基础创建矩阵元素标识矩阵操作矩阵函数1.2 矩阵和数组的计算,Matlab基础应用,3,1.3 多项式运算,MATLAB语言把多项式表达成一个行向量,该向量中的元素是按降幂排列多项式各项系数的,如果缺某次幂项,则该次幂项系数为。f(x)=anxn+an-1xn-1+a1x+a0 用行向量 p=an an-1 a1 a0表示。,多项式 行向量,Matlab基础应用,4,可用polyval函数,计算多项式在变量为特定值的结果。,1.3.1 多项式求值,例2:计算x=0:0.5:3时,p(

2、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.0000,Matlab基础应用,5,多项式求根-求方程的解,例3:p(x)=x3-6x2-72x-27,在MATLAB利用函数:roots,解:p=1-6-72-27r=roots(p)r=12.1229-5.7345-0.3884,Matlab基础应用,6,1.3.3 部分分式展开,利用residue函数来实现部分分式展开。,语法:r,p,k=residue(B,A)其中:B,A分别为分

3、子、分母多项式系数行向量;r为r1,rn留数行向量;p为p1pn极点行向量;k为直项行向量。,Matlab基础应用,7,1.3.4 多项式乘除运算,多项式的乘法语法:p=conv(p1,p2)说明:p是多项式p1和p2的乘积多项式。多项式的除法语法:q,r=deconv(p1,p2)说明:p1被p2除,商为多项式q,余数式为r。,Matlab基础应用,8,1.3.4 多项式乘除运算(续),例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

4、 0r=0 0 0 0 0,Matlab基础应用,9,(1)字符串用字符数组来存储,以单引号 来界定。(2)常见的字符串函数:length(str):计算字符串的长度;double(str):查看字符串的ASCII码;char(x):将ASCII码转换成字符串形式;strcmp(x,y):比较两字符串是否相同;strcat(s1,s2,):字符串级连函数;findstr(x,x1):查找x中是否有x1;(3)执行字符串:eval(str)命令 例1:str1=a=2*3;eval(str1)a=6,1.4 字符串,Matlab基础应用,10,(1)元胞数组的基本单元是元胞,每个元胞可存放不同类

5、型(矩阵、数组、字符串等)的数据,以 来界定。(2)元胞数组的创建:方法1:直接创建 如:A=THIS,3 4;ones(3),ONE,TWO方法2:由各元胞创建 如:A(1,1)=THIS A(1,2)=3 4 A(2,1)=ones(3)A(2,2)=ONE,TWO(3)元胞数组元素内容的获取:X=A2,1 X=1 1 1;1 1 1;1 1 1,1.5 元胞数组,Matlab基础应用,11,(1)结构数组的基本组成是结构,每个结构都包含某一对象的多个域,以.来标识域。(2)结构数组的创建:方法1:TU(1)=struct(name,曲线1,color,red,)方法2:TU(1).nam

6、e=曲线1;TU(1).color=red TU(1).shape=sin;TU(1).position=0 pi TU(2).name=曲线2;TU(2).color=blue TU(2).shape=cos;TU(2).position=0 2*pi(3)结构数组元素内容的获取:用.号来获取 X=TU(2).shape X=cos,1.6 结构数组,Matlab基础应用,12,1.7 数据分析,遵循的原则:(1)如果输入是向量,则按整个向量进行 计算。(2)如果输入的是矩阵,则按列进行运算。,因此:一定要将需要分析的数据按列进行分类。若已有的矩阵是按行进行分类的,可用矩阵的旋转使矩阵变成按

7、列进行分类,Matlab基础应用,13,数据统计和相关分析,Matlab基础应用,14,1.7.2 差分与积分,Matlab基础应用,15,1.7.3 卷积和快速傅立叶变换-离散序列,卷积,Conv:计算向量的卷积。conv2:计算二维(矩阵或二维数组)卷积。deconv:解卷积运算。,快速傅立叶变换,fft:一维快速傅立叶变换。ifft:一维快速傅立叶逆变换。,Matlab基础应用,16,课程导入,求半径为5的圆的面积,数值运算:r=5 s=pi*r2 s=78.5398,如果要求求解的精度保留到小数点后10位,怎样求解呢?,符号运算是数值运算的扩展,为了得到更高精度的运算结果,符号运算:s

8、yms s r s=pi*r2 r=5 s=vpa(subs(s),32)s=78.5398163397448,2 符号运算,Matlab基础应用,17,2.1 符号对象的建立,2.1.1 创建符号常量(sym是symbolic缩写)语法:sym(常量),例1:创建数值常量和符号常量a1=2*sqrt(5)+pi%数值常量a2=sym(2*sqrt(5)+pi)%符号常量,符号对象:是一种数据结构,用来存储代表符号的字符串,包括符号常量、符号变量和符号表达式,符号运算的结果也都是符号对象。,Matlab基础应用,18,(1)使用sym命令创建符号变量:sym(arg,参数)%参数设置数学特性,

9、可为positive,real,unreal,可省略;符号表达式:sym(表达式)注意:符号对象必须用单引号括起来MATLAB才能识别。,例2:f=sym(sin(x)+5*x)f 符号表达式名 sin(x)+5*x 符号表达式 符号标识,2.1.2 创建符号变量和表达式,注意:常数与符号变量的相乘不能省*,(2)使用syms命令创建:一个或多个符号变量的创建 syms(arg1,arg2,参数)syms arg1 arg2 参数,Matlab基础应用,19,例3:f1=sym(a*x2+b*x+c)%方法一 whos Name Size Bytes Class f1 1x1 146 sym

10、objectGrand 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 1x1 126 sym object f2 1x1 146 sym object x 1x1 126 sym objectGrand total is 20 elements using 650 bytes,注意:方法一只创建了符号表达式,没有创建符号变量;而方法二既创建了符号表达式,又创建符号变量.

11、,Matlab基础应用,20,使用sym和syms命令创建,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 创建符号矩阵,例4:,Matlab基础应用,21,(1)数值运算保留8位有效位数,每一次数值运算有一定的截断误差,重复的多次数值运算就可能会造成很大的累积误差;符号运算不进行数值计算,无截断误差。(2)符号运算可以得出完全的封闭解或任意精度的数值解。(3)符号运算的时间较长,而数值运算速度快。(4)数值运算中必须先对变量赋值;符号运算无须事先对变量赋值,但必须先定义,运算结果以标准的符号表达式形式给出。,2.2.1

12、 符号运算与数值运算的区别,2.2 符号运算,Matlab基础应用,22,(1)基本运算符符号矩阵:“+”,“-”,“*”,“”,“/”,“”,“”符号数组:“.*”,“./”,“.”,“.”,“.”(2)关系运算符运算符只有“=”,“=”。,2.2.2 符号运算中的运算符,Matlab基础应用,23,2.2.3 符号运算中的函数运算,(1)三角函数和双曲函数 除atan2外与数值运算(包括使用方法)相同。(2)指数和对数函数 没有log2和log10,其余与数值运算相同。(3)复数运算 没有提供相角的命令,其余与数值运算相同。(4)矩阵代数命令 与数值运算相同。,Matlab基础应用,24,

13、例5:求符号矩阵 的行列式值、共轭转置和特征值。,syms a11 a12 a21 a22A=a11,a12;a21,a22;det(A)%计算行列式值A%计算共轭转置eig(A)%计算特征值,Matlab基础应用,25,2.2.4 符号运算任意精度控制,(1)设置默认的全局精度语法:digits(n)%n为期望的有效位数,默认 的为32位。(2)把单个对象s表示为n位有效位数的符号对象语法:S=vpa(s,n)%n省略时按digits给定的 精度,Matlab基础应用,26,a1=2/3a1=0.6667%数值型a2=sym(2/3)a2=2/3,digitsdigits=32%默认的32位

14、有理数型vpa(a2)ans=.66666666666666666666666666666667a3=vpa(2/3,15)a3=0.666666666666667%VPA型,例6:,Matlab基础应用,27,2.2.5 数值对象与符号对象的相互转换,将数值对象转化为符号对象 格式:sym(s)或vpa(s),其中s为数值对象 例7:A=2.5,1.8;1/1.6,3/5 B=sym(A)或B=vpa(A,n)将符号对象转化为数值对象 格式:numeric(s)或double(s)或eval(s),其中s为符号对象 例8:a1=sym(2*sqrt(5)a2=eval(a1)ans=4.47

15、21,Matlab基础应用,28,2.3.符号表达式的操作,(1)当符号表达式中含有多个符号变量时,例如“f=x+y”,则只有一个变量是独立变量,其余的符号变量当作常量来处理。(2)若没有指定自由变量,MATLAB按如下规则选择自由变量:小写i和j不能做自由变量选择自由变量的顺序:首选x,没有x选择字母顺序离x最近的字符变量;若与x距离相同,则在x后面的优先。大写字母比小写字母都靠后函数确定自由变量:语法:findsym(EXPR,1),2.3.1 自由变量的确定,Matlab基础应用,29,2.3.2 符号表达式的函数操作,合并、化简、展开等函数collect(f):将表达式 f中相同幂次的

16、项合并;factor(f):将表达式 f因式分解;simplify(f):利用代数中的函数规则对表达式化简;expand(f):将符号表达式展开成多项式的形式反函数和复合函数finverse(f,v):求指定变量v的函数f(v)的反函数compose(f,g,z):求 f(x)和g(y)的复合函数f(g(z),Matlab基础应用,30,2.3.3 符号表达式的替换,subs函数用来对符号表达式中的符号变量或字符串进行替换,从而化简符号表达式。语法:(1)subs(s)%用给定值替换s中赋值的变量(2)subs(s,old,new)s 为符号表达式;old 为旧符号变量;new 为新值或表达式

17、;,Matlab基础应用,31,用subs函数对符号表达式 进行替换。,例9:,f=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基础应用,32,2.4 符号方程求解,代数方程代数方程的求解由函数solve实现:语法:solve(f)求解符号方程f solve(f1,fn)求解由f1,fn组成的代数方程组 常微分方程使用函数dsolve来求解常微分方程语法:dsolve(eq,cond,v)dsolve(eq1,eq2,cond1,cond2,.,v),Matlab

18、基础应用,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)=0dsolve(D2y=1+Dy,y(0)=1,Dy(0)=0)4.微分方程组的通解x,y=dsolve(Dx=y+x,Dy=2*x),注意微分表达式和初始条件的输入方法。,Matlab基础应用,34,2.5 符号微积分,符号微分语法:diff(f)求f对自由变量的一阶微分diff(f,v)求f对符号变量v的一阶

19、微分diff(f,v,n)求f对符号变量v求n阶微分符号积分语法:int(f,v)求表达式f的对符号变量v的不定积分int(f,v,a,b)求表达式f的对符号变量v的在(a,b)范围内定积分,Matlab基础应用,35,例11:,Matlab基础应用,36,例12:,Matlab基础应用,37,2.6 符号积分变换,F=fourier(f,t,w)求时域函数f(t)的傅立叶变换F(w)f=ifourier(F,w,t)求频域函数F(w)的傅立叶反变换,傅立叶(Fourier)变换及其反变换,F=laplace(f,t,s)求时域函数f(t)的拉普拉斯变换f=ilaplace(F,s,t)求频域

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

21、animate)说明:x,y,z分别为符号函数x(t),y(t),z(t);tmin,tmax为t的范围,可省略;animate用来设置动画的绘制曲线过程,可省略。,2.7 符号函数的可视化,Matlab基础应用,39,1.计算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,扩展阅读,符号极限和符号级数图形化的符号函数计算器Maple接口,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号