MATLAB第二讲数值计算和符号计算_第1页
MATLAB第二讲数值计算和符号计算_第2页
MATLAB第二讲数值计算和符号计算_第3页
MATLAB第二讲数值计算和符号计算_第4页
MATLAB第二讲数值计算和符号计算_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、 15.3750 42.0000 80.6250 132.0000 196.8750 276.00001.3.2多项式求根 -求方程的解例3:p(x)=x3-6x2-72x-27 在MATLAB利用函数:roots解:p=1 -6 -72 -27r=roots(p)r =12.1229 -5.7345 -0.38841.3.3 部分分式展开利用residue函数来实现部分分式展开。语法:r,p,k=residue(B,A) 其中:B,A分别为分子、分母多项式系数行向量; r为r1,rn留数行向量; p为p1pn极点行向量; k为直项行向量。1.3.4 多项式乘除运算多项式的乘法语法:p=con

3、v(p1,p2)说明:p是多项式p1和p2的乘积多项式。多项式的除法语法:q,r=deconv(p1,p2)说明:p1被p2除,商为多项式q,余数式为r。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 0r = 0 0 0 0 0(1)字符串用字符数组来存储,以单引号 来界定。(2)常见的字符串函数: length(str):计算字符串的长度; double(str):查看字符串的ASCII码

4、; 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=61.4 字符串(1)元胞数组的基本单元是元胞,每个元胞可存放不同类型(矩阵、数组、字符串等)的数据,以 来界定。(2)元胞数组的创建: 方法1:直接创建 如:A=THIS,3 4;ones(3),ONE,TWO方法2:由各元胞创建 如:A(1,1)=THIS A(1,2)=3 4 A(2,1)=on

5、es(3) A(2,2)=ONE,TWO (3)元胞数组元素内容的获取: X=A2,1 X=1 1 1; 1 1 1; 1 1 1 1.5 元胞数组(1)结构数组的基本组成是结构,每个结构都包含某一对象的多个域,以.来标识域。(2)结构数组的创建: 方法1:TU(1)=struct(name,曲线1,color,red,) 方法2:TU(1).name=曲线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

6、=0 2*pi(3)结构数组元素内容的获取:用.号来获取 X=TU(2).shape X=cos1.6 结构数组1.7 数据分析遵循的原则: (1)如果输入是向量,则按整个向量进行 计算。 (2)如果输入的是矩阵,则按列进行运算。因此:一定要将需要分析的数据按列进行分类。若已有的矩阵是按行进行分类的,可用矩阵的旋转使矩阵变成按列进行分类函数名功能max(X)矩阵中各列的最大值。min(X)矩阵中各列最小值。mean(X)矩阵中各列平均值。std(X)矩阵中各列标准差,指各元素与该列平均值(mean)之差的平方和开方。median(X)矩阵中各列的中间元素。var(X)矩阵中各列的方差。C=co

7、v(X)矩阵中各列间的协方差。S,k=sort(X,n)沿第n维按模增大重新排序,k为S元素的原位置。1.7.1数据统计和相关分析函数名功能diff(X,m,n)沿第n维求第m阶列向差分。差分是求相邻行(列)之间的差,结果会减少一行(列)fx,fy=gradient(Z)对Z求x、y方向的数值梯度。sum(X)矩阵各列元素的和。cumsum(X,n)沿第n维求累计和cumprod(X,n)沿第n维求累计乘积trapz(x,y)梯形法求积分近似于求元素和,把相邻两点数据的平均值乘以步长表示面积。x为自变量,y为函数。cumtrapz(x,y,n)用梯形法沿第n维求函数y对自变量x累计积分。1.7

8、.2 差分与积分1.7.3 卷积和快速傅立叶变换-离散序列卷积Conv: 计算向量的卷积。 conv2:计算二维(矩阵或二维数组)卷积。deconv:解卷积运算。 快速傅立叶变换 fft:一维快速傅立叶变换。 ifft:一维快速傅立叶逆变换。课程导入求半径为5的圆的面积数值运算: r=5 s=pi*r2 s = 78.5398如果要求求解的精度保留到小数点后10位,怎样求解呢?符号运算是数值运算的扩展,为了得到更高精度的运算结果符号运算:syms s r s=pi*r2 r=5 s=vpa(subs(s),32) s =78.5398163397448 3096882 符号运算2.1 符号对象

9、的建立2.1.1 创建符号常量(sym是symbolic缩写)语法:sym(常量) 例1:创建数值常量和符号常量a1=2*sqrt(5)+pi %数值常量a2=sym(2*sqrt(5)+pi) %符号常量符号对象:是一种数据结构,用来存储代表符号的字符串,包括符号常量、符号变量和符号表达式,符号运算的结果也都是符号对象。 (1)使用sym命令创建符号变量: sym(arg,参数) %参数设置数学特性, 可为positive,real,unreal,可省略;符号表达式:sym(表达式) 注意:符号对象必须用单引号括起来MATLAB才能识别。例2: f =sym(sin(x)+5*x ) f 符

10、号表达式名 sin(x)+5*x 符号表达式 符号标识2.1.2 创建符号变量和表达式注意:常数与符号变量的相乘不能省*(2)使用syms命令创建:一个或多个符号变量的创建 syms(arg1,arg2,参数) syms arg1 arg2 参数例3:f1=sym(a*x2+b*x+c) %方法一 whos Name Size Bytes Class f1 1x1 146 sym objectGrand total is 12 elements using 146 bytessyms a b c x %方法二 f2=a*x2+b*x+c whosName Size Bytes Class a

11、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注意:方法一只创建了符号表达式,没有创建符号变量;而方法二既创建了符号表达式,又创建符号变量.使用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:(1)数值运算保留8位有效位数,每

12、一次数值运算有一定的截断误差,重复的多次数值运算就可能会造成很大的累积误差;符号运算不进行数值计算,无截断误差。(2)符号运算可以得出完全的封闭解或任意精度的数值解。(3)符号运算的时间较长,而数值运算速度快。(4)数值运算中必须先对变量赋值;符号运算无须事先对变量赋值,但必须先定义,运算结果以标准的符号表达式形式给出。2.2.1 符号运算与数值运算的区别2.2 符号运算(1)基本运算符符号矩阵:“+”,“-”,“*”,“”,“/”, “”, “ ” 符号数组:“.*”,“./”,“.”,“.”, “. ”(2)关系运算符运算符只有“=”,“=”。2.2.2 符号运算中的运算符2.2.3 符号

13、运算中的函数运算(1)三角函数和双曲函数 除atan2外与数值运算(包括使用方法)相同。(2)指数和对数函数 没有log2和log10,其余与数值运算相同。(3)复数运算 没有提供相角的命令,其余与数值运算相同。(4)矩阵代数命令 与数值运算相同。例5: 求符号矩阵 的行列式值、共轭转置和特征值。 syms a11 a12 a21 a22A=a11,a12;a21,a22;det(A) %计算行列式值A %计算共轭转置eig(A) %计算特征值2.2.4 符号运算任意精度控制(1)设置默认的全局精度语法:digits(n) %n为期望的有效位数,默认 的为32位。(2)把单个对象s表示为n位有

14、效位数的符号对象语法:S=vpa(s,n) %n省略时按digits给定的 精度a1=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: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,

15、n)将符号对象转化为数值对象 格式:numeric(s)或double(s)或eval(s), 其中s为符号对象 例8:a1=sym(2*sqrt(5) a2=eval(a1) ans=4.47212.3.符号表达式的操作(1)当符号表达式中含有多个符号变量时,例如“f=x+y”,则只有一个变量是独立变量,其余的符号变量当作常量来处理。(2)若没有指定自由变量,MATLAB按如下规则选择自由变量:小写i和j不能做自由变量选择自由变量的顺序:首选x,没有x选择字母顺序离x最近的字符变量;若与x距离相同,则在x后面的优先。大写字母比小写字母都靠后函数确定自由变量: 语法:findsym(EXPR,

16、1)2.3.1 自由变量的确定2.3.2 符号表达式的函数操作合并、化简、展开等函数collect(f):将表达式 f中相同幂次的项合并;factor(f):将表达式 f因式分解;simplify(f):利用代数中的函数规则对表达式化简;expand(f):将符号表达式展开成多项式的形式反函数和复合函数finverse(f,v):求指定变量v的函数f(v)的反函数compose(f,g,z):求 f(x)和g(y)的复合函数f(g(z)2.3.3 符号表达式的替换subs函数用来对符号表达式中的符号变量或字符串进行替换,从而化简符号表达式。语法:(1)subs(s) %用给定值替换s中赋值的变

17、量(2)subs(s,old, new) s 为符号表达式; old 为旧符号变量; new 为新值或表达式;用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 2.4 符号方程求解代数方程代数方程的求解由函数solve实现:语法:solve(f) 求解符号方程f solve(f1,fn) 求解由f1,fn组成的代数方程组 常微分方程使用函数dsolve来求解常微分方程语法: dsolve(eq, cond, v) dso

18、lve(eq1, eq2, cond1,cond2, ., v)例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) 注意微分表达式和初始条件的输入方法。 2.5 符号微积分符号微分语法:diff(f) 求f对自由变量的一阶微分diff(f,v) 求f对符号变量v的一阶微分diff(f,v,n) 求f对符号变量v求n阶微分符号积分语法:int(f,v) 求表达式f的对符号变量v的不定积分int(f,v,a,b) 求表达式f的对符号变量v的在(a,b)范围内定积分例11:例12:2.6 符号积分变换F=fourier(f,t,w)求时域函数f(t)的傅立叶变换F(w)f=ifourier(F,w,t)求频域函数F(w)的傅立叶反变换 傅立叶(Fourier)变换及其反变换F=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论