收藏 分销(赏)

matlab解方程与函数极值省公共课一等奖全国赛课获奖课件.pptx

上传人:快乐****生活 文档编号:2989353 上传时间:2024-06-12 格式:PPTX 页数:21 大小:100.33KB
下载 相关 举报
matlab解方程与函数极值省公共课一等奖全国赛课获奖课件.pptx_第1页
第1页 / 共21页
matlab解方程与函数极值省公共课一等奖全国赛课获奖课件.pptx_第2页
第2页 / 共21页
matlab解方程与函数极值省公共课一等奖全国赛课获奖课件.pptx_第3页
第3页 / 共21页
matlab解方程与函数极值省公共课一等奖全国赛课获奖课件.pptx_第4页
第4页 / 共21页
matlab解方程与函数极值省公共课一等奖全国赛课获奖课件.pptx_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、第七章第七章 MATLAB解方程与解方程与函数极值函数极值10/10/1第1页 线性方程组求解线性方程组求解 非线性方程数值求解非线性方程数值求解 常微分方程初值问题数值解法常微分方程初值问题数值解法 函数极值函数极值10/10/2第2页7.1 线性方程组求解线性方程组求解7.1.1 直接解法直接解法 1.利用左除运算符直接解法利用左除运算符直接解法 对于线性方程组对于线性方程组Ax=b,能够利用左除运能够利用左除运算符算符“”求解求解:x=Ab例例7-1 用直接解法求解以下线性方程组。用直接解法求解以下线性方程组。10/10/3第3页2.利用矩阵分解求解线性方程组利用矩阵分解求解线性方程组

2、矩阵分解是指依据一定原理用某种算法将一矩阵分解是指依据一定原理用某种算法将一个矩阵分解成若干个矩阵乘积。常见矩阵个矩阵分解成若干个矩阵乘积。常见矩阵分解有分解有LU分解分解、QR分解分解、Cholesky分解分解,以及以及Schur分解分解、Hessenberg分解分解、奇异分奇异分解解等。等。10/10/4第4页(1)LU分解分解 矩阵矩阵矩阵矩阵LULU分解就是将一个矩阵表示为一个交换下三分解就是将一个矩阵表示为一个交换下三分解就是将一个矩阵表示为一个交换下三分解就是将一个矩阵表示为一个交换下三角矩阵和一个上三角矩阵乘积形式。线性代数中已角矩阵和一个上三角矩阵乘积形式。线性代数中已角矩阵和

3、一个上三角矩阵乘积形式。线性代数中已角矩阵和一个上三角矩阵乘积形式。线性代数中已经证实,只要方阵经证实,只要方阵经证实,只要方阵经证实,只要方阵A A A A是非奇异,是非奇异,是非奇异,是非奇异,LULU分解总是能够进分解总是能够进分解总是能够进分解总是能够进行。行。行。行。MATLAB MATLAB提供提供提供提供lulu函数用于对矩阵进行函数用于对矩阵进行函数用于对矩阵进行函数用于对矩阵进行LULU分解,其调分解,其调分解,其调分解,其调用格式为:用格式为:用格式为:用格式为:L,U=lu(X)L,U=lu(X):产生一个上三角阵产生一个上三角阵产生一个上三角阵产生一个上三角阵U U U

4、 U和一个变换形式和一个变换形式和一个变换形式和一个变换形式下三角阵下三角阵下三角阵下三角阵L(L(L(L(行交换行交换行交换行交换),使之满足,使之满足,使之满足,使之满足X=LUX=LUX=LUX=LU。注意,这里矩。注意,这里矩。注意,这里矩。注意,这里矩阵阵阵阵X X X X必须是方阵。必须是方阵。必须是方阵。必须是方阵。L,U,P=lu(X)L,U,P=lu(X):产生一个上三角阵产生一个上三角阵产生一个上三角阵产生一个上三角阵U U和一个下三角和一个下三角和一个下三角和一个下三角阵阵阵阵L L L L以及一个置换矩阵以及一个置换矩阵以及一个置换矩阵以及一个置换矩阵P P,使之满足,

5、使之满足,使之满足,使之满足PX=LUPX=LU。当然矩。当然矩。当然矩。当然矩阵阵阵阵X X一样必须是方阵。一样必须是方阵。一样必须是方阵。一样必须是方阵。实现实现实现实现LULU分解后,线性方程组分解后,线性方程组分解后,线性方程组分解后,线性方程组Ax=bAx=b解解解解x=U(Lbx=U(Lb)或或或或x=U(LPb)x=U(LPb),这么能够大大提升运算速度这么能够大大提升运算速度这么能够大大提升运算速度这么能够大大提升运算速度。例例7-2 用用LU分解求解例分解求解例7-1中线性方程组。中线性方程组。10/10/5第5页(2)QR分解分解 对矩对矩对矩对矩阵阵阵阵X X进行进行进行

6、进行QRQR分解,就是把分解,就是把分解,就是把分解,就是把X X X X分解为一个正交分解为一个正交分解为一个正交分解为一个正交矩阵矩阵矩阵矩阵QQ和一个上三角矩阵和一个上三角矩阵和一个上三角矩阵和一个上三角矩阵R R乘积形式。乘积形式。乘积形式。乘积形式。QRQR分解只分解只分解只分解只能对方阵进行能对方阵进行能对方阵进行能对方阵进行。MATLABMATLAB函数函数函数函数qrqr可用于对矩阵进可用于对矩阵进可用于对矩阵进可用于对矩阵进行行行行QRQR分解,其调用格式为:分解,其调用格式为:分解,其调用格式为:分解,其调用格式为:Q,R=qr(X)Q,R=qr(X):产生一个一个正交矩阵

7、产生一个一个正交矩阵产生一个一个正交矩阵产生一个一个正交矩阵QQ和一个上和一个上和一个上和一个上三角矩阵三角矩阵三角矩阵三角矩阵R R,使之满足,使之满足,使之满足,使之满足X=QRX=QR。Q,R,E=qr(X)Q,R,E=qr(X):产生一个一个正交矩阵产生一个一个正交矩阵产生一个一个正交矩阵产生一个一个正交矩阵QQ、一个、一个、一个、一个上三角矩阵上三角矩阵上三角矩阵上三角矩阵R R以及一个置换矩阵以及一个置换矩阵以及一个置换矩阵以及一个置换矩阵E E,使之满足,使之满足,使之满足,使之满足XE=QRXE=QR。实现实现实现实现QRQR分解后,线性方程组分解后,线性方程组分解后,线性方程

8、组分解后,线性方程组Ax=bAx=b解解解解x=R(Qb)x=R(Qb)或或或或x=E(R(Qb)x=E(R(Qb)。例例7-3 用用QR分解求解例分解求解例7-1中线性方程组。中线性方程组。10/10/6第6页(3)Cholesky分解分解 假如矩阵假如矩阵假如矩阵假如矩阵X X X X是对称正定,则是对称正定,则是对称正定,则是对称正定,则CholeskyCholesky分解将矩阵分解将矩阵分解将矩阵分解将矩阵X X X X分解成一个下三角矩阵和上三角矩阵乘积。设上三分解成一个下三角矩阵和上三角矩阵乘积。设上三分解成一个下三角矩阵和上三角矩阵乘积。设上三分解成一个下三角矩阵和上三角矩阵乘积

9、。设上三角矩阵为角矩阵为角矩阵为角矩阵为R R,则下三角矩阵为其转置,即,则下三角矩阵为其转置,即,则下三角矩阵为其转置,即,则下三角矩阵为其转置,即X=RRX=RR。MATLABMATLAB函数函数函数函数chol(X)chol(X)用于对矩阵用于对矩阵用于对矩阵用于对矩阵X X X X进行进行进行进行CholeskyCholesky分分分分解,其调用格式为:解,其调用格式为:解,其调用格式为:解,其调用格式为:R=chol(X)R=chol(X):产生一个上三角阵:产生一个上三角阵:产生一个上三角阵:产生一个上三角阵R R,使,使,使,使R R R R=X X。若。若。若。若X X为非对称

10、正定,则输出一个犯错信息。为非对称正定,则输出一个犯错信息。为非对称正定,则输出一个犯错信息。为非对称正定,则输出一个犯错信息。R,p=chol(X)R,p=chol(X):这个命令格式将不输出犯错信息。:这个命令格式将不输出犯错信息。:这个命令格式将不输出犯错信息。:这个命令格式将不输出犯错信息。当当当当X X为对称正定,则为对称正定,则为对称正定,则为对称正定,则p=0p=0,R R与上述格式得到结果相与上述格式得到结果相与上述格式得到结果相与上述格式得到结果相同;不然同;不然同;不然同;不然p p为一个正整数。假如为一个正整数。假如为一个正整数。假如为一个正整数。假如X X为满秩矩阵,则

11、为满秩矩阵,则为满秩矩阵,则为满秩矩阵,则R R R R为一个阶数为为一个阶数为为一个阶数为为一个阶数为q=p-1q=p-1上三角阵,且满足上三角阵,且满足上三角阵,且满足上三角阵,且满足RR=X(1:q,1:q)RR=X(1:q,1:q)。实现实现实现实现CholeskyCholesky分解后,线性方程组分解后,线性方程组分解后,线性方程组分解后,线性方程组Ax=bAx=b变成变成变成变成RRx=bRRx=b,所以,所以,所以,所以x=R(Rb)x=R(Rb)。10/10/7第7页例例7-4 用用Cholesky分解求解例分解求解例7-1中线性方程中线性方程组组。命令以下:命令以下:A=2,

12、1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4;b=13,-9,6,0;R=chol(A)?Error using=chol Matrix must be positive definite 命令执行时,出现错误信息,说明命令执行时,出现错误信息,说明A A为非正为非正定矩阵。定矩阵。10/10/8第8页7.1.2 迭代解法迭代解法 迭代解法非常适合求解大型系数矩阵方程组。在迭代解法非常适合求解大型系数矩阵方程组。在迭代解法非常适合求解大型系数矩阵方程组。在迭代解法非常适合求解大型系数矩阵方程组。在数值分析中,迭代解法主要包含数值分析中,迭代解法主要包含数值分析中,迭代解

13、法主要包含数值分析中,迭代解法主要包含 Jacobi Jacobi迭代法迭代法迭代法迭代法、Gauss-SerdelGauss-Serdel迭代法、超松弛迭代法和两步迭代法。迭代法、超松弛迭代法和两步迭代法。迭代法、超松弛迭代法和两步迭代法。迭代法、超松弛迭代法和两步迭代法。1.Jacobi 1.Jacobi迭代法迭代法迭代法迭代法 对于线性方程组对于线性方程组对于线性方程组对于线性方程组Ax=bAx=b,假如假如假如假如A A为非奇异方阵,为非奇异方阵,为非奇异方阵,为非奇异方阵,即即即即aii0(i=1,2,n)aii0(i=1,2,n),则可将则可将则可将则可将A A分解为分解为分解为分

14、解为A=D-L-UA=D-L-U,其中其中其中其中D D为对角阵,其元素为为对角阵,其元素为为对角阵,其元素为为对角阵,其元素为A A对角元素对角元素对角元素对角元素,L L与与与与U U为为为为A A下三角阵和上三角阵,于是下三角阵和上三角阵,于是下三角阵和上三角阵,于是下三角阵和上三角阵,于是Ax=bAx=b化为化为化为化为:x=D x=D-1-1(L+U)x+D(L+U)x+D-1-1b b 与之对应迭代公式为与之对应迭代公式为与之对应迭代公式为与之对应迭代公式为:x(k+1)=D x(k+1)=D-1-1(L+U)x(k)+D(L+U)x(k)+D-1-1b b 这就是这就是这就是这就

15、是JacobiJacobi迭代公式。假如序列迭代公式。假如序列迭代公式。假如序列迭代公式。假如序列x(k+1)x(k+1)收敛收敛收敛收敛于于于于x x,则则则则x x必是方程必是方程必是方程必是方程Ax=bAx=b解解解解。10/10/9第9页例例7-5 用用Jacobi迭代法求解以下线性方程组。迭代法求解以下线性方程组。设迭代初值为设迭代初值为0,迭代精度为,迭代精度为10-6。Jacobi Jacobi迭代法迭代法迭代法迭代法MATLABMATLAB函数文件函数文件函数文件函数文件Jacobi.mJacobi.m10/10/10第10页2.Gauss-Serdel迭代法迭代法在在Jaco

16、bi迭代过程中,计算时,已经得到,无迭代过程中,计算时,已经得到,无须再用,即原来迭代公式须再用,即原来迭代公式Dx(k+1)=(L+U)x(k)+b能够改进为能够改进为Dx(k+1)=Lx(k+1)+Ux(k)+b,于是得到:,于是得到:x(k+1)=(D-L)-1Ux(k)+(D-L)-1b该式即为该式即为Gauss-Serdel迭代公式。和迭代公式。和Jacobi迭迭代相比,代相比,Gauss-Serdel迭代用新分量代替旧分迭代用新分量代替旧分量,精度会高些。量,精度会高些。10/10/11第11页 Gauss-Serdel迭代法迭代法MATLAB函数文件函数文件gauseidel.m

17、例例7-6 用用Gauss-Serdel迭代法求解以下线性方迭代法求解以下线性方 程组。设迭代初值为程组。设迭代初值为0,迭代精度为,迭代精度为10-6。例例7-7 分别用分别用Jacobi迭代和迭代和Gauss-Serdel迭代迭代 法求解以下线性方程组,看是否收敛。法求解以下线性方程组,看是否收敛。10/10/12第12页7.2 非线性方程数值求解非线性方程数值求解7.2.1 单变量非线性方程求解单变量非线性方程求解 在在MATLAB中中提供了一个提供了一个fzero函数,可函数,可 以用来求单变量非线性方程根。该函数调以用来求单变量非线性方程根。该函数调用格式为用格式为:z=fzero(

18、fname,x0,tol,trace)其中其中fname是待求根函数文件名是待求根函数文件名,x0为搜为搜索起点。一个函数可能有多个根,但索起点。一个函数可能有多个根,但fzero函数只给出离函数只给出离x0最近那个根最近那个根。tol控制结果控制结果相对精度,缺省时取相对精度,缺省时取tol=eps,trace指定迭指定迭代信息是否在运算中显示,为代信息是否在运算中显示,为1 1时显示,为时显示,为0 0时不显示,缺省时取时不显示,缺省时取trace=0。10/10/13第13页 例例7-8 求求f(x)=x-10 x+2=0在在x0=0.5附近根附近根。步骤以下步骤以下:(1)建立函数文件

19、建立函数文件funx.m。function fx=funx(x)fx=x-10.x+2;(2)调用调用fzero函数求根函数求根。z=fzero(funx,0.5)z=0.375810/10/14第14页7.2.2 非线性方程组求解非线性方程组求解 对于非线性方程组对于非线性方程组对于非线性方程组对于非线性方程组F(X)=0F(X)=0,用用用用fsolvefsolve函数求其函数求其函数求其函数求其数值解数值解数值解数值解。fsolvefsolve函数调用格式为函数调用格式为函数调用格式为函数调用格式为:X=fsolve(fun,X0,option)X=fsolve(fun,X0,optio

20、n)其中其中其中其中X X为返回解为返回解为返回解为返回解,funfun是用于定义需求解非线是用于定义需求解非线是用于定义需求解非线是用于定义需求解非线性方程组函数文件名性方程组函数文件名性方程组函数文件名性方程组函数文件名,X0X0是求根过程初值是求根过程初值是求根过程初值是求根过程初值,optionoption为最优化工具箱选项设定。最优化工具箱为最优化工具箱选项设定。最优化工具箱为最优化工具箱选项设定。最优化工具箱为最优化工具箱选项设定。最优化工具箱提供了提供了提供了提供了2020多个选项,用户能够使用多个选项,用户能够使用多个选项,用户能够使用多个选项,用户能够使用optimsetop

21、timset命令将命令将命令将命令将它们显示出来。假如想改变其中某个选项,则能它们显示出来。假如想改变其中某个选项,则能它们显示出来。假如想改变其中某个选项,则能它们显示出来。假如想改变其中某个选项,则能够调用够调用够调用够调用optimset()optimset()函数来完成。比如函数来完成。比如函数来完成。比如函数来完成。比如,DisplayDisplay选项选项选项选项决定函数调用时中间结果显示方式,其中决定函数调用时中间结果显示方式,其中决定函数调用时中间结果显示方式,其中决定函数调用时中间结果显示方式,其中offoff为不显示为不显示为不显示为不显示,iteriter表示每步都显示表

22、示每步都显示表示每步都显示表示每步都显示,finalfinal只显示最终止果只显示最终止果只显示最终止果只显示最终止果。optimset(Display,off)optimset(Display,off)将设定将设定将设定将设定DisplayDisplay选项为选项为选项为选项为offoff。10/10/15第15页 例例7-9 求以下非线性方程组在求以下非线性方程组在(0.5,0.5)附近附近 数值解数值解。(1)(1)建立函数文件建立函数文件建立函数文件建立函数文件myfun.mmyfun.m。function q=myfun(p)function q=myfun(p)x=p(1);x=p

23、(1);y=p(2);y=p(2);q(1)=x-0.6*sin(x)-0.3*cos(y);q(1)=x-0.6*sin(x)-0.3*cos(y);q(2)=y-0.6*cos(x)+0.3*sin(y);q(2)=y-0.6*cos(x)+0.3*sin(y);(2)(2)在给定初值在给定初值在给定初值在给定初值x0=0.5,y0=0.5x0=0.5,y0=0.5下,调用下,调用下,调用下,调用fsolvefsolve函函函函 数求方程根。数求方程根。数求方程根。数求方程根。x=fsolve(myfun,0.5,0.5,optimset(Display,off)x=fsolve(myfu

24、n,0.5,0.5,optimset(Display,off)x=x=0.6354 0.6354 0.3734 0.373410/10/16第16页7.3 常微分方程初值问题数值解法常微分方程初值问题数值解法7.3.1 龙格库塔法龙格库塔法 基于龙格库塔法,基于龙格库塔法,MATLAB提供了求常微提供了求常微 分方程数值解函数,普通调用格式为:分方程数值解函数,普通调用格式为:t,y=ode23(fname,tspan,y0)t,y=ode45(fname,tspan,y0)其中其中fname是定义是定义f(t,y)函数文件名,该函数函数文件名,该函数 文件必须返回一个列向量。文件必须返回一个

25、列向量。tspan形式为形式为t0,tf,表示求解区间。表示求解区间。y0是初始状态列向量。是初始状态列向量。t和和y分分 别给出时间向量和对应状态向量。别给出时间向量和对应状态向量。10/10/17第17页(1)(1)建立函数文件建立函数文件建立函数文件建立函数文件funt.mfunt.m。function yp=funt(t,y)function yp=funt(t,y)yp=(y2-t-2)/4/(t+1);yp=(y2-t-2)/4/(t+1);(2)(2)求解微分方程。求解微分方程。求解微分方程。求解微分方程。t0=0;tf=10;t0=0;tf=10;y0=2;y0=2;t,y=o

26、de23(funt,t0,tf,y0);%t,y=ode23(funt,t0,tf,y0);%求数值解求数值解求数值解求数值解y1=sqrt(t+1)+1;%y1=sqrt(t+1)+1;%求准确解求准确解求准确解求准确解t ty yy1y1y y为数值解,为数值解,为数值解,为数值解,y1y1为准确值,显然二者近似。为准确值,显然二者近似。为准确值,显然二者近似。为准确值,显然二者近似。例例7-10 设有初值问题,试求其数值解,并与设有初值问题,试求其数值解,并与 准确解相比较准确解相比较(准确解为准确解为y1=sqrt(t+1)+1。)10/10/18第18页 7.4 函数极值函数极值 M

27、ATLAB提供了基于单纯形算法求解函提供了基于单纯形算法求解函数极值函数数极值函数fminbnd和和fminsearch,它们分它们分别用于单变量函数和多变量函数最小值,其别用于单变量函数和多变量函数最小值,其调用格式为:调用格式为:x=fminbnd(fname,x1,x2)x=fminsearch(fname,x0)这两个函数调用格式相同。其中这两个函数调用格式相同。其中fminbnd函数函数用于求单变量函数最小值点。用于求单变量函数最小值点。fname是被最小是被最小化目标函数名,化目标函数名,x1和和x2限定自变量取值范围。限定自变量取值范围。fminsearch函数用于求多变量函数最

28、小值点,函数用于求多变量函数最小值点,x0是求解初始值向量。是求解初始值向量。10/10/19第19页 MATLAB没有专门提供求函数最大值函数,但没有专门提供求函数最大值函数,但只要注意到只要注意到-f(x)在区间在区间(a,b)上最小值就是上最小值就是f(x)在在(a,b)最大值,所以最大值,所以fminbnd(f,x1,x2)返回函数返回函数f(x)在区间在区间(x1,x2)上最大值。上最大值。10/10/20第20页例例7-11 求求f(x)=x3-2x-5在在0,5内最小值点。内最小值点。例例7-12 多变量函数极值事例多变量函数极值事例(1)创造一个函数文件创造一个函数文件three_var.mfunction b=three_var(v)x=v(1);y=v(2);z=v(3);b=x.2+2.5*sin(y)-z2*x2*y2;(2)找出函数极值找出函数极值v=-0.6-1.2 0.135;a=fminsearch(three_var,v)10/10/21第21页

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服