插值多项式的牛顿法

1.为何需要牛顿法?

​ 使用Lagrange插值法不具备继承性。当求好经过\(({x_0},{y_0})-({x_n},{y_n})\)共n+1个点的插值曲线时候,如果再增加一个点,由Lagrange插值法通式\[\sum_{k=0}^{n}\frac{\prod_{i=0,i\ne k}^{n}(x-x_i)}{\prod_{i=0,i\ne k}^{n}(x_k-x_i)}y_k\]可以知道,当再增加一个点时候,Lagrange 多项式还要重新计算以确定系数。

2.牛顿插值多项式

由线性代数的知识可以知道,任何n次多项式都可以表示成1,\((x-x_0)\),\((x-x_0)(x-x_1)\),\({\ldots}\),\((x-x_0)(x-x_1){\ldots}(x-x_{n-2})(x-x_{n-1})\) 的线性组合形式,牛顿插值多项式正是基于这一点。\(N_n\)(x)=\(a_0\)+\(a_1\)(\(x-x_0\))+\(a_2\)(\(x-x_0\))(\(x-x_1\))+\({\ldots}\)+\(a_n(x-x_0)(x-x_1)(x-x_2){\ldots}(x-x_{n-1})\),其中\(a_k\)为插值多项式的待定系数。(一下关于牛顿插值多项式系数计算是基于各x结点的等距条件)

3.牛顿向前差分公式

假设\(x=x_k,\)则此时\(y=y_k\),这样,若\(a_0,a_1,a_2\dots\)则可以求出\(a_k\)。因为\(N(x_k)=y_k\),而对于含有\(a_{k+1},a_{k+2}\dots a_{n}\)项代入\(x_k\)后值为0。那么所求\(a_k\)=\[\frac{y_k-()}{\prod_{i=0}^{k-1}x_k-x_i}\],在假设\(x_k\)为等距结点的时候,\(x_k\)可以表示为\(x_k=x_0+kh\),其中h为步长。那么所求\(a_k\)近似可表示为\(a_k=\frac{y_k-()}{k!h^k}\)。

定义 f(x)在\(x_k\)处的向前差分为\(\Delta y=y_{k+1}-y_k\),相应的我们可以定义\(\Delta y\)的差分,也就是y的二阶向前差分\(\Delta^{2} y_k=\Delta y_{k+1}-\Delta y_k\); 这样,类似我们可以定义y的m阶向前差分\(\Delta ^{m} y_k = \Delta ^{m-1} y_{k+1} -\Delta ^{m-1} y_k\)。在等距结点\(x=x_0+kh\) 的条件下我们可以利用向前差分来导出系数的计算。

4.牛顿向前差分公式系数计算

由\(N_n(x_0)=y_0\)可以得到\(a_0\)的表达式为\(a_0=y_0\),这样我们可以定义y的零阶向前差分\(\Delta ^0 y=y0\),这样利用3中推出的\(a_k\)表达式可以将这个结果化为这样的形式\(a_0=\frac{\Delta^0 y_0}{0!h^0}\)。我们再来看\(a_1\)的表达式。因为\(N_n(x_1)=y_1=a_0+a_1(x_1-x_0)\),而\(a_0\)为\(y_0\),则\(a_1=\frac{y_1-y_0}{x_1-x_0}=\frac{\Delta^1 y_0}{1!h^1}\)。同样的,我们来计算\(a_2\)的表达式。\(N_n(x_2)=a_0+a_1(x_2-x_0)+a_2(x2-x_0)(x_2-x_1)=y_2\),而又因为\(x_2-x_0=2h,a1\)可以表示成\(\frac{\Delta y_0}{h}\),因而可以将\(a_2\)表示为\(a_2=\frac{y2-y0-\frac{\Delta y_0}{h}2h}{(x_2-x_0)(x_2-x_1)}=\frac{y_2-y_0-2(y_1-y_0)}{2!h^2}=\frac{(y_2-y_1)-(y_1-y_0)}{2!h^2}=\frac{\Delta^2 y_0}{2!h^2}\),这样规律就很明显了。事实上,通过计算我们可以得到\(a_k\)的表达式为\(a_k=\frac{\Delta ^k y_0}{k!h^k}(k=0,1,\cdots {n-1},{n})\),于是我们可以将牛顿多项式完整的表达出来了---\(N_n(x)=\frac{\Delta ^0 y_0}{0!h^0}+\frac{\Delta ^1 y_0}{1!h^1}(x-x_0)+\frac{\Delta ^2 y_0}{2!h^2}(x-x_0)(x-x_1)+\cdots+\frac{\Delta ^k y_0}{k!h^k}(x-x_0)(x-x1)\cdots(x-x_{k-1})+\)\(\cdots+\frac{\Delta ^n y_0}{n!h^n}(x-x_0)(x-x_1)\cdots(x-x_{n-1})\)。这样我们就得到了牛顿插值公式的完整表达,通过计算\(y_0\)的n阶向前差分就可以得到结果了。

5.如何再化简?

​ 我们再x等距取样条件下得到了牛顿插值多项式的表达式,同样的,可以充分利用这个条件。也就是设x=\(x_0+th\),其中h为步长。这样\[\sum_{i=0}^{k-1}(x-x_i)=th*(t-1)h*\cdots*(t-k+1)h=A_t^kh^k\],而系数\(a_k=\frac{\Delta ^k y_0}{k!h^k}\),所要整合式子可以得到\(N_n(x_0+th)=y_0+t\Delta y_0+\frac{t(t-1)\Delta ^2 y_0}{2!}+\cdots+\frac{t(t-1)\cdots(t-n+1\Delta ^ny_0)}{n!}\)=\(\sum_{k=0}^{n}\frac{A_t^k \Delta ^k y_0}{k!}\)

最后说明

这里只是利用了等距取点条件计算的牛顿插值公式表达式,实际情况下取的点不一定等距,因此,在不等距的条件下相应还要计算方法(后面我会逐渐整理的)。除此之外,还可以用向后差分,中心差分法,限于时间,往后再整理了。

等距结点下的Newton插值多项式系数计算(向前差分)的更多相关文章

  1. 数值分析案例:Newton插值预测2019城市(Asian)温度、Crout求解城市等温性的因素系数

    数值分析案例:Newton插值预测2019城市(Asian)温度.Crout求解城市等温性的因素系数 文章目录 数值分析案例:Newton插值预测2019城市(Asian)温度.Crout求解城市等温 ...

  2. Newton插值的C++实现

    Newton(牛顿)插值法具有递推性,这决定其性能要好于Lagrange(拉格朗日)插值法.其重点在于差商(Divided Difference)表的求解. 步骤1. 求解差商表,这里采用非递归法(看 ...

  3. jquery清除某一结点下的子节点

    jquery清除某一结点下的子节点:这个情况多用于数据的加载中,如果当执行某一操作之后,想重新加载页面,但是又不想整个页面都重新加载,这个时候就可以使用该方法, case:   $("#ta ...

  4. 实现Linux下dc的功能,计算后缀表达式的值

    提交测试截图和码云练习项目链接,实现Linux下dc的功能,计算后缀表达式的值 -将运算符写在两个操作数之后的表达式称为"后缀表达式",如上面的中缀表达式可转换为后缀表达式1 2 ...

  5. Fluent批处理之--windows下多个任务的计算 【转载】

    转载自http://jingcao830828.blog.163.com/blog/static/10320833620103633624506/ 1.同维多任务的连续计算 对于工程应用来说,计算精度 ...

  6. [math][mathematica] archlinux 下 mathematica 的安装 (科学计算软件 mathematica/matlab/sagemath)

    ONLINE: http://www.wolframalpha.com/ GPL: segamath: http://www.sagemath.org/ famous and not free: ma ...

  7. c语言下的变量类型及计算

    源码 补码 反码 机器数:一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.   真值:第一位是符号位,将带符号位的 ...

  8. 多项式函数插值:全域多项式插值(一)单项式基插值、拉格朗日插值、牛顿插值 [MATLAB]

    全域多项式插值指的是在整个插值区域内形成一个多项式函数作为插值函数.关于多项式插值的基本知识,见“计算基本理论”. 在单项式基插值和牛顿插值形成的表达式中,求该表达式在某一点处的值使用的Horner嵌 ...

  9. 插值方法 - Newton向前向后等距插值

    通常我们在求插值节点的开头部分插值点附近函数值时,使用Newton前插公式:求插值节点的末尾部分插值点附近函数值时,使用Newton后插公式. 代码: 1 # -*- coding: utf-8 -* ...

随机推荐

  1. 05-pandas索引切片读取数据缺失数据处理

    引入 numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? numpy能够帮我们处理处理数值型数据,但是这还不够 很多时候, ...

  2. Java后台开发方向面试题集合

    内容会不断更新. 初衷是每次看面经肯定都会有一些一时反应不过来的问题,希望集中记录一下便于自己查看. 而答案部分谷歌就很好,当然有些问题可能需要多次谷歌. 对于一些记不住的答案,我也会持续写上一些. ...

  3. 扛住阿里双十一高并发流量,Sentinel是怎么做到的?

    Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景 本文介绍阿里开源限流熔断方案Sentinel功能.原理.架构.快速入门以及相关框架比较 基本介绍 1 名词解释 服务限流 :当系 ...

  4. Mysql Hash索引和B-Tree索引区别(Comparison of B-Tree and Hash Indexes)

    上篇文章中说道,Mysql中的Btree索引和Hash索引的区别,没做展开描述,今天有空,上Mysql官方文档找到了相关答案,看完之后,针对两者的区别做如下总结: 引用维基百科上的描述,来解释一下这两 ...

  5. jsp隐含对象(内置对象)

    JSP共有以下9个内置的对象: request HttpServletRequest类的实例,用户端请求,此请求会包含来自GET/POST请求的参数 response HttpServletRespo ...

  6. Java字段初始化规律

    首先先附上一段代码:public class InitializeBlockDemo { public static void main(String[] args) { InitializeBloc ...

  7. 网页布局——grid语法属性详解

    grid目前兼容性目前还可以,主流浏览器对它的支持力度很大,ie9,10宣布它未来不久会对它有很好的支持,目前则需要使用过时的语法.我相信不久的将来grid将成为每一个前端工作人员必备的布局技能. 属 ...

  8. 洛谷NOIp热身赛 T2123 数列游戏

    题目背景 此题为改编题,特别鸣谢倪星宇同学. 有一次,HKE和LJC在玩一个游戏. 题目描述 游戏的规则是这样的:LJC在纸上写下两个长度均为N的数列A和B,两个数列一一对应.HKE每次可以找两个相邻 ...

  9. C#输入中文实现转拼音首字母(亲测,字库不全)

    public string GetPYString(string str) { string tempStr = ""; foreach (char c in str) { if ...

  10. linux系统取证

    目录 0x00 查看系统信息 0x01 用户及组信息 0x02 防火墙及路由信息 0x03 查看网络.端口信息 0x04 系统运行信息查看 0x05 日志查看分析 0x00 查看系统信息 name-a ...