4.2 牛顿插值公式
- 格式:doc
- 大小:508.00 KB
- 文档页数:17
牛顿插值法插值法是利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。
如果这特定函数是多项式,就称它为插值多项式。
当插值节点增减时全部插值基函数均要随之变化,这在实际计算中很不方便。
为了克服这一缺点,提出了牛顿插值。
牛顿插值通过求各阶差商,递推得到的一个公式:f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x0 )...(x-xn-1)+Rn(x)。
插值函数插值函数的概念及相关性质[1]定义:设连续函数y-f(x) 在区间[a,b]上有定义,已知在n+1个互异的点x0,x1,…xn上取值分别为y0,y1,…yn (设a≤ x1≤x2……≤xn≤b)。
若在函数类中存在以简单函数P(x) ,使得P(xi)=yi,则称P(x) 为f(x)的插值函数.称x1,x2,…xn 为插值节点,称[a,b]为插值区间。
定理:n次代数插值问题的解存在且唯一。
牛顿插值法C程序程序框图#include<stdio.h>void main(){float x[11],y[11][11],xx,temp,newton;int i,j,n;printf("Newton插值:\n请输入要运算的值:x=");scanf("%f",&xx);printf("请输入插值的次数(n<11):n=");scanf("%d",&n);printf("请输入%d组值:\n",n+1);for(i=0;i<n+1;i++){ printf("x%d=",i);scanf("%f",&x[i]);printf("y%d=",i);scanf("%f",&y[0][i]);}for(i=1;i<n+1;i++)for(j=i;j<n+1;j++){ if(i>1)y[i][j]=(y[i-1][j]-y[i-1][j-1])/(x[j]-x[j-i]);elsey[i][j]=(y[i-1][j]-y[i-1][j-1])/(x[j]-x[j-1]);printf("%f\n",y[i][i]);}temp=1;newton=y[0][0];for(i=1;i<n+1;i++){ temp=temp*(xx-x[i-1]);newton=newton+y[i][i]*temp;}printf("求得的结果为:N(%.4f)=%9f\n",xx,newton);牛顿插值法Matlab程序function f = Newton(x,y,x0)syms t;if(length(x) == length(y))n = length(x);c(1:n) = 0.0;elsedisp('x和y的维数不相等!');return;endf = y(1);y1 = 0;l = 1;for(i=1:n-1)for(j=i+1:n)y1(j) = (y(j)-y(i))/(x(j)-x(i));endc(i) = y1(i+1);l = l*(t-x(i));f = f + c(i)*l;simplify(f);y = y1;if(i==n-1)if(nargin == 3)f = subs(f,'t',x0);elsef = collect(f); %将插值多项式展开f = vpa(f, 6);endend牛顿插值法摘要:值法利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。
牛顿插值是数学上的一个概念,它是一种基于已知数据插值多项式的方法。
具体来说,给定一组数据点(xi, yi),其中i=0,1,...,n,牛顿插值会根据这些数据点来构造一个插值多项式,使得该多项式尽可能地接近于实际的数据曲线。
为了实现牛顿插值,我们需要找到一个未知函数f(x)在各个数据点xi处的斜率。
通过构造一个线性方程组,我们可以求解出这个斜率数组。
具体来说,假设f(x)在xi处的斜率为bi,那么当x=xi时,由于插值多项式为f(xi) = y[i],我们有b[i] = f'(xi) = (yi - yi-1) / (xi - xi-1),其中i=1,2,...,n。
这就是给定的插值基函数。
接下来,我们需要构造一个插值多项式。
由于插值基函数是线性无关的,我们可以使用这些基函数来构造一个插值多项式。
具体来说,我们选择一个未知系数数组c[i],使得当x=xi时,多项式的值为f(xi)。
为了求解这个系数数组,我们构造一个线性方程组。
具体来说,我们根据插值基函数和插值多项式的性质,可以得到c[i] = yi -Σ(xi-xi-i)^(-2*j) * c[i-j-1),其中j=0,1,...,n-i。
求解这个线性方程组后,我们就得到了牛顿插值多项式的系数数组c[i]。
当x=x[n]时,多项式的值为f(x),而这个数值就是原始数据点中对应位置的y[n]。
因此,牛顿插值就是通过已知数据点来求取未知函数值的一种方法。
牛顿插值的一个重要特点是它的光滑性和误差特性。
通过已知的数据点,它可以逼近数据曲线并呈现出光滑性。
此外,它的误差性质决定了它的稳健性和准确性,可以满足不同的应用需求。
在实际应用中,牛顿插值经常被用于解决各种工程和科学问题。
它可以用来模拟复杂的物理过程、预测市场趋势、优化算法参数等等。
由于它的优越性能和广泛适用性,牛顿插值已经成为现代科学和工程领域中不可或缺的工具之一。
牛顿插值法介绍本文将介绍牛顿插值法的基本原理、计算过程、优缺点以及在实际问题中的应用。
首先,我们将简要介绍插值法的基本概念和牛顿插值法的由来,然后详细讨论牛顿插值法的计算步骤和算法,接着分析其优缺点以及适用范围,最后通过几个实际问题的例子展示牛顿插值法的应用场景。
一、插值法基本概念在数学和计算机领域,插值是指根据已知的离散数据点构造满足这些数据点的曲线或函数的过程。
假设我们有一组数据点{(x1, y1), (x2, y2), ..., (xn, yn)},我们想要通过这些数据点构建一个函数f(x),使得f(xi) = yi,其中i = 1, 2, ..., n。
这样的函数就是经过插值的函数,它代表了这些数据点的趋势和变化规律。
插值法通常用于寻找这样的函数,它能够通过已知的数据点来估计函数在其他位置的值。
常见的插值方法包括拉格朗日插值法、牛顿插值法和埃尔米特插值法等。
在这些方法中,牛顿插值法是最为广泛使用的一种,因为它的计算效率高、精度较高,并且易于编程实现。
二、牛顿插值法的由来牛顿插值法由艾萨克·牛顿在17世纪提出,他是一位英国著名的数学家、物理学家和天文学家,在微积分、物理学和光学等领域都做出了重大贡献。
牛顿发展了牛顿插值法的理论基础和计算方法,并将其应用于数据分析和天体运动等问题中。
牛顿插值法基于牛顿插值多项式的概念,该多项式利用差商(divided differences)来表示,并具有易于计算和分析的优势。
牛顿插值多项式能够在已知的数据点上进行插值,并且还可以通过添加新的数据点来动态地更新插值结果。
因此,牛顿插值法成为了一种非常有用的数值计算工具,被广泛应用于工程、科学和金融等领域。
三、牛顿插值法的计算步骤1. 确定数据点首先,我们需要确定一组离散的数据点{(x1, y1), (x2, y2), ..., (xn, yn)},这些数据点是我们已知的数据,我们要通过它们来构建插值函数。
差分形式的牛顿插值公式一、牛顿插值公式的引入在数值计算和插值问题中,牛顿插值公式是一种常用的插值方法。
它通过已知的数据点,构造一个函数,使得这个函数通过这些数据点,并且在其他位置也有较好的逼近效果。
牛顿插值公式有两种形式,一种是差商形式,另一种是拉格朗日形式。
本文主要介绍差商形式的牛顿插值公式。
差分形式的牛顿插值公式是通过对已知数据点进行差分运算,得到一组差商系数,然后利用这些差商系数构造插值多项式。
具体来说,设有n+1个数据点(x0, y0),(x1, y1),...(xn, yn),其中xi和yi分别表示第i个数据点的横坐标和纵坐标。
差商形式的牛顿插值多项式可以表示为:P(x) = y0 + (x-x0)Δy0 + (x-x0)(x-x1)Δ^2y0 + ... + (x-x0)(x-x1)...(x-xn)Δ^n y0其中Δy0表示一阶差商,Δ^2y0表示二阶差商,以此类推。
差商的计算可以通过递推公式得到,具体计算方法如下:Δy0 = y1 - y0Δ^2y0 = Δy1 - Δy0 = y2 - 2y1 + y0Δ^3y0 = Δ^2y1 - Δ^2y0 = y3 - 3y2 + 3y1 - y0...通过递推计算可以得到所有的差商系数,进而构造出插值多项式。
三、差分形式的牛顿插值公式的应用差分形式的牛顿插值公式在实际问题中有广泛的应用。
下面以两个具体的例子来说明其应用:1. 数据的插值逼近假设我们有一组离散的数据点,现在需要根据这些数据点来估计其他位置的数据。
差分形式的牛顿插值公式可以通过构造插值多项式来实现这个目标。
我们可以利用已知的数据点,计算出差分系数,并将其代入插值多项式中,从而得到我们所需位置的数据估计值。
2. 数据的平滑处理在一些实际问题中,我们可能会遇到数据中存在噪声或异常值的情况。
差分形式的牛顿插值公式可以通过对数据进行插值逼近,从而平滑处理这些噪声或异常值。
我们可以利用已知的数据点,构造插值多项式,并利用该多项式来估计数据中存在噪声或异常值的位置,从而得到平滑后的数据。
2012-2013(1)专业课程实践论文牛顿插值公式王霄,0818180103,R数学08-1班插值法利用函数()x f 在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数()x f 的近似值。
如果这特定函数是多项式,就称它为插值多项式。
利用插值基函数很容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为方便,但当插值节点增减时全部插值基函数均要随之变化,整个公式也将发生变化, 这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值。
牛顿插值通过求各阶差商,递推得到的一个公式:[]()[]()()[]()()()x Rn x x x x x x f x x x x x x x f x x x x f x f x f n n +--++--+-+=-100102100100,, ,,,)()(牛顿(Newton )插值法:若求i T 和1+i T 之间任一点T ,插值公式为:[]()[]()()[]()()100102100100,,,,,)(---++--+-+=n n x x x x x x f x x x x x x x f x x x x f x f T 式中,[]10,x x f ,[]210,,x x x f , ,[]110,,,-n x x x f 是函数()x f 的1到第1-n 阶差商。
[]()()101010,x x x f x f x x f --=[][][]202110210,,,,x x x x f x x f x x x f --=[][][]1011021010,,,,,,,,,-----=n n n n x x x x x f x x x f x x x f可以看出,每一阶的差商都可以从它的前一阶差商推出。
按照此特点,选定牛顿插值的阶数3~4,然后计算各阶差商,按照插值公式计算插值点的值。
开始输入已知项项数n输入各已知项的值: i y i x _,_i j n i ><,[]()()kk k x x x f x f x x f --=000,输出newton令]0[,1diff newton tmp ==[]()[]()()[]()()100102100100,,,,,)(---++--+-+=n n x x x x x x f x x x x x x x f x x x x f x f T n i <结束#include<stdio.h>#define MAX 20typedef struct TPOINT{ double x;double y; }POINT;int main(){ int n,i,j;POINT points[MAX +1];double diff[MAX +1];double x,tmp,newton=0;printf("\n输入已知项项数n:");//n-1为插值次数scanf("%d",&n);printf("输入各已知项的值: (x_i,y_i)\n");for(i=0;i<n;i++)scanf("%lf%lf",&points[i].x,&points[i].y);printf("输入所要求解的x值:");scanf("%lf",&x);for(i=0;i<n;i++)diff[i]=points[i].y;for(i=0;i<n;i++){ for(j=n;j>i;j--){ diff[j]=(diff[j]-diff[j-1])/(points[j].x-points[j-1-i].x);} } tmp=1;newton=diff[0];for(i=0;i<n;i++){ tmp=tmp*(x-points[i].x);newton=newton+tmp*diff[i+1];}printf("f(%f)=%f\n",x,newton);return 0;}例1. 已知函数如下表:x10 11 12 13ln 2.3206 2.3979 2.4849 2.5649x求解Ln11.75的值。
牛顿插值法插值法是利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。
如果这特定函数是多项式,就称它为插值多项式。
当插值节点增减时全部插值基函数均要随之变化,这在实际计算中很不方便。
为了克服这一缺点,提出了牛顿插值。
牛顿插值通过求各阶差商,递推得到的一个公式:f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x0 )...(x-xn-1)+Rn(x)。
插值函数插值函数的概念及相关性质[1]定义:设连续函数y-f(x) 在区间[a,b]上有定义,已知在n+1个互异的点x0,x1,…xn上取值分别为y0,y1,…yn (设a≤ x1≤x2……≤xn≤b)。
若在函数类中存在以简单函数P(x) ,使得P(xi)=yi,则称P(x) 为f(x)的插值函数.称x1,x2,…xn 为插值节点,称[a,b]为插值区间。
定理:n次代数插值问题的解存在且唯一。
牛顿插值法C程序程序框图#include<stdio.h>void main(){float x[11],y[11][11],xx,temp,newton;int i,j,n;printf("Newton插值:\n请输入要运算的值:x=");scanf("%f",&xx);printf("请输入插值的次数(n<11):n=");scanf("%d",&n);printf("请输入%d组值:\n",n+1);for(i=0;i<n+1;i++){ printf("x%d=",i);scanf("%f",&x[i]);printf("y%d=",i);scanf("%f",&y[0][i]);}for(i=1;i<n+1;i++)for(j=i;j<n+1;j++){ if(i>1)y[i][j]=(y[i-1][j]-y[i-1][j-1])/(x[j]-x[j-i]);elsey[i][j]=(y[i-1][j]-y[i-1][j-1])/(x[j]-x[j-1]);printf("%f\n",y[i][i]);}temp=1;newton=y[0][0];for(i=1;i<n+1;i++){ temp=temp*(xx-x[i-1]);newton=newton+y[i][i]*temp;}printf("求得的结果为:N(%.4f)=%9f\n",xx,newton);牛顿插值法Matlab程序function f = Newton(x,y,x0)syms t;if(length(x) == length(y))n = length(x);c(1:n) = 0.0;elsedisp('x和y的维数不相等!');return;endf = y(1);y1 = 0;l = 1;for(i=1:n-1)for(j=i+1:n)y1(j) = (y(j)-y(i))/(x(j)-x(i));endc(i) = y1(i+1);l = l*(t-x(i));f = f + c(i)*l;simplify(f);y = y1;if(i==n-1)if(nargin == 3)f = subs(f,'t',x0);elsef = collect(f); %将插值多项式展开f = vpa(f, 6);endend牛顿插值法摘要:值法利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。
牛顿向前插值公式牛顿向前插值公式是数值分析中一个挺有意思的工具。
咱先来说说啥是牛顿向前插值公式哈。
简单来讲,它就是一种通过已知的一些数据点,来推测中间或者其他未知点数值的方法。
比如说,咱们知道了几个不同时间点的气温,就可以用这个公式猜猜其他时间的气温大概是多少。
我记得之前有一次带学生们做实验,就是用这个公式来估算物体下落的位置。
当时给了他们几个不同时刻物体下落的高度数据,让他们用牛顿向前插值公式去算某个特定时刻物体大概在什么位置。
这可把孩子们难坏了,一个个抓耳挠腮的。
有的孩子直接被那些复杂的算式给弄晕了,一会儿忘了这个系数,一会儿又算错了那个差值。
但是也有几个聪明的小家伙,慢慢地理清了思路,一步一步地算出来了。
其实牛顿向前插值公式的原理也不太难理解。
它是通过构建一系列的差商,然后把这些差商组合起来形成一个多项式。
这个多项式就能够近似地表示数据之间的关系。
比如说,咱们有一组数据点 (x₀, y₀), (x₁, y₁), (x₂, y₂) ...... 先算出一阶差商,就是 (y₁ - y₀) / (x₁ - x₀) ;然后再算二阶差商,依此类推。
在实际应用中,牛顿向前插值公式可有用啦。
像在金融领域,预测股票价格的走势;在工程中,估计某个零件在不同条件下的性能;在科学研究里,推测实验数据的变化趋势等等。
不过,用这个公式的时候可得小心,数据点的选取很关键。
如果数据本身就不太规律,或者误差比较大,那算出来的结果可能就不太准了。
就像那次实验,有的小组因为数据测量的时候不够精确,导致最后用公式算出来的结果和实际情况相差挺多。
学习牛顿向前插值公式,不能光是死记硬背那些公式和步骤,得真正理解它背后的思想。
多做几道题,多动手算一算,才能真正掌握。
总之,牛顿向前插值公式虽然有点小复杂,但掌握好了,那可是解决很多实际问题的一把好手。
希望同学们在学习的过程中,不要被它吓住,多琢磨琢磨,一定能搞明白的!。
牛顿插值法(1)牛顿真是牛,拉格朗日插值法只能算是数学意义上的插值,从插值基函数的巧妙选取,已经构造性的证明了插值法的存在性和惟一性,但是从实现的角度看并不很好,而牛顿很好的解决了这个问题。
牛顿插值是基于下面这些的公式:f[x0,x1,...xk]=(f[x1,...xk]-f[x0,...xk-1])/(xk-x0)f[x]=f(x)f(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x0)...(x-xn-1)+Rn(x)前两个是均差的递推关系式,而后一个就是牛顿插值公式,其中N(x)=f(x)-Rn(x),即目标多项式,Rn(x)是n阶插值余项,我们就是用N(x)去近似f(x)。
可以构造这样一个均方差表:xk f(xk) 一阶均差二阶均差 ...x0 f(x0)x1 f(x1) f[x0,x1]x2 f(x2) f[x1,x2] f[x0,x1,x2]...如果有n个点插值,表会有(n*n)/2+n个表项,如果直接编程会有O(n*n)的空间复杂度,编程时做个简单的改进,不难发现在这个表中只有部分数据有用,对角线(斜行)它们是目标值,用来表示多项式的,左边的两纵行(实际上只需要x一行)以及最底下的一行,表示当前插值的状态。
经过改进后只需要O(n)的空间复杂度。
两个过程:1,新增加一个点时的更新。
只须更新最底下一行数据,其递推关系由均差公式给出,最后算出高一队的均差值,需时O(n)2,插入点完成后如何计算多项式在另外给定点的值N(x)。
由牛顿插值公式,最终的表达式为:N(x)=f[x0]+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+...f[x0,...xn](x-x0)...(x-xn-1)如果直接将它展开,再算实在麻烦,实际上大可不必这样做,还记得多项式求值的秦九韶算法吗?将多项式‘叠’起来,从内层括号往外一层层拨开,n次多项多的计算,只需要做n次乘法,同样的思想,将上式改写成:N(x)=f[x0]+(x-x0){f[x0,x1]+(x-x1){f[x0,x1,x2]+(x-x2){...{f[x0,...xn-1]+(x-xn-1)f[x0, (x)n]}...}就可以同样简单的计算了,时间复杂度O(n)综合起来的性能:对于n个点的插值,产生多项式的时间复杂度是O(n*n),最终进行一个点的计算的时间复杂度是O(n)。
牛顿后插值公式牛顿后插值公式,这可是数学领域里一个相当有趣的家伙!咱先来说说啥是插值公式。
简单来讲,插值公式就是在已知一些数据点的情况下,找到一个能拟合这些点的函数表达式。
就好像你知道几个好朋友的身高和年龄,然后想找出他们身高和年龄之间的某种规律一样。
而牛顿后插值公式呢,就是其中的一种厉害的工具。
我记得有一次给学生们讲这个知识点的时候,那场面真是有趣极了。
有个小家伙瞪着大眼睛,一脸迷茫地问我:“老师,这东西到底有啥用啊?”我笑着跟他说:“你想想啊,假如你要预测明天的气温,但是只有过去几天的气温数据,这时候牛顿后插值公式就能派上用场啦,帮咱们估计出一个差不多的数值来。
”那孩子似懂非懂地点点头。
要说这牛顿后插值公式,它的表达式看起来可能有点复杂,一堆的符号和算式。
但是别怕,咱们一点点来拆解。
它的基本形式是通过不断增加插值节点来逐步提高拟合的精度。
比如说,一开始我们知道两个点,就能得到一个简单的线性表达式;知道三个点,就能得到更准确的二次表达式。
这就像搭积木一样,一块一块地往上加,让整个结构越来越完善。
在实际应用中,牛顿后插值公式可广泛了。
比如在工程领域,要根据一些测量数据来估计某个物理量的变化趋势;在经济学中,分析市场数据预测未来的经济走向。
学习牛顿后插值公式的时候,关键是要理解它的原理和推导过程。
别一看到那些算式就头疼,要静下心来,一步一步地去琢磨。
我还发现,学生们在做练习题的时候,经常会犯一些小错误。
比如计算过程中粗心大意,或者忘记了某个公式的条件。
这时候就得提醒他们,细心再细心,就像走钢丝一样,一步都不能错。
其实啊,数学里的很多知识都是这样,看起来很难,但只要咱们用心去学,多做练习,就会发现其中的乐趣和奥秘。
牛顿后插值公式虽然有点复杂,但它就像一把神奇的钥匙,能帮我们打开很多未知的大门,探索更多有趣的世界。
所以,同学们,别害怕,勇敢地去和它交朋友吧!希望大家通过不断地学习和实践,都能熟练掌握牛顿后插值公式,让它成为我们解决问题的好帮手!。
§2 差商、牛顿插值多项式在计算过程中,若需要再增加插值节点并求出新的插值函数,则Lagrange 插值公式所有的基函数都要重新计算,造成计算量的很大浪费。
而以下介绍的牛顿插值公式可以克服这一缺陷,可在原有插值多项式的基础上灵活的增加插值节点。
一、 差商及其性质: 1、相关定义设给出函数)(x f 在点0x ,1x ,… ,n x ,…上的函数值 ,则有:称],[10x x f 1010()()f x f x x x -=-为函数)(x f 在0x 、1x 点的一阶差商。
一阶差商的差商],,[210x x x f 121020],[],[x x x x f x x f --= 称为函数)(x f 在0x ,1x 和2x 点的二阶差商。
1-n 阶差商的差商],,,[10n x x x f 112020],,,[],,,[------=n n n n n n x x x x x f x x x f称为函数)(x f 在n x x x ,,,10 点的n 阶差商。
见插商表4-12、性质:性质1 :差商],,,[10n x x x f 可表示为函数值的线性组合,即 ∑==ni i i n x f a x x x f 010)(],,,[ ,其中:∏≠=-=nij j j ii x xa ,0)(/1。
该性质表明:差商与节点的排列次序无关,即:],,,[10n x x x f =],,,[01n x x x f =…=],,,[01x x x f n这就是差商的对称性。
性质 2101010[,,][,,][,,,]n n n n f x x f x x f x x x x x --=-01110[,,,][,,,]n n n f x x x f x x x x -=11100[,,][,,,]n n n f x x f x x x x x --=-10110[,,][,,,]n n n f x x f x x x x x --=-性质 3 设)(x f 在所含节点n x x x ,,,10 的区间],[b a 上有n 阶导数,则在该区间内至少有一点],[b a ∈ξ,使得:!/)(],,,[)(10n f x x x f n n ξ= 由该性质可知,若)(x f 为n 次多项式,则其n 阶差商为一常数。
牛顿法代数插值ndash 差商表的求法原文地址:牛顿法代数插值–差商表的求法作者:大关牛顿法代数插值–差商表的求法下面的求插商的方法并不是好的求插商的方式,因为他的效率并不是很高,不论是从空间效率还是时间效率,但是下面主要探讨的是一种将塔形的数据转换成一位数组的方式。
实际上求插商仅通过一个n个元素的一位数组就能解决,但本文强调的是一种思路,希望对大家有所借鉴。
牛顿插商公式:f[xi,xj]=(f(xj)– f(xi))/(xj– xi)f[xi,xj,xk]=(f[xj,xk]– f[xi,xj])/(xk– xi)….f[x0,x1,x2…,xn]=(f[x1,x2,…,xn]– f[x0,x1,…,xn-1])/(xn– x0)转换成均插表(或称差商表)形式如下:定义1:f[xi,xi+1,…xj]简记为f(i,j)其中i=0&&i=n&&j=0&&j=n&&i j;记f(xi)为f[xi,xi]即f(i,i)根据定义1可以推出:f[x0,x1]=f(0,1),f[x0,x1…xn]=f(0,n)….根据定义1:可以将插商表转换为如下形式。
根据上图,可以给出实际一维数组存储时的序列关系,如下图所示:此时f(0,0)位置是数组下标0,f(1,1)是数组下标为1….这样,我们从中找出相应的规律。
推论1:已知f(i,j),n为变量的数目,令k=j– i。
当k不等于0时,f(i,j)在数组中的下标通过计算得:Index=k*n–((k-1)*k)/2+i当k等于0时Index=i。
推论1很容易证明(实际就是一个等差数列求和问题)这里证明略。
推论2:n为变量的数目,则一维数组的长度可以计算得((1+n)*n)/2推论2可以通过等差数列求和得以证明。
证明略。
推论3:各阶插商就是f(0,k)k=1,2….n.推论3:根据插商的定义和定义1可以直接推出。
牛顿一次插值公式和二次插值公式
牛顿一次插值公式与二次插值公式
牛顿一次插值公式和二次插值公式是数学中常用的插值方法,用于在给定的数据点集上估计未知函数的值。
这两个插值方法都可以通过已知的数据点来逼近未知函数的值,从而实现数据的预测和拟合。
牛顿一次插值公式是基于线性插值的一种方法。
它假设未知函数在已知数据点之间是线性的,并利用这种线性关系来进行插值。
牛顿一次插值公式的优点是简单易懂,计算量小,适用于数据点较少的情况。
然而,它的缺点是对数据点的分布要求较高,若数据点分布不均匀,插值结果可能不准确。
与之相比,二次插值公式是基于二次多项式插值的一种方法。
它假设未知函数在已知数据点之间是二次多项式的形式,并利用这种二次多项式关系来进行插值。
二次插值公式的优点是对数据点的分布要求较低,适用于数据点分布不均匀的情况。
然而,它的缺点是计算量较大,需要解二次方程组,且容易产生龙格现象。
无论是牛顿一次插值公式还是二次插值公式,它们都是通过已知数据点来逼近未知函数的值。
插值的目的是为了在已知数据点之间填补缺失的数据,从而更好地理解和预测数据的变化趋势。
这两种插值方法在实际应用中都有广泛的应用,例如在地理信息系统、图像处理、信号处理等领域。
总的来说,牛顿一次插值公式和二次插值公式是数学中常用的插值方法。
它们分别基于线性插值和二次多项式插值,通过已知数据点来逼近未知函数的值。
这些插值方法在实际应用中发挥着重要的作用,帮助我们更好地理解和预测数据的变化趋势。
§2 差商、牛顿插值多项式在计算过程中,若需要再增加插值节点并求出新的插值函数,则Lagrange 插值公式所有的基函数都要重新计算,造成计算量的很大浪费。
而以下介绍的牛顿插值公式可以克服这一缺陷,可在原有插值多项式的基础上灵活的增加插值节点。
一、 差商及其性质: 1、相关定义设给出函数)(x f 在点0x ,1x ,… ,n x ,…上的函数值 ,则有:称],[10x x f 1010()()f x f x x x -=-为函数)(x f 在0x 、1x 点的一阶差商。
一阶差商的差商],,[210x x x f 121020],[],[x x x x f x x f --= 称为函数)(x f 在0x ,1x 和2x 点的二阶差商。
1-n 阶差商的差商],,,[10n x x x f 112020],,,[],,,[------=n n n n n n x x x x x f x x x f称为函数)(x f 在n x x x ,,,10 点的n 阶差商。
见插商表4-12、性质:性质1 :差商],,,[10n x x x f 可表示为函数值的线性组合,即 ∑==ni i i n x f a x x x f 010)(],,,[ ,其中:∏≠=-=nij j j ii x xa ,0)(/1。
该性质表明:差商与节点的排列次序无关,即:],,,[10n x x x f =],,,[01n x x x f =…=],,,[01x x x f n这就是差商的对称性。
性质 2101010[,,][,,][,,,]n n n n f x x f x x f x x x x x --=-01110[,,,][,,,]n n n f x x x f x x x x -=11100[,,][,,,]n n n f x x f x x x x x --=-10110[,,][,,,]n n n f x x f x x x x x --=-性质 3 设)(x f 在所含节点n x x x ,,,10 的区间],[b a 上有n 阶导数,则在该区间内至少有一点],[b a ∈ξ,使得:!/)(],,,[)(10n f x x x f n n ξ= 由该性质可知,若)(x f 为n 次多项式,则其n 阶差商为一常数。
也就是说,当一个函数的n 阶差商接近于常数时,那么用n 次多项式近似是恰当的。
例:设73()51f x x x =++,求差商012,2f ⎡⎤⎣⎦,0122,2,2f ⎡⎤⎣⎦,0172,2,,2f ⎡⎤⎣⎦和01782,2,,2,2f ⎡⎤⎣⎦。
解: 73(1)7,(2)2521169f f ==+⨯+=,73(4)454116705f =+⨯+=1(2)(1)2,2169716221f f f -⎡⎤==-=⎣⎦- 02(4)(1)1670572,25566413f f f --⎡⎤===⎣⎦-0201012212,22,255661622,2,22702222f f f ⎡⎤⎡⎤--⎣⎦⎣⎦⎡⎤===⎣⎦-(7)017()7!2,2,,217!7!f f ξ⎡⎤===⎣⎦ (8)18()02,2,,208!8!ff ξ⎡⎤===⎣⎦二、牛顿(Newton )插值多项式:设x 是],[b a 上的一点,则由差商的定义可以得到一系列的等式:0[,]f x x 00()()f x f x x x -=-⇒)](,[)()(000x x x x f x f x f -+=001011[,][,][,,]f x x f x x f x x x x x -=-⇒)](,,[],[],[110100x x x x x f x x f x x f -+=)](,,,[],,[],,[221021010x x x x x x f x x x f x x x f -+=… … … … … … … … …)](,,,,[],,,[],,,[101010n n n n x x x x x x f x x x f x x x f -+=-依次把后式代入前式,最后可得:()()[,]()0010f x f x f x x x x =+-[,,]()()01201f x x x x x x x +--++ 001[,,]()()n n f x x x x x x ---00[,,,]()()n n f x x x x x x x +--记 )(x P n 0010()[,]()f x f x x x x =+-01201[,,]()()f x x x x x x x +--++)()](,,[100---n n x x x x x x f (1))())(](,,,[)(100n n n x x x x x x x x x f x R ---= (2)则: )()()(x R x P x f n n += (3) 由于 )(x P n 是一个次数n ≤的多项式,又由(2),(3)式可知 )(x P n 是满足插值条件的插值多项式。
称(1)式为Newton 插值多项式。
注意:Newton 插值多项式与Lagrange 插值多项式是同一函数)(x f 的插值多项式中两种不同的表达形式,它们实质上是同一个多项式。
要计算Newton 插值多项式)(x P n ,只要计算出各阶差商就可得到了。
例:已知函数)(x f 的函数表如下:求四次Newton 插值多项式,并由此求)596.0(f 的近似值。
解:计算函数)(x f 的差商表如下:故的四次Newton 插值多项式为:)(4x P 0.41075 1.11600(0.4)0.28000(0.4)(0.55)x x x =+-+-- 0.19733(0.4)(0.55)(0.65)x x x +---0.0311(0.4)(0.55)(0.65)(0.80)x x x x +---- 则:4(0.596)(0.596)0.63195f P ≈=。
例:给定数据表:求4次牛顿插值多项式,并写出插值余项。
解:由差商表可得4次牛顿插值多项式为:457()43(1)(1)(2)(1)6601(2)(4)(1)(2)(4)(6)180P x x x x x x x x x x x =--+------+----插值余项为:(5)4()()()(1)(2)(4)(6)(7)5!ff x P x x x x x x ξ-=----- (min(,1),max(,7))x x ξ∈三、差分、等距节点下的Newton 插值多项式:1. 差分定义:设等距节点,,2,1,0,0 ±±=+=i ih x x i 其中h 为常数,称为步长。
设函数()f x 的值 (),i i f f x = 则有:一阶向前差分: 1i i i f f f +∆=- , ∆称为向前差分算子。
一阶向前差分的差分为 21i i i f f f +∆=∆-∆ 称为二阶向前差分。
一阶向后差分: 1i i i f f f -∇=- , ∇称为向后差分算子。
一阶向后差分的差分为 21i i i f f f -∇=∇-∇ 称为二阶向后差分。
一般地,函数()f x 的n 阶差分可以递推的定义为111111n n n i i in n n i i i f f f f f f --+---⎧∆=∆-∆⎪⎨∇=∇-∇⎪⎩ 规定零阶差分为 00i i i f f f ∆=∇=由以上定义可以算出差分与函数值之间的关系。
例如 i i i i i i i i i f f f f f f f f f +-=∆-∆=-∆=∆∆=∆++++121122)()(差分的基本性质:性质一:mmi i m f f +∆=∇性质二:差商和差分的关系:[]0101,,!mm mf x x x f m h =∆ []011,,!mm m mf x x x f m h=∇2. 等距节点的牛顿插值公式:Newton 向前插值公式(利用向前差分代替差商) 用途:求0x 附近的函数值。
依次取等距节点0(0,1,,),,i i x i n x a x a ih ===+,已知)(i i x f f =,修改牛顿插值公式可得:20000012()()()()1!2!n f f P x f x x x x x x h h∆∆=+-+--+ )()())((!1100-----∆+n i nnx x x x x x x x hn f令],0[,0n t th x x ∈+=,又有0i x x ih =+n i h i t x x i ,,2,1,0,)( =-=-20000()()(1)1!2!n n f f P x P x th f t t t ∆∆=+=++-+)1()1(!+--∆+n t t t n f n上式称为Newton 向前插值多项式。
同样的可推出Newton 向后插值公式(利用向后差分代替差商)用途:求n x 附近的函数值。
2()()(1)1!2!n nn n n n f f P x P x th f t t t ∇∇=+=++++(1)(1)!nnf t t t n n ∇+++-上式称为Newton 向后插值多项式。
若x 在函数表的中间,可以考虑用适于表中间的插值公式,我们这里就不说了。
例:有如下表函数试计算出此列表函数的差分表,并利用牛顿向前插值公式和向后插值公式给出它的插值多项式。
构造差分表:牛顿向前插值公式:44032()()3(1)1!2!P x P x th t t t =+=++-233(1)23t t t t t =++-=++牛顿向后插值公式:44492()()27(1)1!2!P x P x th t t t =+=+++2279(1)1027t t t t t =+++=++例:给出330.54)1(0的值,计算在=x x 。
解:给出差分表:因为0x x th =+,故0t h=当5.01/)05.0(5.0=-==t x 时,,根据Newton 向前插值公式,分别求得10()010.50.51!f P x f t ∆=+=+⨯=20020()(1)0.51!2!60.5(0.51)0.252f f P x f t t t ∆∆=++-=+⨯⨯-=-332()()(1)(2)0.253!60.5(0.51)(0.52)0.1253!f P x P x t t t ∆=+--=-+⨯⨯--=443()()(1)(2)(3)0.12500.1254!f P x P x t t t t ∆=+---=+=注意:上例中由于)(x f 的四阶导数为零,则有43()()P x P x =,即0)(3=x R ,所以3()0.125P x =是精确结果。