插值多项式的牛顿法

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. 学Python的第一天

    第一天学习笔记 一.安装typroa 下载软件typroa用于日常学习笔记记录,该软件支持markdown语法 步骤: 官网地址:https://typora.io/ 选择版本安装(以windows为 ...

  2. 简单cookie入侵

    在当前网站,按下F12键进入开发者模式,在console控制台输入:document.cookie获取cookie值如: 复制你得到cookie值,你或通过每种方式获取Cookie,例如:当别人点击你 ...

  3. Linux上的Nginx上设置支持PHP的解析

    当前的运行环境为,PHP7.2.2以 FastCGI 模式运行,默认端口为:9000,Nginx1.15.6 打开nginx配置文件 vi /usr/local/nginx/conf/nginx.co ...

  4. 配置code::blocks的glut环境

    code::blocks很小,特别适合小型项目及家用旧电脑上MingW下编程,当然windows还是安装的Visual Studio办公用的,现把配置过程记录一遍. 1.在百度搜code::block ...

  5. 动态扩容lvm逻辑卷的操作记录

    在进行动态扩容LVM逻辑卷的之前,先看这篇文章:https://www.cnblogs.com/huhyoung/p/9689776.html.以下是我实操记录. 在上班期间,测试经理突然找我,能不能 ...

  6. GSS3 - Can you answer these queries III

    题意翻译 nnn 个数, qqq 次操作 操作0 x y把 AxA_xAx​ 修改为 yyy 操作1 l r询问区间 [l,r][l, r][l,r] 的最大子段和 感谢 @Edgration 提供的 ...

  7. 【websocket】spring boot 集成 websocket 的四种方式

    集成 websocket 的四种方案 1. 原生注解 pom.xml <dependency> <groupId>org.springframework.boot</gr ...

  8. Shiro:未登录时请求跳转问题

    问题:前后端分离项目,在用Shiro做权限控制时,未登录状态发送的请求都会重定向,导致前端无法捕捉重定向后的消息.如何不重定向在原来的请求返回信息提示未登录,前端根据信息调到登录页? 首先,看一下Sh ...

  9. linux-查看服务器内存使用情况(free top)

    free命令:显示系统使用和空闲的内存情况,包括物理内存.交互区内存(swap)和内核缓冲区内存. [root@ipha-dev71- workspace]# free # kb total used ...

  10. Linux面试题-8

    1.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于磁盘这种外部设备文件,一般应将其放在(C)目录中. A./bin B./etc C./dev D./lib 2.当使用mount进 ...