第五讲matlab数值与符号计算_第1页
第五讲matlab数值与符号计算_第2页
第五讲matlab数值与符号计算_第3页
第五讲matlab数值与符号计算_第4页
第五讲matlab数值与符号计算_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

1、数值计算软件实践第五讲 数值与符号计算MATLAB提供了丰富的数值分析命令,具有出色的数值计算能力。符号计算符号计算使其计算能力更上一层楼。2 2主要内容n5.1 插值运算n5.2 曲线拟合n5.3 数据分析n5.4 数值微积分n5.5 符号计算入门n5.6 符号对象的创建和使用n5.7 任意精度计算n5.8 符号表达式的化简和替换n5.9 符号微积分n5.10符号方程求解3 35.1 插值运算n5.1.1 一维插值插值n5.1.2 二维插值插值4 45.1.1 一维插值n单变量单变量函数f(x)的数值插值问题称为一维插值一维插值。n函数interp1qY1=interp1(X,Y,X1,me

2、thod) %计算函数在X1处的值Y1,X、Y和X1均为向量向量qmethodnlinearlinear:线性插值(默认):线性插值(默认)nnearest:最近点插值。ncubic:3次多项式多项式插值。nspline:3次样条插值。interpolation5 55.1.1 一维插值n示例6 65.1.2 二维插值n对双双变量变量函数z=f(x,y)进行插值n函数interp2qZ1 = interp2( X,Y,Z,X1,Y1,method )n其中X、Y是两个向量(矩阵),分别描述两个参数的采样点,Z是与参数采样点对应的函数值。nX1、Y1描述欲插值的点。nZ1是根据相应的插值方法得到

3、的插值结果。qmethod的取值与一维插值函数相同的取值与一维插值函数相同。7 75.1.2 二维插值linearlinear:线性插值(默认):线性插值(默认)nearest:最近点插值。cubic:3次多项式多项式插值。spline:3次样条插值。8 85.2 曲线拟合n目的目的:用一个较简单的函数去逼近逼近一个复杂的或未知的函数。nMATLAB曲线拟合的最优标准是采用常见的最小二乘原理,所构造的函数是一个次数小于插值节点个数的多项式多项式。n曲线拟合的最小二乘原理,就是使上述拟合多项式在各节点处的偏差偏差g(xg(xi i)-)-y yi i的平方和的平方和达到最小。n命令格式:g,t=

4、polyfit(X,Y,n),结果g g为多项为多项式系数向量,式系数向量,t t为误差向量,为误差向量,n n为多项式次数为多项式次数。9 95.2 曲线拟合n示例qX=0:0.1:1;qY=-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.30,11.2;qg=polyfit(X,Y,n); % n分别取2、3和4n 取 1 会是什么结果?10105.2 曲线拟合n在MATLAB还提供了拟合工具Curve Fitting tool。11115.2 曲线拟合1122误差分析误差分析12125.3 数据分析n5.3.1 最大最大值和最小最小值n

5、5.3.2 求和求和与求积求积n5.3.3 平均值平均值和中值中值13135.3.1 最大值和最小值nmax(A):qA是向量向量,则返回向量A的最大值。qA中包含复数元素复数元素,则按模模取最大值。qA是矩阵矩阵,则返回一个行向量行向量(每一列列的最大值)。nY,U = max(A) %A是向量,则返回向量A的最大值值存入Y,最大值的序号序号存入U。如果A中包含复数元素,则按模取最大值。如果A是矩阵,则Y向量记录A的每每列的最大值列的最大值,U向量记录每列最大值的行号每列最大值的行号。nmax(A, ,dim) %仅用于矩阵。dim取1或2:取1时,该函数和max(A)完全相同;取2时,返回

6、一个列向量,数据对应每行的最大值。14145.3.1 最大值和最小值n示例:q求 X = 54,86,453,45;90,32,64,54;-23,12,71,18中各列和各行元素中的最大值。nY,U=max(X) %求矩阵x中各列元素的最大值及其这些元素的行下标。nY=max(X, ,2) %命令中dim=2,故查找操作在各行各行中进行。15155.3.1 最大值和最小值min的用法与的用法与max完全一样完全一样16165.3.1 最大值和最小值n两个向量或矩阵对应元素的比较qmax(A,B):A、B是两个同型的向量或矩阵,返回值是与A、B同型的向量或矩阵,其中的每个元素等于每个元素等于A

7、 A、B B对应元素的对应元素的较大者较大者。qmax(A,n):n是一个标量标量,返回值是与A同型的向量或矩阵,其中的每个元素等于每个元素等于A A对应元素和对应元素和n n中的较大者中的较大者。17175.3.2 求和与求积nsum(A):q如果A是一个向量,则返回向量各元素的和。q如果A是一个矩阵,则返回一个行向量行向量,其第i个元素是A的第i列的元素和。nsum(A,dim):q当dim为1时,该函数等同于sum(A);q当dim为2时,返回一个列列向量向量,其第i个元素是A的第i行的各元素之和。18185.3.2 求和与求积n数据求积数据求积的函数是prod,其用法和sum完全相同。

8、19195.3.3 平均值和中值n数据序列的平均值指的是算术平均值算术平均值。中值是指在数据序列中其值的大小恰好处在中间其值的大小恰好处在中间的元素。n求数据序列平均值数据序列平均值的函数是mean,mean函数的调用格式如下。qmean(A):n如果A是一个向量,则返回向量的算术平均值。n如果A是一个矩阵,则返回一个行向量行向量,其第i个元素是A的第i列的算术平均值。qmean(A,dim):n当dim为1时,该函数等同于mean(A);n当dim为2时,返回一个列向量列向量,其第i个元素是A的第i行的算术平均值。n求数据序列中值数据序列中值的函数是median,其用法和mean完全相同。2

9、0205.4 数值微积分n在许多实际问题实际问题中要采用数值方法来求函数的微分或积分。n5.4.1 数值微分数值微分n5.4.2 数值积分数值积分21215.4.1 数值微分n数值微分的基本思想是先用逼近逼近或拟合拟合等方法将已知数据在一定范围一定范围内的近似近似函数函数求出,再用特定的方法对此近似函数进行微分。n多项式求导法多项式求导法 polyder()q用多项式或样条函数多项式或样条函数g(x)对f(x)进行逼近逼近(插值或拟合),然后用逼近函数逼近函数g(x)在点点x x处处的导数导数作为f(x)在点x处的导数。q该种方法一般只用在低阶低阶数值微分。derivative22225.4.

10、1 数值微分n多项式求导法q以sin(x)为例23235.4.1 数值微分n用diff函数计算差分差分q用f(x)在点x处的某种差商差商作为其导数。在MATLAB中,提供计算计算向前差分的函数向前差分的函数diff。qDx = diff(X) %向量X的向前差分向前差分,Dx(i) =X(i+1) X(i),i = 1,2, ,n 1。qDx = diff(X,n):计算X的n阶向前差分。例如,diff(X,2) = diff(diff(X)。qDx = diff(A,n,dim):计算矩阵A的n阶差分,dim = 1时(默认状态),按列计算差分;dim = 2,按行计算差分。n对于求向量的微

11、分,函数diff计算的是向量元素间向量元素间的差分,故所得输出比原向量少了一个元素少了一个元素。24245.4.1 数值微分n通过diff函数得到了向量X的向前差分向前差分结果。n函数的向前差商向前差商可表示为diff(f(x) / (x(i+1) x(i)。n当步长(x(i+1) x(i)充分小时,可得函数在x(i)的导数可近似为diff(f(x) / (x(i+1) x(i)。25255.4.2 数值积分n求解定积分的数值方法很多,基本思想是将积分区间划分为n个小区间小区间,求小区间的近似积分近似积分。26265.4.2 数值积分n一元函数数值积分q基于自适应自适应Simpson法法的qu

12、ad函数和基于自适应自适应Lobatto法法的quadl函数来求定积分。qI,n=quad(fname,a,b,tol,trace)qI,n=quadl(fname,a,b,tol,trace)q返回参数I即定积分值,n为被积函数的调用次数。27275.4.2 数值积分n一元函数数值积分q示例:f(x)=sin(x)在0到pi之间的积分,显示调用次数。函数名用sin。q一般情况下,一般情况下,quadl函数调用的函数调用的步数明显小于步数明显小于quad函数,而且函数,而且精度更高。精度更高。28285.4.2 数值积分n建立被积函数的方法建立被积函数的方法(M文件)q新建M文件;q在Edit

13、or输入代码:nfunction f=fe(x) % fe为函数名称,保存时自动成为M文件名称,x表示自变量nf=x.*sin(x)./(1+abs(cos(x); % 函数表达式n调用qquad(fe,0,pi)1229295.4.2 数值积分n求定积分:n采用匿名函数匿名函数来构造简单函数:q格式quad(x)(exp(x).*log(x),1,2);n 是函数指针函数指针,第 1 个括号里面是自变量自变量,第 2 个括号里面是代表代表函数运算的表达式函数运算的表达式。21e ln dxx x30305.4.2 数值积分n二重和三重积分二重和三重积分qMATLAB中提供的dblquad函数

14、用于求二重二重的数值解,triplequad函数用于求三重三重的数值解。ndblquad(fun,a,b,c,d,tol,trace)ntriplequad(fun,a,b,c,d,e,f,tol,trace)( , , )d d dfdbecaf x y zx y z ( , )d ddbcaf x yx y 31315.4.2 数值积分n计算二重积分n采用M文件建立被积函数5231e ln d dxy x y 32325.4.2 数值积分n计算三重积分n采用inline函数建立被积函数,命令如下:qf=inline(z.*exp(x).*log(y),x,y,z);q四个引号内分别表示四个

15、引号内分别表示输入函数表达式和变输入函数表达式和变量量。n先表达式后变量。先表达式后变量。1052531ze ln d d dxy x y z 数值计算软件实践符号计算应用符号符号计算功能,可以直接对抽象抽象的符号对象进行各种计算,并获得问题的解析结果解析结果。3434符号计算n在科学研究和工程应用中,除了存在大量的数值计算数值计算外,还有对符号对象符号对象进行的运算,即在运算时无须事先对变量赋值,而将所得到结果以标准的符号形式来表示。nMATLAB符号计算是通过集成的符号运符号运算工具箱算工具箱(Symbolic Math Toolbox)来实现的。3535符号计算n符号计算是数字运算的自然

16、扩展n不受计算误差的困扰n计算可以给出完全正确完全正确的封闭解或任意精度任意精度的数值解n计算所需要的时间较长时间较长3636符号计算n5.5 符号计算入门n5.6 符号对象的创建和使用n5.7 任意精度计算n5.8 符号表达式的化简和替换n5.9 符号微积分n5.10符号方程求解37375.5 符号计算入门nMATLAB数值计算的对象是数值,而符号计算的对象符号计算的对象则是非数值的符符号字符串号字符串。n5.5.1 求解代数方程n5.5.2 求解微分方程n5.5.3 计算导数n5.5.4 计算定积分38385.5.1 求解代数方程n求解一元二次方程 ax2+bx+c = 0n当要给出解的通

17、式通式时,求解过程就是一个符号计算符号计算问题,MATLAB具有得到解的通式能力。solve39395.5.2 求解微分方程n求解微分方程解微分方程 y = ay n在MATLAB中,其通解仍可以通过符号计算符号计算得到。dsolve40405.5.3 计算导数n对于cos2x的导数导数,在MATLAB中,其解也可以通过符号计算得到。diff41415.5.4 计算定积分n对于 的定积分n在MATLAB中,其解也可以通过符号计算符号计算得到。2dbaxx2xint42425.6 符号对象的创建和使用n5.6.1 创建符号对象和表达式n5.6.2 符号对象的基本运算 43435.6.1 创建符号

18、对象和表达式nMATLAB为用户提供了一种符号数据类符号数据类型型,相应的运算对象称为符号对象符号对象。n函数sym用来建立单个单个符号量q符号量名 = sym ( 符号字符串 ) % 有括号有括号也有引号也有引号qa = sym(a) %建立符号变量an符号变量参与运算前无须赋值无须赋值,其结果是一个由参与运算的变量名组成的表达式。44445.6.1 创建符号对象和表达式nsym函数应用符号运算符号运算数值运算数值运算1245455.6.1 创建符号对象和表达式n函数sym一次只能定义只能定义一一个个符号变量,使用不方便。n函数syms,一次可以定义多个定义多个符号变量。nsyms函数调用格

19、式:qsyms 符号变量名符号变量名1 符号符号变量名变量名2 符号变量名符号变量名nn用这种格式定义符号变量时不需要不需要在变量名上加字符串分界符(),变量间用空格用空格而不要不要用逗号用逗号分隔。n用syms函数定义4个符号变量a、b、c、d的命令: syms a b c d % 没有引号也没有逗号没有引号也没有逗号46465.6.1 创建符号对象和表达式nsyms函数应用?47475.6.1 创建符号对象和表达式n含有符号对象的表达式含有符号对象的表达式称为符号表达式符号表达式。建立符号表达式有 2 种方法:q用symsym函数函数建立符号表达式q使用已经定义已经定义的符号变量组成组成符

20、号表达式1248485.6.1 创建符号对象和表达式n符号矩阵n用sym创建矩阵q命令格式:A=sym( ) q符号矩阵内容同数值矩阵q需用sym指令定义q需用 标识注意:符号矩阵的每一行的两端都有方括号,这是与 MATLAB数值矩阵的一个重要区别。49495.6.2 符号对象的基本运算 n符号表达式的四则运算与数值运算符号表达式的四则运算与数值运算一样一样,用+、*、/、 运算符实现。符号表达式符号表达式运算运算结果依然是一个符号表达式结果依然是一个符号表达式50505.7 任意精度计算n符号计算的显著特点是计算过程中不会出现舍入误差,从而可以得到任意精度任意精度的数值解。n MATLAB提

21、供以下函数实现将符号计算得到的精确值转换成任意精度精确值转换成任意精度。qdigits(d) %设定精度为d位有效数字,默认值是32。qvpa(A,d) %对符号计算得到的精确值进行近似,有效位数为d位,若不指定d,则按当前有效位数输出。qdouble(A) %对符号计算得到的精确值转换为双精双精度度。51515.7 任意精度计算注意注意vpa处理处理结果的数据类型结果的数据类型52525.8 符号表达式的化简和替换n5.8.1 符号表达式的化简n5.8.2 符号表达式的替换MATLABMATLAB提供函数实现对符号计算的结提供函数实现对符号计算的结果进行化简和替换,如:果进行化简和替换,如:

22、因式分解;因式分解;同类项合并;同类项合并;符号表达式展开、化简;符号表达式展开、化简;通分、符号替换。通分、符号替换。53535.8.1 符号表达式的化简n函数collect() %合并同类项合并同类项n函数expand() %展开展开n函数horner() %嵌套形式嵌套形式n函数factor() %因式分解因式分解n函数simplify() %化简化简n函数simple() %化简化简54545.8.1 符号表达式的化简n函数collect() % 合并同类项合并同类项qR=collect(S) %将表达式S中的同次幂项合并qR=collect(S,v) %将表达式S中变量变量v的同次幂

23、项合并55555.8.1 符号表达式的化简n函数expand() % 展开符号表达式qR = expand(S) % 将表达式S中的各项进行展开展开。56565.8.1 符号表达式的化简n函数horner将符号表达式转成嵌套形式qR = horner(S) % 将符号多项式矩阵S中的每个多项式转换成它们的嵌套形式嵌套形式。57575.8.1 符号表达式的化简n函数factor()对符号多项式进行因式分解因式分解qR=factor(X):如果X是一个多项式或多项式矩阵,该函数将X表示成低阶多项式相乘的形式;如果X不能分解成有理多项式乘积的形式,则返回X本身。58585.8.1 符号表达式的化简n

24、函数simplify()将符号表达式按一定规则简化qR= simplify(S) % 该函数还可应用于包含和式、方根、分数的乘方、等符号表达式矩阵S。59595.8.1 符号表达式的化简n函数simple()将符号表达式表示成最简形式qr = simple(S):用几种不同的算术简化规则几种不同的算术简化规则对符号表达式进行简化,并显示中间过程显示中间过程;qr,how = simple(S):不显示中间过程,并附加返回最简形式对应的简化方法最简形式对应的简化方法 。60605.9 符号微积分n5.9.1 符号表达式的极限极限n5.9.2 符号表达式的微分微分n5.9.3 符号表达式的积分积分

25、n5.9.4 级数求和级数求和n5.9.5 泰勒级数泰勒级数61615.9.1 符号表达式的极限n在MATLAB中求函数极限的函数是limit,可用来求函数在指定点的极限值指定点的极限值和左右极限值左右极限值。n函数limit的调用格式如下qlimit(f,a):求当默认默认自变量自变量 x x 趋近于常数 a 时,符号函数 f(x) 的极限值。当当 a a 默认默认时时,求当默认默认自变量自变量 x 趋近于 0 时的极限值。qlimit(f,y,a):求符号函数 f(y) 的极限值,即计算当变量 y 趋近于常数 a 时,f(y) 函数的极限值。qlimit(f,y,a,right)或limi

26、t(f,y,a,left):求符号函数f的极限值或。right表示变量表示变量x从右边趋近于从右边趋近于a,left表示变量表示变量x从左边趋近于从左边趋近于a。6262lim(1)xttx5.9.1 符号表达式的极限0sin()sin( )limhxhxh默认默认x是变量是变量63635.9.1 符号表达式的极限2lim (1)xxxx 1ln0lim(cot )xxx+没有右边没有右边64645.9.2 符号表达式的微分ndiff函数用于对符号表达式求微分。n调用格式如下qdiff(s) %按findsym函数函数指示的默认变量对符号表达式s求一阶导数。qdiff(s,v) %以v为自变量

27、,对符号表达式s求一阶导数。qdiff(s,n) %按findsym函数函数指示的默认变量对符号表达式s求n阶导数,n为正整数。qdiff(s,v,n) %以v为自变量,对符号表达式s求n阶导数。65655.9.2 符号表达式的微分2cos,yxy yy求(sin )(1 cos )xxa ttybty求64223zxyzxyx y求66665.9.3 符号表达式的积分n符号积分由函数int来实现。nint一般调用格式如下qint(s) %没有指定积分变量和积分阶数时,系统按findsym函数函数指示的默认变量对被积函数或符号表达式s求不定积分。qint(s,v) %以v为自变量,对被积函数或

28、符号表达式s求不定积分。qint(s,v,a,b) %求定积分运算。a、b分别表示定积分的下限和上限。该函数求被积函数在区间a,b上的定积分。a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数f关于变量x在闭区间a,b上可积时,函数返回一个定积分结果。当a、b中有一个是inf时,函数返回一个广义积分。当a、b中有一个符号表达式时,函数返回一个符号函数。67675.9.3 符号表达式的积分7.4】分别求下列积分。 (1)21d1xx (2)21d1baxx (3)2211d1xx 68685.9.4 级数求和n符号表达式求和函数symsumqsymsum(s,v,n

29、,m) %s表示级数的通项通项符号符号表达式表达式,v是求和变量变量,v省略时使用系统的默认变量;n和m是求和的开始项开始项和末项末项。7.5】求下列级数之和。 (1)1111( 1)1234nn (2)69695.9.5 泰勒级数n泰勒级数将一个任意函数表示为一个幂级数。nMATLAB提供了函数taylor。qtaylor(f,v,n,a)q该函数将函数 f 按变量 v 展开为泰勒级数,展开到第 n 项(即变量v的 n 1 次幂)为止,n 的默认值为 6。v的默认值与diff函数相同。参数 a 指定将函数 f 在自变量 v = a处展开,a 的默认值是 0。70705.9.5 泰勒级数xexf)(xxfsin)(71715.10符号方程求解n5.10.1 代数方程代数方程n5.10.2 微分方程微分方程72725.10.1 代数方程n在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现。qsolve(s) %求解符号表达式s的代数方程,变量为默认变量。qsolve(s,v) %求解符号表达式s的代数方程,求解变量为v。qsolve(s1,s2, ,sn,v1,v2,vn) %求解符号表达式s1,

温馨提示

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

最新文档

评论

0/150

提交评论