- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 数值微分
* * 第六章 数值微分 数值微分法是一种不通过微分来求函数导数的 方法,其存在有两个必要性: 一、函数值在某些离散点上已知,或以表格形式给 出,这样就不能得到解析的微分式; 二、即使函数是可微的,但其导数计算过于繁琐。 一、插值多项式的导数 当已知函数在一些离散点上的函数值时,该函数可用插值多项式来近似,然后对多项式进行微分求得导数。 其中 n+1是所选的节点数,对其进行插值多项式拟合: 设需要知道函数 在 点上的一阶导数值或 其近似值,但目前已知的只有一些离散点 上的函数值。 可以选取 附近的少量点,即: 对 微分,并取 ,即得 在 处的一阶 导数, 近似地等于 。 同理,在 处的二阶导数 更一般地, n+1个节点,则可以求得 n 阶导数的近似。 这些都是 的近似。值得注意的是,如果有 通过坐标变换可以计算任意点 x 处的导数值。 直接用 拟合节点 也可以得到系数 , 即: d = polyfit( x-a , y , length(x)-1 ) 采用变换 将 写成 的表达式: 则 若求函数 在 处的导数值, 插值多项式的所有阶导数都可以用命令poly_drv计算: function der = poly_drv(xd,yd,a) m = length(xd)-1; d = polyfit(xd-a, yd, m); c = d(m:-1:1); fact(1)=1; for i=2:m fact(i)=i*fact(i-1); end der = c.*fact; 例1 数据集合为 计算 处的各阶导数。 0.9053 0.8614 0.7941 0.6982 0.5672 0.3927 yd 1.0000 0.8000 0.6000 0.4000 0.2000 0 xd xd=[0 0.2000 0.4000 0.6000 0.8000 1.0000]; yd=[0.3927 0.5672 0.6982 0.7941 0.8614 0.9053]; a=0.3; L=length(xd); d=polyfit(xd-a,yd,L-1); fact=[1]; for k=1:L-1 fact=[factorial(k),fact]; end deriv=d.*fact 或 d=polyfit(xd-a,yd,L-1); deriv=polyval(d,0); for n=1:L-1 d=polyder(d); deriv=[polyval(d,0),deriv]; end deriv 结果按导数阶数从大到小排列,最后一个为函数值: deriv = 1.8750 -1.3750 1.0406 -0.9710 0.6533 0.6376 二、差分近似 设需求函数 在 处的导数, 具体如下: 已知 其中 h 代表 x 坐标轴上两个相邻节点之间的长度, 则 可用线性插值函数A, B, C的梯度来 近似, 分别称为向前差分、向后差分、中心差分, 向前差分 向后差分 中心差分 差分近似方法与插值多项式密切相关。考虑 p+1个点 采用Lagrange插值,p+1个节点最多拟合为 p 阶多项 式,可以求到 p 阶导数。在点集上的插值多项式的导 数被称为差分近似,由导数计算中所依赖的 集合中点的不同,以及导数阶数的不同,可以获得不 同的差分近似。 例2 (1) 已知 ,相应函数值 , 则过点 的Lagrange插值多项式近似 : 微分一次及两次,令 ,得: 若已知函数是一过点 二次多项式, 该系数可由polyfit获得,再用polyder求导即可。 c=polyfit([0,1,2],[1,0,0]); cd1=polyder(c); cd2=polyder(cd1) dd1=polyval
文档评论(0)