第5章 数值计算0.4.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第5章 数值计算0.4.ppt》由会员分享,可在线阅读,更多相关《第5章 数值计算0.4.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Matlab 与计算方法华侨大学计算机学院张国亮 2010.9第5章 数值计算与数据分析 与符号计算相比,数值计算在科研和工程中的应用更为广泛。Matlab也正是凭借其卓越的数值计算能力而著称。也有人称Matlab为数值计算软件。为什么进行数值计算方法的研究?工程实践、科研领域的实际需要。计算机软硬件的支持,计算机的计算能力显著得到了提升。本章是学习matlab的重点内容本章将花较大的篇幅讨论若干常见数值计算问题:线性分析、本章将花较大的篇幅讨论若干常见数值计算问题:线性分析、一元和多元函数分析、微积分、数据分析、以及常微分方程一元和多元函数分析、微积分、数据分析、以及常微分方程求解等。求解等
2、。第5章 数值计算与数据分析 数值计算方法的具体内容十分繁杂,每一项应用都可能有具体不同的数值计算方法,我们这门课程主要介绍如何使用MATLAB中已经确定的一些数值方法,对数值计算方法感兴趣的同学可以看一下Matlab与数值方法这一本书。第5章 数值计算与数据分析 5.1.1 三角函数与双曲函数三角函数与双曲函数 函数 sin、sinh(正弦函数与双曲正弦函数)格式 Y=sin(X)%计算参量X(可以是向量、矩阵,元素可以是复数)中每一个角度分量 的正弦值Y,所有分量的角度单位为弧度。Y=sinh(X)%计算参量X的双曲正弦值Y例:x=-pi:0.01:pi;plot(x,sin(x)x=-5
3、:0.01:5;plot(x,sinh(x)5.1 基本数学函数 第5章 数值计算与数据分析 5.1.1 三角函数与双曲函数三角函数与双曲函数 函数 asin、asinh功能 反正弦函数与反双曲正弦函数函数 cos、cosh功能 余弦函数与双曲余弦函数函数 acos、acosh功能 反余弦函数与反双曲余弦函数函数 tan、tanh功能 正切函数与双曲正切函数函数 cot、coth功能 余切函数与双曲余切函数5.1 基本数学函数 第5章 数值计算与数据分析 5.1.1 三角函数与双曲函数三角函数与双曲函数 函数 acot、acoth功能 反余切函数与反双曲余切函数函数 sec、sech功能 正割
4、函数与双曲正割函数函数 asec、asech功能 反正割函数与反双曲正割函数函数 csc、csch功能 余割函数与双曲余割函数函数 acsc、acsch功能 反余割函数与反双曲余割函数。5.1 基本数学函数 第5章 数值计算与数据分析 5.1.2 取整函数取整函数 函数函数 roud功能:朝最近的方向取整。格式 Y=round(X)对X的每一个元素朝最近的方向取整数部分,返回与X同维的数组。对于复数参量X,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝最近方向的整数部分。例:A=-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i;Y=round(A)计算结果为:.
5、5.1 基本数学函数 第5章 数值计算与数据分析 5.1.2 取整函数取整函数 其他取整函数:函数函数 fix功能 朝零方向取整函数函数 floor功能 朝负无穷大方向取整函数函数 ceil功能 朝正无穷大方向取整5.1 基本数学函数 第5章 数值计算与数据分析 5.1.3 指数函数、对数函数指数函数、对数函数函数函数 exp 功能:以e为底数的指数函数格式:Y=exp(X)%对参量X的每一分量,求以e为底数的指数函数Y。X中的分量 可以为复数。例:A=-1.9,-0.2,3.1415926,5.6,7.0,2.4+3.6i;Y=exp(A)计算结果:.5.1 基本数学函数 第5章 数值计算与
6、数据分析 5.1.3 指数函数、对数函数指数函数、对数函数函数函数 exp函数函数 expm 功能:求矩阵的以e为底数的指数函数函数函数 Y=log(X):自然对数,即以e为底数的对数 函数函数 Y=log10(X):常用对数,即以10为底数的对数。5.1 基本数学函数 第5章 数值计算与数据分析 5.2 数值微积分5.2.1 数值极限及导数数值极限及导数 在Matlab中数值计算中,没有专门求极限和导数的指令。原因是,在数值浮点体系中,由于数值精度有限,不能表示无穷小量。但是,这并不意味着Matlab无法用数值方法求解极限和导数,事实上,数值计算是解各类微分方程的最主要工具。(很多情况下,符
7、号法是无法求出微分方程的精确解)第5章 数值计算与数据分析 5.2 数值微积分5.2.1 数值极限及导数数值极限及导数 注意:1、解算极值、积分、微分方程等数值问题时,不要贸然自行编写基于数值计算的方法,而要使用matlab提供的现成的指令。2、在数值近似导数非求不可的情况下,自变量的增量选取一定要大于原数据相对精度的10倍以上。3、Matlab中没有提供专门的求极限、求导指令,但提供了与“求导”概念有关的两个指令。第5章 数值计算与数据分析 5.2 数值微积分5.2.1 数值极限及导数数值极限及导数 在matlab中,与求导相关的有两个指令:差分与梯度指令Dx=diff(X)求差分FX=gr
8、adient(F)求一元函数梯度FX,FY=gradient(F)求二元函数梯度说明:对差分diff而言,差分结果dx的长度比X的长度短一个元素;对梯度gradient而言,FX的长度与F相同;当在gradient中的F是矩阵时,FX,FY是与F同样大小的矩阵。FX的每行给出F相应行元素间的梯度;FY的每列给出相应列元素间的梯度;第5章 数值计算与数据分析 5.2 数值微积分5.2.1 数值极限及导数数值极限及导数 例:设 试用机器零阈值eps替代理论0计算极限 ,并与符号计算方法比较。(1)不可信的“极限的数值近似计算”x=eps;L1=(1-cos(2*x)/(x*sin(x)%将得到一个
9、错误的极限值L2=sin(x)/x%这个值恰巧与理论值一致 结果:.三角函数:cos2x=1-2sin2(x)第5章 数值计算与数据分析 5.2 数值微积分5.2.1 数值极限及导数数值极限及导数 例:设 试用机器零阈值eps替代理论0计算极限 ,并与符号计算方法比较。(1)可信的“极限的符号计算”syms tf1=(1-cos(2*t)/(t*sin(t);f2=sin(t)/t;Ls1=limit(f1,t,0)Ls2=limit(f2,t,0)结果:.算例总结:借助符号计算所求的极限与理论值一致,而用数值法近似计算的极限与理论值不一致,慎用数值法!第5章 数值计算与数据分析 5.2 数值
10、微积分5.2.1 数值极限及导数数值极限及导数 例:已知x=sin(t),求该函数在区间0,2pi中的近似导函数。本例演示:数值计算方法中,自变量增量的适当取值对数值导函数的精度影响很大。第5章 数值计算与数据分析 5.2 数值微积分5.2.1 数值极限及导数数值极限及导数(1)计算数值导数时,自变量的增量过小d=pi/100;t=0:d:2*pi;x=sin(t);dt=5*eps;%增量为eps数量级x_eps=sin(t+dt);dxdt_eps=(x_eps-x)/dt;%用定义来计算plot(t,x,LineWidth,5)hold onplot(t,dxdt_eps)hold of
11、flegend(x(t),dx/dt)xlabel(t)第5章 数值计算与数据分析 5.2 数值微积分5.2.1 数值极限及导数 例:已知x=sin(t),求该函数在区间0,2pi中的近似导函数。本例演示:自变量增量的适当取值对数值导函数的精度影响很大。(2)计算数值导数,自变量增量适当x_d=sin(t+d);%增量为d=pi/100dxdt_d=(x_d-x)/d;plot(t,x,LineWidth,5)hold onplot(t,dxdt_d)hold offlegend(x(t),dx/dt)xlabel(t)第5章 数值计算与数据分析 5.2 数值微积分5.2.1 数值极限及导数
12、算例总结:1 即使被导函数数据是从双精度计算获得的,数值导数仍然受计算中的有限精度困扰。当自变量增量dt取得太小时,f(t+dt)与f(t)的数值十分接近,它们的高位有效数字几乎完全相同。这样,计算dff(t+dt)-f(t)时,f(t+dt)和f(t)相减造成dt的许多高位有效数字消失,导致精度急剧变差。第5章 数值计算与数据分析 5.2 数值微积分5.2.1 数值极限及导数 例:已知x=sin(t),采用diff和gradient计算该函数在区间0,2pi中的近似导函数。本例演示:diff和gradient求数值近似导数的方法;diff和gradient求导的差别。d=pi/100;t=0
13、:d:2*pi;x=sin(t);dxdt_diff=diff(x)/d;%diff求得的近似数值导数,注意除以d dxdt_grad=gradient(x)/d;%gradient求得的近似数值导数,注意除以d 绘图命令第5章 数值计算与数据分析 5.2 数值微积分5.2.1 数值极限及导数 左图:从宏观上看,二者求导时并无太大区别;右图:从细节上看,二者在数值上有差异,而且diff没有给出最后一点的导数;第5章 数值计算与数据分析 5.2 数值微积分5.2.2 数值求和与数值积分 Sx=sum(X)沿列方向求和Scx=cumsum(X)沿列方向累计求和St=trapz(x,y)采用梯形法沿
14、列方向求函数y关于自变量x的积分Sct=cumtrapz(x,y)采用梯形法沿列方向求函数y关于自变量x的累计积分注:数值求和和数值积分是不同的概念;Trapz和cumtrapz所得数值积分的精度与积分区间分隔的程度有关,采样数越多,积分精度越高。第5章 数值计算与数据分析 5.2 数值微积分5.2.2 数值求和与数值积分 求积分 其中,y=0.2+sin(t)演示:数值求和和数值积分差异。d=pi/8;t=0:d:pi/2;5个采样点数据y=0.2+sin(t);s=sum(y);所有函数采样值之和s_sa=d*s;高度为函数采样值的小矩形面积之和s_ta=d*trapz(y);连接各函数采
15、样值的折线下的面积,也可直接采用s_ta=trapz(t,y)形式;绘图指令.第5章 数值计算与数据分析 5.2 数值微积分5.2.2 数值求和与数值积分 求积分 其中,y=0.2+sin(t)计算结果:计算结果:sum求得积分求得积分 trapz求得积分求得积分 1.5762 1.3013说明:说明:本例为了说明求和和本例为了说明求和和积分的不同,把采样区间设积分的不同,把采样区间设得比较大,实际上当采样区得比较大,实际上当采样区间很小时,而这区别并不大,间很小时,而这区别并不大,但二者是两个不同的概念,但二者是两个不同的概念,不能简单把不能简单把d*sum(y)看作看作“矩形近似积分矩形近
16、似积分”。第5章 数值计算与数据分析 5.2 数值微积分5.2.3 数值积分计算精度的控制 前面介绍了数值求和与数值积分的区别,从中可以看出,利用trapz命令,可以直接进行数值积分的计算。但是,这种计算方法无法预先设置预求积分的精度,也无法得知已求得积分的精度,这在需要精确控制积分精度的场合是不利的。为此,Matlab中引入了精度可控的数值积分计算方法。数值积分有闭型算法和开型算法,二者的区别在于,是否计算积分区间端点处的函数值。Matlab提供的闭型数值积分指令:“quad”第5章 数值计算与数据分析 5.2 数值微积分5.2.3 数值积分计算精度的控制S1 quad(fun,a,b,to
17、l)Simpson法计算积分S1=quad(fun,a,b,tol)Lobatto法计算机分S2=dblquad(fun,xmin,xmax,ymin,ymax,tol)二重(闭型)数值积分S3=triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)三重(闭型)数值积分注:被积函数fun,可以是字符串、内联对象、匿名函数和M函数文件的函数句柄;tol用来控制绝对误差;第5章 数值计算与数据分析 5.2 数值微积分5.2.3 数值积分计算精度的控制(1)采用符号计算方法获得)采用符号计算方法获得32位精度的精确积分值位精度的精确积分值syms xIsy
18、m=vpa(int(exp(-x2),x,0,1)Isym=0.74682413281242702539946743613185 第5章 数值计算与数据分析 5.2 数值微积分5.2.3 数值积分计算精度的控制(2)采用)采用trapz计算积分计算积分format long 采用15位数字显示计算结果d=0.001;x=0:d:1;Itrapz=d*trapz(exp(-x.*x)Itrapz=0.746824071499185 第5章 数值计算与数据分析 5.2 数值微积分5.2.3 数值积分计算精度的控制(3)采用可控精度的数值积分法)采用可控精度的数值积分法fx=exp(-x.2);Ic
19、=quad(fx,0,1,1e-8)控制精度达1e-8 Ic=0.746824132854452 第5章 数值计算与数据分析 5.2 数值微积分5.2.3 数值积分计算精度的控制计算精度:计算精度:1 采用符号计算方法采用符号计算方法0.746824132812427025399467436131852采用采用trapz计算积分计算积分0.746824071499185 3采用可控精度的数值积分法采用可控精度的数值积分法0.746824132854452 说明:通过与符号计算的32为精确积分值比较,得知Trapz方法精度是6位,但事先并不能控制计算结果达到这样的精度;计算后,也无法知道该近似积
20、分的精度是否精确。quad可对积分精度进行控制。第5章 数值计算与数据分析 5.2 数值微积分5.2.3 数值积分计算精度的控制(1)符号计算法)符号计算法syms x ys=vpa(int(int(xy,x,0,1),y,1,2)s=.40546510810816438197801311546432(2)数值计算法)数值计算法format longs_n=dblquad(x,y)x.y,0,1,1,2)s_n=0.405466267243508 求二重积分:被积函数采用匿名函数的方式!第5章 数值计算与数据分析 5.2 数值微积分5.2.3 数值积分计算精度的控制算例总结算例总结:S2=db
21、lquad(fun,xmin,xmax,ymin,ymax,tol)二重(闭型)数值积分Dblquad指令中的tol省略时,表示数值积分的绝对精度为(1e-6).被积函数可以写成多种形式:1.s_n=dblquad(x,y)x.y,0,1,1,2)2.s_n=dblquad(x.y,0,1,1,2)3.s_n=dblquad(inline(x.y),0,1,1,2)求二重积分:第5章 数值计算与数据分析 5.2 数值微积分5.2.4 函数极值的数值求解 函数极值问题:函数极值问题:(1)高等数学中给出的求解方法是:)高等数学中给出的求解方法是:先对函数f(x)求导函数f(x),然后解方程f(x
22、)0,得到满足方程的x0,再通过分析f(x)在x0邻域的凹凸性,确定处f(x)是否在x0处取得极值。这种极值法的优点是概念清晰、易于理解。Matlab的符号计算指令采用的是这种方法。(2)但这种方法在实际中确会遇到两大困难:一是待求极值函数的导函数未必处处存在,二是即使导函数存在,f(x)=0并不一定能解出。因此引入了数值求解极值的方法。第5章 数值计算与数据分析 5.2 数值微积分5.2.4 函数极值的数值求解 数值求解极值的方法:求极值的现代数值计算程序一般是利用函数构成的某种“代价函数”(cost function)值的不断下降原理进行搜索的最速下降法。因此,我们可以把数值求极值问题看成
23、一种优化问题。1 Matlab只有极小值命令,没有极大值命令。2 讨论的极值只是“局部极值”,也就是局部最小化,而非全局最小化!第5章 数值计算与数据分析 5.2 数值微积分5.2.4 函数极值的数值求解 指令:指令:fminbndx,fval,exitflag,output=fminbnd(fun,x1,x2,options)求一元函数在区间(x1,x2)中极小值x,fval,exitflag,output=fminsearch(fun,x0,options)求多元函数极值【说明】:1、fun是待解的目标函数,该函数可以是字符串,内联对象、匿名函数和m函数文件的函数句柄;fminsearch
24、()函数中的多元自变量应采用单一变量名的向量表达形式。2、fminbnd的第二、三个输入量x1,x2分别表示被研究区间的左右边界。输出量x,fval分别表示极值点和响应的目标函数值,输入量options用于配置优化参数。第5章 数值计算与数据分析 5.2 数值微积分5.2.4 函数极值的数值求解【说明】:3、fminsearch的第二个输入宗量x0可以是一个搜索起点的向量或一组搜索起点的矩阵。当采用单个搜索起点时,输出量x也是一个单点向量。当采用多个搜索起点(矩阵)时,输出量x就给出多个搜索结果(矩阵)。4、输出量exitflag若给出大于0的数,说明成功搜索道极值点。5、输出量output给
25、出具体的优化算法和迭代次数。第5章 数值计算与数据分析 5.2 数值微积分5.2.4 函数极值的数值求解 已知,在-pi/2,pi/2,求函数的极小值。(1)极值定义方法求解syms xy=(x+pi)*exp(abs(sin(x+pi);yd=diff(y,x);%求导函数xs0=solve(yd)%求导函数为0的自变量值xs0y_xs0=vpa(subs(y,x,xs0),6)%计算y(sx0),发现它不是最小值y_m_pi=vpa(subs(y,x,-pi/2),6)%计算左边界点函数值y(-pi/2)y_p_pi=vpa(subs(y,x,pi/2),6)%计算右边界点函数值y(pi/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 数值计算0.4 数值 计算 0.4
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内