《高等数学中的MATLAB命令.ppt》由会员分享,可在线阅读,更多相关《高等数学中的MATLAB命令.ppt(47页珍藏版)》请在三一办公上搜索。
1、第 3 章 高等数学中的MATLAB命令,2023/10/20,2,第一章 Matlab入门,内容提要,函数、极限、级数的符号运算 符号微积分 数值微积分 常微分方程的符号解法 常微分方程的数值解法 补充:求解代数方程和超越方程求函数的极值,2023/10/20,3,第一章 Matlab入门,函数、极限与级数的符号运算,符号替换 f=subs(符号表达式,符号对象1,符号对象2)将符号表达式中的符号对象1 用符号对象2代替 注:符号对象1 和 符号对象2 也可以是符号表达式例如:syms x y a b t f=x2+x*y f=subs(f,x,t)f=subs(f,t,a+b)f=subs
2、(f,a+b,x),subs是substitution(替换)的缩写,2023/10/20,4,第一章 Matlab入门,函数、极限与级数的符号运算,符号替换 f=subs(符号表达式,符号对象11,符号对象12,符号对象21,符号对象22,)将符号表达式中的符号对象11、符号对象12、分别用符号对象21、符号对象22、代替。例如:syms x y a b f=x2+x*y g=subs(f,x,y,a,b)h1=subs(f,x,y,sym(pi),sym(3)%求函数值(符号计算)h2=subs(f,x,y,pi,3)%求函数值(数值计算),2023/10/20,5,第一章 Matlab入
3、门,函数、极限与级数的符号运算,符号函数及其运算大部分MATLAB数学函数和逻辑关系运算也可以用于符号对象其他一些符号运算命令选讲:factor(符号表达式)对表达式作因式分解expand(符号表达式)将表达式展开collect(符号表达式,符号)将表达式按符号合并同类项simplify(符号表达式)将表达式化简simpe(符号表达式)将表达式化简到所含字符最少,2023/10/20,6,第一章 Matlab入门,函数、极限与级数的符号运算,符号函数及其运算g=finverse(f,x)求符号函数f(x)的反函数g(x)fg=compose(f,g)求符号函数f和g的复合函数f(g)举例,20
4、23/10/20,7,第一章 Matlab入门,函数、极限与级数的符号运算,极限与级数在MATLAB中,极限与级数运算归属于符号运算limit(f,x,a)求符号函数f的极限 limit(f,x,a,right)求符号函数f的右极限limit(f,x,a,left)求符号函数f的左极限说明:上述命令中的a可以是无穷大 inf 或-inf说明:多元函数的极限需要使用累次极限来计算举例,2023/10/20,8,第一章 Matlab入门,函数、极限与级数的符号运算,极限与级数symsum(s,n,a,b)求符号通项s的和 其中,b可以是无穷大inf举例,sym是symbol(符号)的缩写,2023
5、/10/20,9,第一章 Matlab入门,函数、极限与级数的符号运算,极限与级数taylor(f,n,a,x)求符号函数f在点a关于自变量x的n-1阶泰勒多项式举例taylortool 泰勒工具举例,2023/10/20,10,第一章 Matlab入门,符号微积分,导数与偏导数diff(f,x)求符号函数f对x的导函数或偏导数diff(f,x,n)求符号函数f对x的n阶导函数或偏导数注:diff是differential(微分)的缩写举例问:如何求函数在给定点的导数值(或偏导数值)?说明:参数方程求导和隐函数求导需要使用相关数学公式(见教材66-67页),2023/10/20,11,第一章
6、Matlab入门,符号微积分,不定积分与定积分int(s,x)求符号函数f关于变量x的不定积分注:int是integration(积分)的缩写int(s,x,a,b)求符号函数f关于变量x的定积分,a、b分别是积分下限和上限,a、b可以是函数表达式,也可以是无穷大inf或-inf举例,2023/10/20,12,第一章 Matlab入门,符号微积分,不定积分与定积分对于定积分,当系统求不出精确解时,如果被积函数中不含待定符号,可以使用vpa命令给出近似解例如:syms xa=int(sin(sin(x),1,2)vpa(a)说明:重积分、曲线积分与曲面积分需要使用数学方法转化为累次积分来计算,
7、2023/10/20,13,第一章 Matlab入门,数值微积分的特点采用数值算法,主要用于解决导数和定积分的近似计算问题可以解决离散数据的相关计算问题实例:某河床的横断面如图所示,试根据图示的测量数据(单位:m),计算各测量点的坡度和横断面的面积。,数值微积分,2023/10/20,14,第一章 Matlab入门,数值导数Fx=gradient(F,x)该命令求一元函数F的数值导数F(x)其中,x是自变量的一组取值(离散数据),F是因变量的对应取值(离散数据),Fx得到的是各离散数据点的导数值(近似解)。说明:x的取值越密集,得到的导数值就越精确。该命令常用于求解离散型数据的变化率。例:计算
8、上例中的坡度,数值微积分,gradient:梯度、变化率,2023/10/20,15,第一章 Matlab入门,数值导数Fx=gradient(F,x)例题:求函数y=x2sinx在区间-3,3的数值导数,并作出原函数与导函数的图形。问:该函数在x=1.5的数值导数是多少?试讨论它与“精确导数值”的误差。(演示),数值微积分,2023/10/20,16,第一章 Matlab入门,数值偏导数Fx,Fy=gradient(F,x,y)该命令求二元函数F的数值偏导数Fx和Fy其中,x,y分别是自变量x和y的一组取值;F是定义在x-y平面点集区域上的函数值(矩阵表示),平面点集区域可以使用meshgr
9、id命令生成;Fx和Fy分别得到的是每个点上关于x和y的偏导数值(矩阵表示)。说明:x和y的取值越密集,得到的偏导数值就越精确;该命令常用于求解离散型数据的方向导数、梯度、散度、旋度等。,数值微积分,2023/10/20,17,第一章 Matlab入门,数值偏导数Fx,Fy=gradient(F,x,y)举例,数值微积分,2023/10/20,18,第一章 Matlab入门,数值定积分梯形法数值积分:trapz(x,y)其中x表示自变量在积分区间的一组取值,y表示被积函数对应于x的一组函数值。例:计算前例中的横断面积例题 求积分解:x=-1:0.1:1;y=exp(-x.2);trapz(x,
10、y),数值微积分,trapz是trapezoid(梯形)的缩写,2023/10/20,19,第一章 Matlab入门,数值定积分高精度数值积分:quad(f,a,b)或quadl(f,a,b)求函数f在区间a,b上的定积分,其中f 可以使用字符串函数表达式或内联函数,定义函数的乘、除、乘方时要使用点运算。积分限 a、b 必须是常量。quad采用自适应步长Simpson积分法quadl采用高精度Lobatto积分法例 求积分解:z=quadl(exp(-x.2),-1,1),数值微积分,quad是quadrature(求积分)的缩写,2023/10/20,20,第一章 Matlab入门,数值定积
11、分注意:trapz,quad,quadl都不能用于求反常积分。,数值微积分,2023/10/20,21,第一章 Matlab入门,数值重积分矩形区域上的二重积分和立方体区域上的三重积分:二重积分命令 dblquad(f,a1,a2,b1,b2)f 为被积函数,积分区域为矩形a1,a2;b1,b2三重积分命令 triplequad(f,a1,a2,b1,b2,c1,c2)f 为被积函数,积分区域为立方体a1,a2;b1,b2;c1,c2说明:被积函数可以使用字符串函数表达式或内联函数;乘、除、乘方要用点运算;积分限必须是常量;f是字符串函数表达式时,积分的顺序按照自变量的字典顺序进行,f是内联函
12、数时,积分的顺序按照自变量的定义顺序进行。,数值微积分,2023/10/20,22,第一章 Matlab入门,数值重积分积分顺序举例 dblquad(sin(t./r.2),1,2,6,9)即 二重积分 f=inline(sin(t./r.2),t,r)dblquad(f,1,2,6,9)即 二重积分,数值微积分,2023/10/20,23,第一章 Matlab入门,数值重积分例 计算重积分 和演示,数值微积分,2023/10/20,24,第一章 Matlab入门,常微分方程的符号解法,y1,y2,=dsolve(方程1,方程2,初始条件1,初始条件2,.,自变量)使用字符串表示方程、初始条件
13、和自变量,不必定义符号对象;缺省自变量默认为t方程中的等号使用单等号,不能使用双等号在方程中,用Dy表示y,D2y表示y,(不需降阶)该命令可以不含初始条件,用于求通解对于方程组,解的输出顺序是按照未知量的字典顺序输出的!,2023/10/20,25,第一章 Matlab入门,常微分方程的符号解法,y1,y2,=dsolve(方程1,方程2,初始条件1,初始条件2,.,自变量)例 求解下列常微分方程或方程组(1)y=dsolve(D2y=cos(2*x)-y,y(0)=1,Dy(0)=0,x)(2)初始条件f,g=dsolve(Df=f+g,Dg=-f+g,f(0)=1,g(0)=2),202
14、3/10/20,26,第一章 Matlab入门,常微分方程的符号解法,y1,y2,=dsolve(方程1,方程2,初始条件1,初始条件2,.,自变量)例 求解下列常微分方程或方程组(3)y=dsolve(Dy=x+y2,y(0)=0,x)此微分方程无解析解!特别说明:在理论上,除了常系数线性微分方程可用特征根法求解,少数特殊方程可用初等积分法求解外,绝大部分微分方程无解析解或不能求得解析解,在实际应用中主要依靠数值解法。,2023/10/20,27,第一章 Matlab入门,常微分方程的数值解法,预备知识,一阶常微分方程(组)初值问题的数值解 其中数值解法:寻求y(t)在一系列离散节点 t0
15、t1 tn 的近似值yk(k=0,1,n)。,2023/10/20,28,第一章 Matlab入门,常微分方程的数值解法,预备知识,高阶常微分方程(组)初值问题的数值解已给一个n阶微分方程(组)y(n)=f(t,y,y,y(n-1)设y1=y,y2=y,yn=y(n-1),上式可以化为一阶微分方程组,2023/10/20,29,第一章 Matlab入门,常微分方程的数值解法,一阶初值问题的数值解初值问题:常用求解格式:t,y=ode45(f,t0,.,y0)f:表示f(t,y),可以使用M函数或内联函数来定义,t是自变量名,y是因变量名;求解微分方程组时,f必须定义为列向量,并且因变量名必须使
16、用同名下标变量,如:x(1),x(2),.等等。t0,.:可以使用t0,tn,这时软件自动在初值t0和终值tn之间选取一组自变量节点;也可以使用t0,t1,.,tn,由用户指定自变量的取值节点。y0:表示初值t0所对应的因变量值y0,求解微分方程组时,y0必须定义成为向量(行向量和列向量均可)。,求解结果中,t是自变量的取值节点列向量,y是函数的数值解列向量(对于微分方程组,数值解用矩阵表示,每一列对应一个函数的解)。若无输出变量,则作出解函数的图形。,ode是ordinary differential equation(常微分方程)的缩写45是求解方案的编号,2023/10/20,30,第一
17、章 Matlab入门,常微分方程的数值解法,一阶初值问题的数值解例 解微分方程f=inline(y-2*t/y,t,y)t,y=ode45(f,0,8,1)%求解ode45(f,0,8,1)%画解函数的图形t,y=ode45(f,0:1:8,1)%按照指定的自变量取值节点求解,2023/10/20,31,第一章 Matlab入门,常微分方程的数值解法,一阶初值问题的数值解例 解微分方程f=inline(x+y2,x,y)x,y=ode45(f,0,1,0)%求解ode45(f,0,1,0)%画解函数的图形问:当x=0.5以及x=0.52时,y=?,2023/10/20,32,第一章 Matla
18、b入门,常微分方程的数值解法,一阶初值问题的数值解例 解微分方程组可以使用内联函数来定义微分方程组:fun=inline(-x(1)3-x(2);x(1)-x(2)3,t,x)求解:t,x=ode45(fun,0,30,1;0.5)ode45(fun,0,30,1;0.5)%作解函数的图形 plot(x(:,1),x(:,2)%作相平面图,必须表示为列向量;,2023/10/20,33,第一章 Matlab入门,常微分方程的数值解法,一阶初值问题的数值解例 解微分方程组也可以使用M函数(比如fun.m)来定义微分方程组求解:t,x=ode45(fun,0,30,1;0.5)ode45(fun,
19、0,30,1;0.5)%作解函数的图形plot(x(:,1),x(:,2)%作相平面图,function f=fun(t,x)f=-x(1)3-x(2);x(1)-x(2)3;,调用M函数时需要使用单引号,或者使用 fun,2023/10/20,34,第一章 Matlab入门,常微分方程的数值解法,一阶初值问题的数值解例 求解高阶微分方程组(竖直加热板的自然对流)已知当 时,,即,2023/10/20,35,第一章 Matlab入门,常微分方程的数值解法,一阶初值问题的数值解例 求解高阶微分方程组(竖直加热板的自然对流)解:首先进行降阶替换,即,2023/10/20,36,第一章 Matlab
20、入门,化为一阶微分方程组初值条件化为,定义M函数fun.m如下:(记t=)function f=fun(t,y)f=y(2);y(3);-3*y(1)*y(3)+2*y(2)2-y(4);y(5);-2.1*y(1)*y(5);,执行命令:y0=0;0;0.68;1;-0.5;t,y=ode45(fun,0,5,y0)plot(t,y(:,1),t,y(:,4),r-),常微分方程的数值解法,2023/10/20,37,第一章 Matlab入门,常微分方程的数值解法,一阶初值问题的数值解初值问题:常用求解格式:t,y=ode45(f,t0,.,y0)完整求解格式:t,y=ode45(f,t0,
21、.,y0,options,p1,p2,.)options:用于设置计算参数,比如计算精度等,通常使用空矩阵 表示默认设置。p1,p2,.:表示附加参数传递,这时f的定义必须带有形式参数,而且必须定义为函数文件(?),比如:function f=f(t,y,a1,a2,.),2023/10/20,38,第一章 Matlab入门,求解代数方程和超越方程,求符号解(解析解)x1,x2,=solve(方程1,方程2,未知量1,未知量2,)使用字符串表示方程和未知量,不必定义符号对象方程中的等号使用单等号,不能使用双等号对于方程组,解的输出顺序是按照未知量的字典顺序输出的!对于不含待定系数的方程(或方程
22、组),当系统求不出解析解时,会自动给出部分或全部近似解,2023/10/20,39,第一章 Matlab入门,求解代数方程和超越方程,求符号解(解析解)x1,x2,=solve(方程1,方程2,未知量1,未知量2,)例题 1.求解一元二次方程,并讨论一元三次、四次、五次方程的一般求解情况,2023/10/20,40,第一章 Matlab入门,求解代数方程和超越方程,求符号解(解析解)x1,x2,=solve(方程1,方程2,未知量1,未知量2,)例题 2.求解下列方程或方程组,2023/10/20,41,第一章 Matlab入门,求解代数方程和超越方程,求符号解(解析解)x1,x2,=solv
23、e(方程1,方程2,未知量1,未知量2,)例题解答x=solve(a*x2+b*x+c=0,x)x=solve(x4-2*x3+7*x-5=0,x)x=solve(x5-1221*x+11=0)x,y=solve(x3+x*y+y=3,x2-4*x+3=0,x,y)x,y=solve(sin(x+y)-exp(x)*y=0,x2-y=2,x,y),2023/10/20,42,第一章 Matlab入门,求数值解 x,f,h=fsolve(fun,x0)该命令以x0为初始点,用迭代法寻求函数方程或方程组 fun=0 的一个数值解 fun 可以是内联函数,也可以使用字符串函数表达式(这时要求自变量必
24、须使用字母 x)在x,f,h中,x是方程(组)的解,f是解所对应的函数值(未必等于0),h是解的可靠性:1 表示可靠,否则不可靠当使用该命令求解方程组时,注意:fun 和 x0 必须定义为数组;函数表达式中的自变量必须使用同名下标变量,比如使用x(1),x(2)代表自变量x和y。,求解代数方程和超越方程,2023/10/20,43,第一章 Matlab入门,求数值解 x,f,h=fsolve(fun,x0)例 求超越方程 xsinx=0 在(0,20)内的数值解提示:可以使用图像辅助法演示,求解代数方程和超越方程,2023/10/20,44,第一章 Matlab入门,求数值解 x,f,h=fs
25、olve(fun,x0)例 求下列方程组在原点附近的数值解fun=inline(4*x(1)-x(2)+exp(x(1)/10-1,-x(1)+4*x(2)+x(2)2/8,x)x,f,h=fsolve(fun,0,0),求解代数方程和超越方程,2023/10/20,45,第一章 Matlab入门,求函数的局部极小值x,f,h=fminsearch(fun,x0)该命令以x0为初始点,用迭代法寻求函数 fun 的一个局部极小值点和局部极小值的数值解该命令的使用方法与 fsolve 类似注意:对于多元函数,初始点x0必须使用数组;函数表达式中的自变量必须使用同名下标变量,比如使用x(1),x(2
26、)代表自变量x和y。,求函数的极值,2023/10/20,46,第一章 Matlab入门,求函数的局部极小值x,f,h=fminsearch(fun,x0)例 求函数 y=xsinx 在(0,20)内的局部极小值提示:可以使用图像辅助法演示,求函数的极值,2023/10/20,47,第一章 Matlab入门,求函数的局部极大值MATLAB没有求极大值的命令,求函数的极大值点和极大值可以利用fminsearch命令间接获得,即:可以先求-fun的极小值点和极小值,所求得的极小值点就是fun的极大值点,极小值的相反数就是极大值例 求函数f(x,y)=5-(x-1)4-y4+4xy在点(2,1)附近的极大值解:fun=inline(x(1)-1)4+x(2)4-4*x(1)*x(2)-5,x)x,f,h=fminsearch(fun,0,0)f=-f,求函数的极值,