线性插值 多项式插值 样条插值 牛顿插值总结

线性插值 多项式插值 样条插值 牛顿插值总结1 什么是插值在数值分析中 插值 interpolatio 是一种通过已知的 离散的数据点 在范围内推求新数据点的过程或方法 求解科学和工程的问题时 通常有许多数据点借由采样 实验等方法获得 这些数据可能代表了有限个数值函数 其中自变量的值 而根据这些数据 我们往往希望得到一个连续的函数 也就是曲线 或者更密集的离散方程与已知数据互相吻合 这个过程叫做拟合 与插值密切相关的另一个问题是通过

1.什么是插值

2.示例

x f(x)
0 0
1 0 .8415
2 0.9093
3 0.1411
4 -0.7568
5 -0.9589
6 -0.2794

在这里插入图片描述
上图为数据点在x,y平面的显示图

3.片段插值,最近邻插值

4.线性插值

假设我们已知坐标 ( x 0 , y 0 ) , ( x 1 , y 1 ) (x_0, y_0), (x_1, y_1) (x0,y0),(x1,y1),当要求 [ x 0 , x 1 ] [x_0, x_1] [x0,x1]区间内任一位置x在该条直线上的值时,由初中数学知识我们就可以求解:
y − y 0 x − x 0 = y 1 − y 0 x 1 − x 0 \frac{y – y_0}{x – x_0} = \frac{y_1 – y_0}{x_1 – x_0} xx0yy0=x1x0y1y0
因为x值已知,从上面的公式很容易求得y的值。

在这里插入图片描述

∣ R T ∣ ≤ ( x 1 − x 0 ) 2 8 max ⁡ x 0 ≤ x ≤ x 1 ∣ f ′ ′ ( x ) ∣ |R_{T}|\leq {\frac {(x_{1}-x_{0})^{2}}{8}}\max _{x_{0}\leq x\leq x_{1}}|f”(x)| RT8(x1x0)2x0xx1maxf(x)

正如所看到的,函数上两点之间的近似随着所近似的函数的二阶导数的增大而逐渐变差。从直观上来看也是这样:函数的曲率越大,简单线性插值近似的误差也越大。

5.多项式插值

如果将x=2.5带入,有f(2.5)=0.5965。一般情况下,如果我们有n个数据点,那么在所有的数据点中只有一个最多n-1次多项式可以完美拟合。此外,插值是一个多项式,因此是无限可微的。所以我们看到多项式插值克服了线性插值的大部分问题。但是,多项式插值也有一些缺点。与线性内插相比,计算内插多项式的成本是昂贵的。此外,多项式插值可能会出现振荡伪像,特别是在端点。

6. 样条曲线插值

线性插值对每个区间 x k , x k + 1 x_k, x_{k+1} xk,xk+1使用线性函数。 样条插值在每个间隔中使用低阶多项式,并选择多项式以使它们平滑地吻合在一起。 结果函数被称为样条曲线。例如,三次样条是分片段立方,两次连续可微。 此外,它的二阶导数在终点为零。 在上表中插入点的三次样条函数由下式给出
f ( x ) = { − 0.1522 x 3 + 0.9937 x , x ∈ [ 0 , 1 ] , − 0.01258 x 3 − 0.4189 x 2 + 1.4126 x − 0.1396 , x ∈ [ 1 , 2 ] , 0.1403 x 3 − 1.3359 x 2 + 3.2467 x − 1.3623 , x ∈ [ 2 , 3 ] , 0.1579 x 3 − 1.4945 x 2 + 3.7225 x − 1.8381 , x ∈ [ 3 , 4 ] , 0.05375 x 3 − 0.2450 x 2 − 1.2756 x + 4.8259 , x ∈ [ 4 , 5 ] , − 0.1871 x 3 + 3.3673 x 2 − 19.3370 x + 34.9282 , x ∈ [ 5 , 6 ] . f(x)={\begin{cases}-0.1522x^{3}+0.9937x, \uad x\in [0,1],\\-0.01258x^{3}-0.4189x^{2}+1.4126x-0.1396,\uad x \in [1,2],\\0.1403x^{3}-1.3359x^{2}+3.2467x-1.3623,\uad x\in [2,3],\\0.1579x^{3}-1.4945x^{2}+3.7225x-1.8381,\uad x\in [3,4],\\0.05375x^{3}-0.2450x^{2}-1.2756x+4.8259,\uad x\in [4,5],\\-0.1871x^{3}+3.3673x^{2}-19.3370x+34.9282,\uad x\in [5,6].\end{cases}} f(x)=0.1522x3+0.9937x,x[0,1],0.01258x30.4189x2+1.4126x0.1396,x[1,2],0.1403x31.3359x2+3.2467x1.3623,x[2,3],0.1579x31.4945x2+3.7225x1.8381,x[3,4],0.05375x30.2450x21.2756x+4.8259,x[4,5],0.1871x3+3.3673x219.3370x+34.9282,x[5,6].

在这种情况下,我们得到 f(2.5) = 0.5972。 与多项式插值的方法相比较,样条跟多项式一样,其插值误差会小于线性插值,而且插值更平滑;使用样条会比使用高阶多项式更容易评估。 它也不会受到龙格现象的影响。

7.牛顿插值

总结上面的计算方法可以归纳出算法的大致思想:先计算差商表,类似于乘法口诀的思路,两个for循环就可以计算出,然后对于每一次内for循环以后,计算出了第一列,接着把相对应的f(x)计算出来,接着进入第二列的计算,接着计算相应的f(x)…一直到计算完毕最后一个f(x),把所有的f(x)相加,便是最终的插值。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224287.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午12:17
下一篇 2026年3月17日 下午12:17


相关推荐

  • 从0x00到0xFF的含义

    从0x00到0xFF的含义对于二进制来说 8 位二进制我们称之为一个字节 二进制的表达范围值是从 0b00000000 0b 而我们程序中用十六进制表示的时候就是从 0x00 到 0xFF 这里教大家一个二进制转换十进制和十六进制的方法 二进制 4 位一组 遵循 8 4 2 1 的规律比如 nbsp 1010 那么从最高位开始算 数字大小是 8 1 4 0 2 1 1 0 nbsp nbsp 10 那么十进制就是 10 十六进制就是 0xA 尤其二进制转

    2026年3月19日
    3
  • 虚拟机怎么安装vmware tools

    虚拟机怎么安装vmware tools这篇文章主要为大家详细介绍了VMwareWorkstation12安装Ubuntu和VMwareTools教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下之前我通过百度经验上的过程来安装Ubuntu16,但是每次安装的时候没有什么问题,就是安装好了Tools,也设置好了共享文件夹,但是在路径:/mnt/hgfs下每次都找不到共享文件夹。后来我研究了好久,应该是安装的时候…

    2022年5月25日
    41
  • Java代码生成器[通俗易懂]

    Java代码生成器[通俗易懂]项目说明本项目基于是基于renren-generator定制的代码生成器文章目录**项目说明**不同点:效果原理分析如何定制开发?更多可能存在的坑代码地址不同点:因为本人的公司使用的是tkmyabtis+swagger构建restapi,而renren-generator用的是mybatis-plus,而且不支持swagger,所以有了本项目效果…

    2022年4月27日
    54
  • 认识GPL/LGPL

    认识GPL/LGPLGNU 是 GNUisNotUnix 的递归缩写 GNU 包含 3 个协议条款 nbsp nbsp GPL GNU 通用公共许可证 GNUGeneralPu nbsp nbsp LGPL GNU 较宽松公共许可证 GNULesserGen 旧称 GNULibraryGe GNU 库通用公共许可

    2026年3月17日
    3
  • modelsim 安装教程(应用未安装)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Modelsim安装二、破解1.拷贝Crack文件夹中的文件2.破解过程可能出现的错误前言Modelsim的安装与破解使用一、Modelsim安装打开下在之后的文件夹,直接双击exe文件进行安装。不熟悉时,可以直接使用默认路径进行安装,不进行路径上的修改。1、下载并解压好文件包,然后运行安装程序根据向导提示进行软件安装2、依提示安装软件过程中需要注意的是,会有三个弹出框提示,首先是是否创建桌面快捷方式提示

    2022年4月11日
    311
  • SpringBoot❤SpringClould常用注解史诗级汇总[通俗易懂]

    SpringBoot❤SpringClould常用注解史诗级汇总[通俗易懂]什么是注解?什什么是注解Java注解是附加在代码中的⼀一些元信息,⽤用于⼀一些⼯工具在编译、运⾏行行时进⾏行行解析和使⽤用,起到说明、配置的功能注解本质上继承Annotation接⼝口,我们可以通过反射获取注解的相关信息,从⽽而做些逻辑操作springboot⾥里里⾯面⼤大量量使⽤用了了注解,@Controller、@RestController、@Service、@Autowire等一、SpringBoot注解1.1.@SpringBootApplication包含@Confi

    2022年7月20日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号