拉格朗日插值公式

Python实现Newton和lagrange插值

笑着哭i 提交于 2020-01-01 05:18:32
一、介绍 Newton和lagrange插值:给出一组数据进行Newton和lagrange插值,同时将结果用plot呈现出来 1、首先是Lagrange插值: 根据插值的方法,先对每次的结果求积,在对结果求和,完成插值。 2、newton插值: 先要建立差商表,差商表的建立的时候,每次减去的x[0]都是对角的元素,因此需要注意。 二、实现 ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' import matplotlib . pyplot as plt import math # =================================================== lagrange插值 ================================================================= def lagrange ( x_ , y , a ) : """ 获取拉格朗日插值 :param x_: x的列表值 :param y: y的列表值 :param a: 需要插值的数 :return: 返回插值结果 """ ans = 0.0 for i in range ( len ( y ) ) : t_ = y [ i

拉格朗日插值

馋奶兔 提交于 2019-12-01 10:10:27
本文部分转载自: 知乎 中文维基 有何用 板子:给出平面上n+1个点,求一条穿过这n+1个点的n次多项式,或这个多项式在另一个点处的值。 显然可以高斯消元求出每一项系数,然后输出/直接爆算。 其实拉格朗日插值有两种:朴素的,和重心拉个朗日插值。一般情况下,朴素的和高斯消元在求解第1问时复杂度没有区别,但是后者无论第几问都可以用 \(O(n^2)\) 的复杂度爆艹高斯消元 \(O(n^3)\) 。 以下全都介绍求多项式的方法。 直观理解 这里的是朴素插值。 比如说,已知下面这几个点,我想找到一根穿过它们的曲线: 首先显然可以用一个n次多项式经过,不保证第n项系数是否为0。 然后高斯消元告诉我们,这应该是一个二次曲线。 \(y=a_0+a_1x+a_2x^2\) 然后,显然可以解方程。 \[ \begin{cases} y_1=a_0+a_1x_1^1+a_2x_1^2 \\ y_2=a_0+a_1x_2^1+a_2x_2^2 \\ y_3=a_0+a_1x_3^1+a_2x_3^2 \end{cases} \] 然而,如果不解方程呢? 拉格朗日发现,我们可以用三根二次函数相加得到我们要的函数。 第一个函数 \(f_1(x)\) ,在 \(x=x_1\) 处值为1,在 \(x=x_2,x_3\) 处都为0。 第二个函数 \(f_2(x)\) ,在 \(x=x_2\) 处值为1

插值相关总结

百般思念 提交于 2019-11-29 01:55:48
  插值的通俗解释就是一种 用一些已知的数据去预测想要的数据 的方法。 多项式插值   多项式插值是最常见的一种 函数插值 (插值函数为多项式)。 $${p_n}(x) = {a_0} + {a_1}x + {a_2}{x^2} + \cdots + {a_n}{x^n}$$   从几何上看可以理解为:已知 平面上n+1个不同点,要寻找一条n次插值多项式函数$p(x)$通过曲线$f(x)$上已知的这n+1个点 。使$p(x)$接近$f(x)$。   而将n个点代入多项式函数,则可 用方程组表示,即 $$\left\{\begin{array}{l}{a_{0}+a_{1} x_{0}+a_{2} x_{0}^{2}+\cdots+a_{n} x_{0}^{n}=y_{0}} \\ {a_{0}+a_{1} x_{1}+a_{2} x_{1}^{2}+\cdots+a_{n} x_{1}^{n}=y_{1}} \\ {\ldots \ldots \ldots \ldots \ldots \ldots \ldots \ldots \ldots \ldots \ldots \ldots} \\ {a_{0}+a_{1} x_{n}+a_{2} x_{n}^{2}+\cdots+a_{n} x_{n}^{n}=y_{n}}\end{array}\right.$$   当系数矩阵满秩时