matlab 第七-八章.ppt

上传人:小** 文档编号:86977345 上传时间:2019-03-26 格式:PPT 页数:40 大小:270KB
返回 下载 相关 举报
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数值积分与微分,7.1 Matlab数值积分 7.2 Matlab数值微分,7.1 数值积分,数值积分基本原理 求解定积分的数值方法多种多样: 简单的梯形法、 辛普生(Simpson)法、 牛顿柯特斯(Newton-Cotes)法等 它们的基本思想都是将整个积分区间a,b分成n 个子区间xi,xi+1,i=1,2,n,其中x1=a,xn+1=b. 这样求定积分问题就分解为求和问题。,每个小区间上定积分的值可以近似求的.,7.1.2 数值积分的实现方法,变步长辛普生法 Matlab给出了quad、quadl函数来求定积分. 该函数的调用格式为: I,n=quad(fname,

2、a,b,tol,trace) I,n=quadl(fname,a,b,tol,trace) fname是被积函数名。 a和b分别是定积分的下限和上限。 tol用来控制积分精度,缺省时取tol=10-6。 trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。 返回参数I即定积分值, n为被积函数的调用次数.,例7-1 求定积分。 (1) 建立被积函数文件fesin.m。 function f=fesin(x) f=exp(-0.5*x).*sin(x+pi/6); (2) 调用数值积分函数quad求定积分。 S,n=quad(fesin,0,3*pi),

3、一般情况,quadl函数调用的步数明显小于quad函数, 而且精度更高,可以保证能以更高的效率求出所需的定积分值.,例7-2 分别用quad函数和quadl函数求 的近似值. format long fx=inline(exp(-x); I,n=quad(fx,1,2.5,1e-10) format long fx=inline(exp(-x); I,n=quadl(fx,1,2.5,1e-10) 比较函数的调用次数,牛顿柯特斯法 Matlab给出了quad8函数来求定积分, 该函数的调用格式为: I,n=quad8(fname,a,b,tol,trace) 参数的含义和quad函数相似, 一

4、般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。 例7-3 求定积分。 (1) 被积函数文件fx.m。 function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x); (2) 调用函数quad8求定积分。 I=quad8(fx,0,pi),例7-4 分别用quad函数和quad8函数求 近似值. format long; fx=inline(exp(-x); I,n=quad(fx,1,2.5,1e-10) format long; fx=inline(exp(-x); I,n=quad8(fx,1,2.5,1e-10),

5、高斯克朗罗德法 Matlab给出了quadgk函数来求振荡函数的定积分, 该函数的调用格式为: I,err=quadgk(fname,a,b) Err返回近似误差范围 其他参数的含义和quad函数相似, 积分上、下限可以是-Inf,Inf,也可以是复数。 例7-5 求定积分。 (1) 被积函数文件fx.m。 function f=fx(x) f=x.*sin(x)./(1+cos(x).*cos(x); (2) 调用函数quadgk求定积分。 I=quadgk(fx,0,pi),梯形积分法 Matlab对由表格形式定义的函数关系的求定积分问题用梯形积分函数trapz,其调用格式为: I=tra

6、pz(X,Y) 向量X, Y定义函数关系Y=f(X). 例7-6 用trapz函数计算定积分 X=1:0.01:2.5; Y=exp(-X); %生成函数关系数据向量 trapz(X,Y),7.1.3 多重定积分的数值求解,MATLAB提供的dblquad函数用于求二重定积分 的数值解, triplequad函数用于求三重定积分的数值 解. 该函数的调用格式为: I=dblquad(fun,a,b,c,d,tol) I=triplequad(fun,a,b,c,d,e,f,tol) fun为被积函数; a,b为x的积分区间,c,d为y的积分区间,e,f为z的积分区间; 参数tol的用法与函数q

7、uad完全相同。,例7-7 计算二重定积分 方法一 (1) 建立一个函数文件fxy.m: function f=fxy(x,y) f=exp(-x.2/2).*sin(x.2+y); (2) 调用dblquad函数求解。 I=dblquad(fxy,-2,2,-1,1) 方法二 f=inline(exp(-x.2/2).*sin(x.2+y),x,y) I=dblquad(f,-2,2,-1,1),例7-8 计算三重定积分 方法一 (1) 建立一个函数文件fxyz.m: function f=fxyz(x,y,z) f=4*x.*z.*exp(-z.*z.*y-x.*x); (2) 调用tri

8、plequad函数求解。 triplequad(fxyz,0,pi,0,pi,0,1,1e-7) 方法二 fxyz=inline(4*x.*z.*exp(-z.*z.*y-x.*x),x,y,z) triplequad(fxyz,0,pi,0,pi,0,1,1e-7),7.2 数值微分,数值微分的实现 MATLAB没有提供直接求数值导数的函数,只有计算向前差分的函数diff,其调用格式为: DX=diff(X):计算向量X的向前差分, DX(i)=X(i+1)-X(i), i=1,2,n-1。 DX=diff(X,n):计算X的n阶向前差分。例如,diff(X,2)=diff(diff(X)。

9、 DX=diff(A,n,dim):计算矩阵A的n阶差分, dim=1时(缺省状态), 按列计算差分;dim=2,按行计算差分。,例7-10 生成以向量V=1,2,3,4,5,6为基础的范得蒙矩阵, 按列进行差分运算。 命令如下: V=vander(1:6) DV=diff(V) %计算V的一阶差分 diff函数对矩阵的每一列都进行差分运算,结果矩 阵的列数不变,行数减1.,例7-11 用不同的方法求函数f(x)的数值导数,并在同一个坐标系中做出f (x)的图像。 f=inline(sqrt(x.3+2*x.2-x+12)+(x+5).(1/6)+5*x+2); g=inline(3*x.2+

10、4*x-1)./sqrt(x.3+2*x.2-x+12)/2+1/6./(x+5).(5/6)+5); x=-3:0.01:3; dx=diff(f(x,3.01)/0.01; %直接对f(x)求数值导数 gx=g(x); %求函数f的导函数g在假设点的导数 plot(x,dx,.,x,gx,r-); %作图,第八章 Matlab符号运算,8.1 Matlab符号对象 8.2 Matlab符号微积分 8.3 Matlab符号级数 8.4 Matlab符号方程求解,建立符号对象 1建立符号变量和符号常量:sym和syms sym函数:用来建立单个符号量, 调用格式为: 符号量名=sym(符号字符

11、串) 该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。 sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。,8.1 符号对象,a=sym(a); b=sym(b); c=sym(c); x=5; y=-8; z=11; w=a*a+b*b+c*c u=x*x+y*y+z*z,p1=sym(pi); a=sym(4); b=sym(5);c=sym(7); p2=pi;x=4;y=5;z=7; sin(p1/3), sin(p2/3), cos(a+b+c)2)-sin(pi/4), cos(x+y+z)2)-sin(pi/4),syms函数:

12、 一次可以定义多个符号变量, 一般调用格式为: syms 符号变量名1 符号变量名2 符号变量名n 在变量名上不需要加字符串分界符(); 变量间用空格而不要用逗号分隔.,建立符号表达式 含有符号对象的表达式称为符号表达式。建立符 号表达式有以下3种方法: 利用单引号来生成符号表达式 y=1/sqrt(2*x) 用sym函数建立符号表达式 U=sym(a,b;c,d) 使用已经定义的符号变量组成符号表达式 syms x y z; V=3*x2-5*y+2*x*y+6,8.1.2 符号表达式运算,符号表达式的四则运算 符号表达式的四则运算与数值运算一样,用+, -, *, /, 实现, 结果依然是

13、符号表达式. 符号表达式的提取分子和分母运算 若符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。其一般调用格式为: n,d=numden(s) 该函数提取符号表达式s的分子和分母,分别将它们存放在n与d中。,a=sym(0.333) n,d=numden(a) f=sym(a*x2/(b+x) n,d=numden(f) g=sym(x2+3)/(2*x-1)+3*x/(x-1) n,d=numden(g) %将符号表达式有理化后返回分子分母。,符号表达式的因式分解与展开 factor(s):对符号表达式s分解因式。 expand(s):对符

14、号表达式s进行展开。 collect(s):对符号表达式s合并同类项。 collect(s,v):对符号表达式s按变量v合并同类项。,syms a b x y; A=a3-b3; factor(A),s=(-7*x2-8*y2)*(-x2+3*y2); expand(s) collect(s,x),factor(sym(420) %对整数进行因式分解,符号表达式的化简 simplify(s):应用函数规则对s进行化简。 simple(s):调用Matlab的其他函数对表达式进行综合化简,并显示化简过程。 syms a s=(-a2-1)/(1-a); simplify(s) syms x s=

15、cos(x)+sqrt(-sin(x)2); simple(s) %自动调用多种函数对s进行化简,符号表达式与数值表达式之间的转换 sym可以将数值表达式变换成它的符号表达式。 eval可以将符号表达式变换成数值表达式。 sym(1.5) p=(1+sqrt(5)/2 eval(p),8.1.3 符号表达式中变量的确定,findsym函数可以帮助用户查找一个符号表达式中的的符号变量。该函数的调用格式为: findsym(s,n) 函数返回符号表达式s中的n个符号变量,若没有指定n,则返回s中的全部符号变量。 syms x a y b; s1=3*x+y; s2=a*y+b; findsym(s1) findsym(s1+s2),8.1.4 符号矩阵,符号矩阵也是一种符号表达式,所以前面介绍的符号表达式运算都可以在矩阵意义下进行。应注意这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。 符号矩阵还能进行有关矩阵的运算。如 diag、triu、tril、inv、det、rank、eig等可直接应用于符号矩阵。 求转置矩阵,应注意有点运算符。,8.2 符号微积分,符号极限:limit函数 limit(f,x,a):求当变量x趋近于常数a时,符号函数f(x)函数的极限值. limit(f,a):由于没有指定符号函数

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

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号