您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > MATLAB第二讲__数值计算和符号计算
Matlab基础应用1第二讲数值计算和符号运算Matlab基础应用21.数值计算1.1矩阵和数组基础•创建矩阵•元素标识•矩阵操作•矩阵函数1.2矩阵和数组的计算Matlab基础应用31.3多项式运算MATLAB语言把多项式表达成一个行向量,该向量中的元素是按降幂排列多项式各项系数的,如果缺某次幂项,则该次幂项系数为0。f(x)=anxn+an-1xn-1+……a1x+a0用行向量p=[anan-1……a1a0]表示。多项式行向量Matlab基础应用4可用polyval函数,计算多项式在变量为特定值的结果。1.3.1多项式求值例2:计算x=0:0.5:3时,p(x)=x3+21x2+20x值。解:p1=[121200];x=0:0.5:3;polyval(p1,x)015.375042.000080.6250132.0000196.8750276.0000Matlab基础应用51.3.2多项式求根---求方程的解例3:p(x)=x3-6x2-72x-27在MATLAB利用函数:roots解:p=[1-6-72-27]r=roots(p)r=12.1229-5.7345-0.3884Matlab基础应用61.3.3部分分式展开)(...)()(2211skpsrpsrpsrsAsBnn利用residue函数来实现部分分式展开。语法:[r,p,k]=residue(B,A)其中:B,A分别为分子、分母多项式系数行向量;r为[r1,…rn]留数行向量;p为[p1…pn]极点行向量;k为直项行向量。Matlab基础应用71.3.4多项式乘除运算多项式的乘法语法:p=conv(p1,p2)说明:p是多项式p1和p2的乘积多项式。多项式的除法语法:[q,r]=deconv(p1,p2)说明:p1被p2除,商为多项式q,余数式为r。Matlab基础应用81.3.4多项式乘除运算(续)例4:a(x)=x2+2x+3;b(x)=4x2+5x;求c=a(x)*b(x)。解:a=[123];b=[450];c=conv(a,b)c=41322150[d,r]=deconv(c,a)d=450r=00000Matlab基础应用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=61.4字符串Matlab基础应用10(1)元胞数组的基本单元是元胞,每个元胞可存放不同类型(矩阵、数组、字符串等)的数据,以{}来界定。(2)元胞数组的创建:方法1:直接创建如:A={‘THIS’,[34];ones(3),{‘ONE’,‘TWO’}}方法2:由各元胞创建如:A(1,1)={‘THIS’}A(1,2)={[34]}A(2,1)={ones(3)}A(2,2)={{‘ONE’,‘TWO’}}(3)元胞数组元素内容的获取:X=A{2,1}X=[111;111;111]1.5元胞数组Matlab基础应用11(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=[0pi]TU(2).name=‘曲线2’;TU(2).color=‘blue’TU(2).shape=‘cos’;TU(2).position=[02*pi](3)结构数组元素内容的获取:用‘.’号来获取X=TU(2).shapeX=cos1.6结构数组Matlab基础应用121.7数据分析遵循的原则:(1)如果输入是向量,则按整个向量进行计算。(2)如果输入的是矩阵,则按列进行运算。因此:一定要将需要分析的数据按列进行分类。若已有的矩阵是按行进行分类的,可用矩阵的旋转使矩阵变成按列进行分类.Matlab基础应用13函数名功能max(X)矩阵中各列的最大值。min(X)矩阵中各列最小值。mean(X)矩阵中各列平均值。std(X)矩阵中各列标准差,指各元素与该列平均值(mean)之差的平方和开方。median(X)矩阵中各列的中间元素。var(X)矩阵中各列的方差。C=cov(X)矩阵中各列间的协方差。[S,k]=sort(X,n)沿第n维按模增大重新排序,k为S元素的原位置。1.7.1数据统计和相关分析Matlab基础应用14函数名功能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.2差分与积分Matlab基础应用151.7.3卷积和快速傅立叶变换--离散序列卷积Conv:计算向量的卷积。conv2:计算二维(矩阵或二维数组)卷积。deconv:解卷积运算。快速傅立叶变换fft:一维快速傅立叶变换。ifft:一维快速傅立叶逆变换。Matlab基础应用16课程导入求半径为5的圆的面积数值运算:r=5s=pi*r^2s=78.5398如果要求求解的精度保留到小数点后10位,怎样求解呢?※符号运算是数值运算的扩展,为了得到更高精度的运算结果符号运算:symssrs=pi*r^2r=5s=vpa(subs(s),32)s=78.5398163397448309615660845819882符号运算Matlab基础应用172.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’,参数)%参数设置数学特性,可为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’,…,参数)symsarg1arg2…参数Matlab基础应用19例3:f1=sym(‘a*x^2+b*x+c’)%方法一whosNameSizeBytesClassf11x1146symobjectGrandtotalis12elementsusing146bytessymsabcx%方法二f2=a*x^2+b*x+cwhosNameSizeBytesClassa1x1126symobjectb1x1126symobjectc1x1126symobjectf21x1146symobjectx1x1126symobjectGrandtotalis20elementsusing650bytes注意:方法一只创建了符号表达式,没有创建符号变量;而方法二既创建了符号表达式,又创建符号变量.Matlab基础应用20使用sym和syms命令创建A=sym(‘[a,b;c,d]’)A=[a,b][c,d]symsfghkB=[f,g;h,k]B=[f,g][h,k]2.1.3创建符号矩阵例4:Matlab基础应用21(1)数值运算保留8位有效位数,每一次数值运算有一定的截断误差,重复的多次数值运算就可能会造成很大的累积误差;符号运算不进行数值计算,无截断误差。(2)符号运算可以得出完全的封闭解或任意精度的数值解。(3)符号运算的时间较长,而数值运算速度快。(4)数值运算中必须先对变量赋值;符号运算无须事先对变量赋值,但必须先定义,运算结果以标准的符号表达式形式给出。2.2.1符号运算与数值运算的区别2.2符号运算Matlab基础应用22(1)基本运算符符号矩阵:“+”,“-”,“*”,“\”,“/”,“^”,“’”符号数组:“.*”,“./”,“.\”,“.^”,“.’”(2)关系运算符运算符只有“==”,“~=”。2.2.2符号运算中的运算符Matlab基础应用232.2.3符号运算中的函数运算(1)三角函数和双曲函数除atan2外与数值运算(包括使用方法)相同。(2)指数和对数函数没有log2和log10,其余与数值运算相同。(3)复数运算没有提供相角的命令,其余与数值运算相同。(4)矩阵代数命令与数值运算相同。Matlab基础应用24例5:求符号矩阵的行列式值、共轭转置和特征值。22211211aaaaAsymsa11a12a21a22A=[a11,a12;a21,a22];det(A)%计算行列式值A’%计算共轭转置eig(A)%计算特征值Matlab基础应用252.2.4符号运算任意精度控制(1)设置默认的全局精度语法:digits(n)%n为期望的有效位数,默认的为32位。(2)把单个对象s表示为n位有效位数的符号对象语法:S=vpa(s,n)%n省略时按digits给定的精度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数值对象与符号对象的相互转换将数值对象转化为符号对象格式: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.4721Matlab基础应用282.3.符号表达式的操作(1)当符号表达式中含有多个符号变量时,例如“f=x+y”,则只有一个变量是独立变量,其余的符号变量当作常量来处理。(2)若没有指定自由变量,MATLAB按如下规则选择自由变量:小写i和j不能做自由变量选择自由变量的顺序:首选x,没有x选择字母顺序离x最近的字符变量;若与x距离相同,则在x后面的优先。大写字母比小写字母都靠后函数确定自由变量:语法:findsym(EXPR,1)2.3.1自由变量的确定Matlab基础应用292.3.2符号表达式的函数操作合并、化简、展开等函数collect(f):将表达式f中相同幂次的项合并;factor(f):将表达式f因式分解;simplify
本文标题:MATLAB第二讲__数值计算和符号计算
链接地址:https://www.777doc.com/doc-5374900 .html