当前课程知识点:计算方法 > 第9章 数值积分与数值微分 > 9.6 数值微分 > 9.6 数值微分
讲完了那个积分
我们来看看
微分就是反过来说
原来求积分
现在求导数
求导数的时候了
数值型的时候
和我们原来做积分的方式有点类似
有些时候的这个函数值
我们要给出来的时候呢
它是用离散的一些点列给出来的
但是要求我们用这些离散点
给出一些导数值
这是一个
第二个地方的时候就函数
原始的表达式的函数呢
非常麻烦
就在用的
场合中间的时候有的时候可能
不需要精确度
非常非常高
能不能用别的数值的方法
更快的计算出来
这些导数值
那这就是我们要求的这个
叫做数值微分的方式
将这个@@@求导数
真正做的过程
中间的时候的
我们实际上不是用导数
而是用差商来代替
因为从微积分的角度上来看的
导数的定义有下面三种情况
第一种情形下的时候
哎
h趋于0
h分之
上面是x加h时候的函数值
和X处的函数值之间的差
这个比值呢
本身就是一个插商
然后第二个是类似的
这h如果带0的地方的时候了
可以认为他是一个左导数
还有最后一种方式的
对应的地方的时候
是前两者之间的平均值
这样做出来以后了
我们可以通过泰勒公式
给他进行做一些
分析
比如说第一种
我们用它的方式的时候
取一个比较小的h
来找到
就当做
它的这个极限值
它本来应该求的极限
h非常小的时候应该离的比较接近
但这种比较接近能接近什么程度
我们从泰勒公式展开
可以看看啊
把
X零
f在x0加h的函数值呢
照泰勒公式展开
在x零处展开就行
我们展开到二姐
第一阶fx0
这是常数部分
和h相关的这是一阶导数
和二阶
h平方相关的
有个2的阶乘分之一
还有一个二阶导数
这个二阶导数呢
是在x0和加
x0加h之间
这样把它代到上面
这个插商的表达式里头去的
时候
可以看出来
它离真实的函数的导数值
差了一点点
差的时候是负
二分之一倍的h
乘上刚才那个二阶导数
也就是差不多的时候了
它的误差
是h的一个倍数
因为这个公式给出来的时候
这是一个插商形式
然后呢
x0加h一般
习惯上h都是正的
所以这个实际上是相当是用
后面一个数据
减前面一个东西
所以叫做向前插方
类似的时候呢
把
h改成负的
这就是
改成h0减h
这个是刚才第二个公式中间的时候
导出来的时候的向后
我们称为向后插商公式
这个公式的时候也跟
刚才同样的方法的
去进行分析
发现了它给出来的误差是二分之h
去乘上另外一个二阶导数
这个导数了
应该是在x0减h
和x0之间
把它两个做一个平均值
做一个平均值
这样得到了一个
我们得到一个中心误差
也是类似于以前所讲过的
一个正误差一个负误差
做平均值可能误差会抵消一部分
从原理上也可以去讲
我们把x0+h,x0-h两个点
的函数值
都照着泰勒公式展开
展开就会发现呢
和我们真实值差别的地方的时候
它的误差差不多的时候
是6分之h平方
乘上某个
三阶导数
乘上某个三阶导数
这样的大概的这个误差项是h平方
也就是说
这个中间插商公式呢
它的误差阶的要
高一点
就是一般
我们习惯上计算这个
就是导数的时候了
都是利用它来进行
做计算
不用前两个
前面两个误差比较低
误差稍微大一点
它阶比较低误差稍微
大一点点
后面的时候了
我们再看看
前面的
我们
做积分的过程中
第一大类的时候做的就是
插值型的数值积分
主要就是用的
插值多项式的时候
代替原来的函数了来进行
计算积分
导数呢
我们也可以用类似的手法
就用插值插出来的那个
连续函数呢
来做
它的导数的近似原来函数的导数
这样的就是也是得到一对
我们这个
数值微分的一个方式
它的导数怎么来进行求的呢
就是
我把拉格朗日
这个
插座是函数找出来Ln
fx的k阶导数呢
就用Ln的k阶导数去求
而且这个我们也知道
因为原来知道fx和Ln之间
的一个误差大概一个公式
这样得到的时候
我们也大概能算出来
他这个
k阶导数的时候
他又有一个
多大的误差
但这个不是特别方便啊
我们一般只求一阶到几阶的东西
后面
我们来看看一个简单的例子
比如说
我们现在的时候三个点
三个点中间那个点是x1
左边那个点是x1-h
右边那个点是x1+h
三个点等距的
然后函数值呢
从左往右的是y0,y1,y2
然后我现在要算这三个点的
导数的近似值
它们的近似值
近似值的时候
照我们刚才的插值的方式怎么求
先把对应的
把插值整个函数找出来
找出来以后的组装出来
成这么一个
二阶的多项式
这里头我们并没有化简
没化简以后
先给它求下导
先给它求下导
求完导数的时候
二阶多项式变成一阶多项式了
公式比较简单
那么直接的地方我们把
x=x1代进去
只剩下两项了
而且这个数值的时候了
就是2分之h乘上y2减y0
这个就是实际上就是
刚才我推出来的
向前插商和向后插商
做平均值的
那个中心插商公式
比如说左端点的
那个导数公式的时候的是2h
分之
负的三倍的y0
加上4倍的y1
在减去y2
然后说
x1加h的这个导数值
怎么方式呢
和这个公式基本是一样的
你把h改成-h就行了
把y0和y2换下个儿
换下位置就行
按照这样类似的方式的时候就说
我们插值的时候
比如说我找五个点去做插值
按照同样的手法的时候
我们可以插出来是
五点的
中点公式
这个是它的导数的时候了
终点是x
然后左右两个
左右的有两个点
x+h,x-h
再远一点
x加
2h,x-2h一共五个点
然后左右两个地方
一加一减
靠中间一点的那两个点了
他的系数不一样
一个-8一个正8
这是五点公式
然后左右两个端点的公式
比如左端点公司做的时候
也是类似的一个表达式
这时候五点必须得全用上啊
比如说x是左端点
那就x,x+h,x+2h
x+3h,x+4h
这样一共
他给出了五个点
然后照着这个五点端点公式
用刚才五点的插值多项式
求完以后求导求导以后了
把它带进去
找到就这么一个表达式
12分之h
负的
25倍的fx
加下一个点的48倍
减再下一个点36倍
再加上
下个点的
16倍
减这个点的三倍
这些函数值
做这么一个组合
这就是一个
微分的一个近似公式
当这个微分给出来地方的时候呢
有一个比较麻烦的一点的事情
比如说我们可以看看
刚才的中心差分
公式
上面是
fx加h
减fx减h
然后分子了又给出来
是按2分之h
h应该是一个非常小的数值
太大了
这个和我们刚刚所说的极限了
应该偏差比较远啊
偏差比较远
但这种计算呢
已经犯了我们
数值
分析中间的时候几个大的毛病
一个是除分母
分母是一个非常接近0的数字
这个是比较问题
第二个地方的时候
就是你看看分子
分子做了这个差
它是两个相近的数相减
两个相近数相减的时候
也是有
对应的地方的时候就是
会使得大幅度的数据丢失
就有效数字会丢失
然后下面又有除的
是一个非常小的数字
不管是绝对误差
也好像的误差也好
都会比较大
所以真正在计算的过程中间
这个h是不能太小的啊
不然不是不能特别小啊
应该稍微
离0稍微远点
这个时候才有用
但这就有用的这些数据的时候了
算的过程呢
又说你说我是极限
才能达到我的准确值
不是极限
你可能离得比较远
然后我们这时候呢就
和原来的理查德外推的方式一样
我们可以
给他
也重新安排一个
外推公式
在外推之前的时候
就说我需要把他的
误差的组项出来
或者说实际上我们可以用
整个的泰勒公式展开
把fx+h,fx-h
两点呢
全在x式子展开
展开以后会发现的时候
误差是这么安排的
第一个误差x平方
拿下一项的误差了
除了个平方以后
的下一项就x四次方
再往下就是x的6次
然后这样做的时候
就和我们前面的做
外推的积分公式一样
我们也可以给他推出来一个
导数的
利用这个中心差分公式开始
然后导出来的一系列的
这个外推的公式
当这个外推的公式的时候
我们来看看一个简单的算例
这算力例的时候了
求的时候是e的x次方
在x等于2附近的
这个导数近似值
当然这个导数很容易我们知道
就是e的平方
准确的数值的起点
大概的时候
7.389056098左右
然后照这个数值的时候了
我们取
用刚才所说的
G1
就是用我们刚才
套出来的
fx加h
减掉fx减h
除上两倍的h
用这个表达式去算
那h呢
我最开始取得稍微大一点
零点一零点二零点一这么往下降
降下去算的这个数值的时候
因为降得比较小
但是算出来的G1呢
它的有效数值的时候
最后那个
才差不多能达到我需要的精度
7.389068125
但这个误差的时候
仅仅能达到
大概和准确数值相比
的地方呢
只是精确到了
小数点后面
第五位
第五位已经不准了
第五位已经不准了
只是说四舍五入是它
差不多时候呢
是有第五位啊
一共是六位有效数字
但这六位有效数字的我们可以去用
刚才的外推的过程
逐渐逐渐往外推
推的过程的时候
比如推到第四层
得到了数据的时候已经达到了
7.38905699
和我们那个准确值
中间那个989
是差不多的
但是这个地方
这只是一个简单例子
这个是凑巧能够
给它计算出来的
但是呢
如果呢
我们把它
改成其他的函数
其他的函数
改成其它的那个误差
这个东西再往后推
实际上已经有的时候了
还可能出现没有意义
没有意义
比如说我做的时候
这个变得更厉害
比如说的是e的x平方次方
这个方法做的时候在
一附近二附近的时候呢
它算出来的可能第一列
前几个还可以
第二列的时候还可以
第三点基本没法看
因为他变化的幅度有点大啊
变化的幅度有点大
这个
误差了
就是陷入
我们刚刚所说的那个陷阱
里头了
它很多东西已经是
数值基本差不多啊
分子的时候了
误差
已经把
大量数值有效数值那个丢失掉了
最终的手时候呢
整个计算公式中间的
时候并不是数值本身的
东西占主要了而是
误差
就是舍入误差的时候
占最主要部分了
那时候的就是我们也要控制
注意一下
这种h取的时候
不能再无限制往下取了
-1.1 引言
--1.1 引言
-1.2 算法与效率
-1.3 计算机数系与浮点运算
-1.4 误差与有效数字
-1.5 四则运算与函数求值的误差
-1.6 问题的性态与条件数
-1.7 算法数值稳定性
-第1章 作业
--第一章 作业
-2.1 引言 2.2 线性空间
-2.3 内积空间与元素的夹角
-2.4 赋范线性空间
-2.5 向量范数与向量序列极限
-2.6 矩阵范数
--2.6 矩阵范数
-第二章 作业
--第二章 作业
-3.1 引言
--3.1 引言
-3.3 不动点迭代法
--3.2 二分法
-3.4 不动点迭代法的收敛条件
-3.5 牛顿迭代法及其变形
-3.6 迭代法收敛阶
-3.7 重根的计算与加速收敛
-3.8 数值实验
--3.8 数值实验
-第3章 作业
--第3章 作业
-4.1 引言
--4.1 引言
-4.2 Lagrange插值
-4.3 Lagrange插值余项
-4.4 Newton差商插值
-4.5 Hermite插值
-4.6 分段多项式插值
-4.7 三次样条插值
-4.8 数值实验
--4.8 数值实验
-第4章 作业
--第4章 作业
-5.1 函数逼近与曲线拟合基本概念
-5.2 连续函数的最佳平方逼近
-5.3 曲线拟合的最小二乘法
-第5章 作业
--第5章 作业
-6.1 引言 6.2 高斯消元法
-6.3 矩阵分解与应用
-6.4 误差分析 6.5 数值实验
-第6章 作业
--第6章 作业
-7.1 引言 7.2 线性方程组的迭代法(上)
-7.2 线性方程组的迭代法
-7.3 非线性方程组的迭代法
-7.4 数值实验
--7.4 数值实验
-第7章 作业
--第7章 作业
-8.1 引言
--8.1 引言
-8.2 幂法与反幂法
-8.3 矩阵的正交分解
-8.4 QR方法
--8.4 QR方法
-8.5 Jacobi方法
-第8章 作业
--第8章 作业
-9.1 引言
-9.2 牛顿-柯特斯公式
-9.3 复合牛顿-柯特斯公式
-9.4 龙贝格算法
-9.5 高斯型求积公式
-9.6 数值微分
--9.6 数值微分
-10.1 引言
--10.1 引言
-10.2 梯形公式和改进的欧拉方法
-10.3 单步法的误差与稳定性收敛性
-10.4 高阶单步方法
-10.5 线性多步法
-10.6 多步法的误差与稳定性
-10.7 一阶微分方程组与高阶微分方程
-第10章 作业
--第10章 作业