Newton插值法流程图
牛顿插值法原理及应用
牛顿插值法插值法是利用函数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)的近似值。
牛顿插值法ppt课件
为 在点
处的二阶差商
称
f[x 0 ,x 1 , x n ] f[x 0 ,x 1 , ,x x n 0 1 ] x n f[x 1 ,x 2 , x n ]
为f (x)在点
处的n阶差商。
--
9
差商表
x
f(x)
一阶差 商
二阶差商
三阶差商
x0
f(x0)
x1
f(x1) f [x0,x1]
x2
f(x2) f [x1,x2] f [x0,x1,x2]
--
14
例题分析(续1)
f
(x0, x1)
y1 x1
y0 x0
12 1(1)
1 2
f
(x1,
x2)
y2 x2
y1 x1
11 21
0
f
(x0, x1, x2)
f
(x1,x2) f (x0,x1) x2 x0
02((1/12))
1 6
--
15
例题分析(续2)
f (x)N2(x) f (x0)f[x0,x1](xx0)
令 xx0得: Nn(x0)c0y0f(x0); 令 xx1得: Nn(x1)c0c1(x1x0)y1f(x1); 由此可c0解 ,c1;c出 i 依: 次类推。
--
6
具有承袭性的插值公式
线性插值公式可以写成如下形式:
其中
p 1 x p 0 x c 1 x x 0
p0xfx0,其修正项的系数 c1
f
x1f x0
x1 x0
再修正 p1 x 可以进一步得到拋物插值公式
p 2 x p 1 x c 2 x x 0 x x 1
其中
牛顿和拉格朗日插值算法源代码及流程图-报告
牛顿和拉格朗日插值算法源代码及流程图-报告流程图找站长要//编译平台:2000+vc6.0//实验一//作者:计算机科学与技术#include<stdio.h>#include<stdlib.h>#include<iostream.h>typedef struct data{float x;float y;}Data;//变量x和函数值y的结构Data d[20];//最多二十组数据float f(int s,int t)//牛顿插值法,用以返回插商{if(t==s+1)return (d[t].y-d[s].y)/(d[t].x-d[s].x);elsereturn (f(s+1,t)-f(s,t-1))/(d[t].x-d[s].x); }float Newton(float x,int count){int n;while(1){cout<<"请输入n值(即n次插值):";//获得插值次数cin>>n;if(n<=count-1)// 插值次数不得大于count-1次break;elsesystem("cls");}//初始化t,y,yt。
float t=1.0;float y=d[0].y;float yt=0.0;//计算y值for(int j=1;j<=n;j++){t=(x-d[j-1].x)*t;yt=f(0,j)*t;//cout<<f(0,j)<<endl;y=y+yt;}return y;}float lagrange(float x,int count){float y=0.0;for(int k=0;k<count;k++)//这儿默认为count-1次插值 {float p=1.0;//初始化pfor(int j=0;j<count;j++){//计算p的值if(k==j)continue;//判断是否为同一个数p=p*(x-d[j].x)/(d[k].x-d[j].x);}y=y+p*d[k].y;//求和}return y;//返回y的值}void main(){float x,y;int count;while(1){cout<<"请输入x[i],y[i]的组数,不得超过20组:";//要求用户输入数据组数cin>>count;if(count<=20)break;//检查输入的是否合法system("cls");}//获得各组数据for(int i=0;i<count;i++){cout<<"请输入第"<<i+1<<"组x的值:";cin>>d[i].x;cout<<"请输入第"<<i+1<<"组y的值:";cin>>d[i].y;system("cls");}cout<<"请输入x的值:";//获得变量x的值cin>>x;while(1){int choice=3;cout<<"请您选择使用哪种插值法计算:"<<endl;cout<<" (0):退出"<<endl;cout<<" (1):Lagrange"<<endl;cout<<" (2):Newton"<<endl;cout<<"输入你的选择:";cin>>choice;//取得用户的选择项if(choice==2){cout<<"你选择了牛顿插值计算方法,其结果为:";y=Newton(x,count);break;//调用相应的处理函数}if(choice==1){cout<<"你选择了拉格朗日插值计算方法,其结果为:"; y=lagrange(x,count);break;//调用相应的处理函数}if(choice==0)break;system("cls");cout<<"输入错误"<<endl;}cout<<x<<" , "<<y<<endl;//输出最终结果}。
牛顿插值公式
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的值。
数学建模之Newton 插值法
计算方法
第二章
插值法
—— Newton 插值法
1
Newton 插值
为什么 Newton 插值
Lagrange 插值简单易用,但若要增加一个节点时,全部基函 数 lk(x) 都需重新计算,不太方便。
13
插值举例
可以看出,当增加一个节点时,牛顿插值公式只 需在原来的基础上增加一项,前面的计算结果仍 然可以使用。与拉格朗日插值相比,牛顿插值具 有灵活增加节点的优点!
注:增加插值节点时,须加在已有插值节点的后面!
14
向前差分
在实际应用中,通常采用等距节点: xi = x0 + i h ,i = 1, 2, …, n h>0,称为步长
Nn(x)
f [ x, x0 , ... , xn ]( x x0 )...(x xn1 )( x xn )
Rn(x)
10
Newton 插值公式
f (x) = Nn(x) + Rn(x)
N n ( x ) a0 a1 ( x x0 ) a2 ( x x0 )( x x1 ) an ( x xi )
f ( k ) ( ) f [ x0 , x1 , , xk ] k!
差商的等价定义:(教材上的所采用的定义) f [ x0 , , xk 2 , xk ] f [ x0 , , xk 1 ] f [ x0 , x1 , , xk ] xk xk 2 若 h(x) = c f(x),则 h[ x0 , x1 ,, xk ] c f [ x0 , x1 ,, xk ] 若 h(x) = f(x) + g(x),则 h[ x0 , x1 ,, xk ] f [ x0 , x1 ,, xk ] g[ x0 , x1 ,, xk ]
牛顿均差差值
f ( n ) (ξ ) f [ x 0 , ... , x n ] = , ξ ∈ ( x min , x max ) n!
的函数表如下, 例 f(x)的函数表如下,用三次牛顿插值计算 的函数表如下 用三次牛顿插值计算f(0.596)的近似值 的近似值
←
y ← y+t*A(k,k) k ← k+1
N
k>N
Y
输出y 输出
§2 Newton’s Interpolation
等距节点公式 /* Formulae with Equal Spacing */ 牛顿基本插值公式对结点是否等距没有限制. 牛顿基本插值公式对结点是否等距没有限制.不过当 结点等距时前述牛顿插值公式可进行简化.首先介绍 结点等距时前述牛顿插值公式可进行简化. 差分概念. 差分概念. x −x 当节点等距分布时: 等距分布时 当节点等距分布时 x i = x 0 + i h ( i = 0 , ... , n ) h =
0.62)+0.21303(x-0.55)(x-0.65)(x-0.80) f(0.596) ≈N3(0.596)=0.63192
牛顿插值算法设计
N n ( x ) = f ( x0 ) + f [ x0 , x1 ]( x − x0 ) + f [ x0 , x1 , x2 ]( x − x0 )( x − x1 ) + ...
f [ x 0 , x 1 , x 2 ,⋯ , x n] =
Newton插值算法
Newton 插值的算法实现Lagrange 插值公式结构紧凑,便于理论分析。
利用插值基函数也容易到插值多项式的值。
Lagrange 插值公式的缺点是,当插值节点增加,或其位置变化时,全部插值基函数均要随之变化,从而整个插值公式的结构也发生变化,这在实际计算中是非常不利的。
下面引入的Newton 插值公式可以克服这个缺点。
1、问题描述当n=1时,由点斜式直线方程知,过两点00(,())x f x 和11(,())x f x 的直线方程为1010010()()()()().f x f x N x f x x x x x −=+−−若记 100110()()[,],f x f x f x x x x −=−则可把1()N x 写成10010()()[,]().N x f x f x x x x =+−显然,1()N x 就是一次Lagrange 插值多项式1()L x 。
由于1()y N x =表示通过两点00(,())x f x 和11(,())x f x 的直线,因此一次插值亦称为线性插值。
当n=2时,进而记120121*********[,][,]()()[,],[,,]f x x f x x f x f x f x x f x x x x x x x −−==−−类似地,构造不超过二次的多项式2001001201()()[,]()[,,]()().N x f x f x x x x f x x x x x x x =+−+−−容易检验,这样的2()N x 满足插值条件200211222()(),()(),()().N x f x N x f x N x f x ===因此,2()N x 就是二次Lagrange 插值多项式2()L x 。
二次插值的几何解释是,用通过三点00(,())x f x ,11(,())x f x ,22(,())x f x 的抛物线2()y N x =来近似所考察的曲线()y f x =,因此这类插值亦称为抛物线插值。
计算方法Newton插值 ppt课件
设x为区间[a, b]上的一点,可得:
f ( x f 0 () ) x f [x 0 x ] ( ,x x 0 )
以上公式可以利用如下的表达式直接验证
n
ω(x) (xk xi) i0
应理解:右端分母中,xk-xk 项永远不出现。 这种求解差商的方法的优点是直接使用公式, 缺点是计算量较大。
性质2 差商具有对称性,即在k阶差商 f [0,xx1, … ,xk] 中任意交换两个节点x i 和 x j 的次序,其值不变。
的系数ak (k=0,…,n)可根据以下插值条件推出。
N n (i) x fi( )x i 0 …,,n 1 ,
N n( 0 x)a0 f (0)x N n (1 ) x a 0 a 1 (1 x x 0 ) f 1 ()x N n ( 2 ) x a 0 a 1 ( 1 x x 0 ) a 2 ( 2 x x 0 )2 ( x 1 ) x f2 ) (
00
f[xi,xi+1,xi+2] f[xi,xi+1,xi+2 ,xi+3]
28 3 27 5 125 6 216
80 4 20
27 8 32
19
19 4 30
5
12527 53
49
49 5
219
10
216125 65
91
91 49 63
14
10 5 50
1
14 10 1 62
差商的性质
n次牛顿(Newton)插值公式的表达式:
N n (x f)(0 )x f[0 ,x 1 ](x x 0 ) f[0 ,x 1 ,x 2 ](x x 0 )(x x 1 ) … f[0 ,x 1 … ,x n ](x x 0 )(x x 1 ) …(x x n 1 )
数值分析4.2 牛顿插值法
Rn ( x ) f [ x, x0 ,, xn ]( x x0 )( x x1 ) ( x xn )
Rn(x)称为牛顿型插值余项。
可见, Nn(x)为次数不超过n 的多项式,且易知
Rn(xi)= 0 即 Nn(xi)= yi , (i=0,1, …,n)
满足插值条件, 故其为插值问题的解, Nn(x)称为牛顿 插值多项式。
f ( x ) f ( x0 ) f [ x0 , x1 ]( x x0 ) f [ x , x0 , x1 ]( x x0 )( x x1 ) f ( x0 ) f [ x0 , x1 ]( x x0 ) f [ x0 , x1 , x2 ]( x x0 )( x x1 ) f [ x , x0 , x1 , x2 ]( x x0 )( x x1 )( x x2 )
差分有如下基本性质
性质1 各阶差分均可用函数值表示. 即
f i f n i c f n i 1 (1) c f i (1) c f n i j
n 1 n n n n n n j
n
f i f i c f i 1 (1) c f i n (1) c f i j
Rn ( x ) f [ x , x0 , , xn ]( x x0 )( x x1 ) ( x xn ) f [ x , x0 , , xn ] n1 ( x )
k 1 n
f ( x ) N n ( x ) Rn ( x )
N n ( x ) f ( x0 ) f [ x0 , x1 ]( x x0 ) f [ x0 , x1 , x2 ]( x x0 )( x x1 ) f [ x0 , , xn ]( x x0 ) ( x xn1 )
2_Newton插值法
…
f ( x3 )
…
…
………
…………
……………
August 6, 2012
yfnie@
8
2.4 误差估计
• 如果f(x)充分光滑,则有估计
Rn ( x) f ( x) N n ( x) f
( n 1)
( )
( n 1)!
f ( x1 ) f ( x 0 ) x1 x 0
i0
K=1:
f [ x 0 , x1 ]
N n ( x1 ) f ( x 0 )
1 ( x1 )
f ( xi ) f ( x j ) xi x j
f ( x 0 ) f ( x1 ) x 0 x1
f [ xi , x j ]
A
k
f ( xi ) ( x i x 0 ) ( x i x i 1 )( x i x i 1 ) ( x i x k )
i0
k
f ( xi )
i0
k 1 ( x i )
'
August 6, 2012
yfnie@
2
2.2 Newton型插值公式
性质
f [ x 0 , x 1 , , x k ] 与 节 点 x 0 、 x 1 、 … 、k x
的次序无关。
f [ x 0 , x1 , , x k ]
k
f ( xi ) ( x i x 0 ) ( x i x i 1 )( x i x i 1 ) ( x i x k )
August 6, 2012
yfnie@
3 2.3 Newton插值法
, (x x
0
)( x x1 ) ( x xn 1 )
共n+1个多项式的线性组合
那么,是否可以将这n+1个多项式作为插值基函数呢?
显然,多项式组 1 , x x0 , ( x x0 )( x x1 ),
,
( x x0 )( x x1 )( x xn 1 )
0 0 0
f 0 ( f [ x0 , x1 ] f [ x , x0 , x1 ]( x x1 ))( x x0 ) f 0 f [ x0 , x1 ]( x x0 ) f [ x , x0 , x1 ]( x x0 )( x x1 )
f 0 f [ x0 , x1 , , xk ] ( x x j ) f [ x , x0 , x1 , , xn ] ( x x j )
f [ x0 , x1 , , xk 1 ] f [ x0 , x1 , , xk 2 , xk ] xk 1 xk
f ( xi ) i 0 ( xi x0 )( xi xi 1 )( xi xi 1 )( xi xk )
k
f [ x1 , x2 , xk ] f [ x0 , x1 , , xk 1 ] xk x0
f [ x0 , x1 , , xk ] f [ x0 , x1 , , xk 1 , x ] f [ x0 , x1 , , xk , x ] xk x
f [ x0 , x1 , , xk 1 , x ]
f [ x0 , x1 , , xk ] f [ x0 , x1 , , xk , x ]( x xk ) 因此可得 f ( x ) f f [ x , x ]( x x )
数值分析各算法流程图
01,,n1,,n1,,)n x及数值分析各算法流程图一、插值1、 拉格朗日插值流程图:( 相应程序:lagrintp(x,y,xx))2,,n ,,j n 1,2,,n 1,,)n 2、 牛顿插值流程图(1)产生差商表的算法流程图(相应程序:divdiff(x,y))注:1、另一程序divdiff1(x,y),输出的矩阵包含了节点向量。
而divdiff(x,y)不含节点向量。
2、另一程序tableofdd(x,y,m),输出的是表格形式,添加了表头。
1,,),,n m 及1,,m (2)非等距节点的牛顿插值流程图(相应程序:newtint11(x,y,xx,m)) 、注:1、虽然程序newtint11(x,y,xx,m)考虑了多种情形,看上去很复杂,但基本流程结构还是如上图所示。
2、程序中调用的子程序是divdiff 。
若调用的子程序是divdiff1的话,流程图中的第三,第四,第五步要相应的改一下数字。
2,3,,1m +1,,j1,2,,n=1,2,,)n m 及(3)求差分表的流程图(相应程序:difference(y,m))注:1、difference 输出的是矩阵D 。
而另一程序tableofd(y,m),输出的是带有表头的差分表。
n x m1,,),,1,,m注:1、程序newtforward1(x,y,xx,m))的结构与上述流程图一致,xx可以是数组。
2、另一程序newtforward(x,y,xx,m))先求出插值多项式,再求插值多项式在插值点的函数值。
基本结构还是和上面的流程图一样。
n x m1,,),,-x x1,,m注:1、程序newtbackward1(x,y,xx,m))的结构与上述流程图一致,xx可以是数组。
2、另一程序newtbackward(x,y,xx,m))先求出插值多项式,再求插值多项式在插值点的函数值。
基本结构还是和上面的流程图一样。
1,2,,n1,2,,n ,2,,)n x及3、Hermite 插值流程图(1) 已知条件中一阶导数的个数与插值节点的个数相等时的Hermite 插值流程图。
牛顿插值法原理及应用
牛顿插值法插值法是利用函数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)的近似值。
5.2 牛顿插值
二阶差商
三阶差商
四阶差商
x1 f ( x1 ) x2 f ( x2 ) x3 f ( x3 )
b1
f [ x0 , x1 , x2 ]
f [ x1 , x2 ]
b2
f [ x0 , x1 , x2 , x3 ]
f [ x1 , x2 , x3 ] f [ x2 , x3 ] f [ x2 , x3 , x4 ] f [ x3 , x4 ]
15 24
16 24
f [ xi , x j , xk ]
K 阶差商
f [ x1 , x2 , , xk ] f [ x0 , x1 , , xk 1 ] f [ x0 , x1 , , xk ] xk x0
7 24
General Form
f 2 ( x) b0 b1 ( x x0 ) b2 ( x x0 )( x x1 )
N4(x)= 0.78846 +0.43505(x-2.20) - 0.087375(x-2.20)(x-2.40) +0.0225(x-2.20)(x-2.40)(x-2.60) -0.00755(x-2.20)(x-2.40)(x-2.60)(x-2.80)
14 24
Largran Code
dk , j
b3
f [ x0 , x1 ,, x4 ]
f [ x1 , x2 , x3 , x4 ]
b4
N n ( x) b0 b1 ( x x0 ) b2 ( x x0 )( x x1 ) b3 ( x x0 )( x x1 )( x x2 )10
24
x4 f ( x 4 )
代入可得
b0 f ( x0 )
最新文档-Newton插值-PPT精品文档
f[20,21, ,27]f(7 7)! ()7 7!!1
f[20,21, ,28]f(8 8)! ()8 0!0
数计学院-黄陈思
上面我们讨论了节点任意分布的插值公式,但实际应 用时经常会遇到等距节点的情形,这时插值公式可以 进一步简化,计算也简单多了,为了给出等距节点的 插值公式,我们先来看一个新概念;
数计学院-黄陈思
k 1
k1
k 1
k (x) (x x j ) (x0 thx0 jh) (t j)h
j0
j0
j0
则插值公式
n
Nn(x) f0 f[x0,x1, ,xk]k(x) k1
化为
Nn(x0th)
f0
n
[
k 1
若 用 插 值 基 函 数 表 示 , 则 在 整 个 区 间 [a,b]上 Ih(x)为
n
Ih(x)=fjlj(x) j=0
x xj
xj1 xj1
,xj1
x
xj
(
j
0略去)
其中,lj
(x)=xxj
xj1 xj1
,xj
x
xj1( j
n略去)
a n(xx0)x (x1) (xxn 1)
其 中 a 0 ,a 1 ,… … a n 为 待 定 系 数
数计学院-黄陈思
P(x)应满足插 P(xi)值 fi ,条 i0,件 1, ,n
有 P(x0)f0a0
a0 f0
P ( x 1 ) f1 a 0 a 1 ( x 1 x 0 )
2fkfk1fk 为f (x)在xk 处的二阶向前差分 2fk fk fk1 为f (x)在xk 处的二阶向后差分
ami插值法第二讲(Newton插值)
1 k 2
f
k
1 2
分别称为 ( x )在x k 处以h为步长的向前差分, f 向后差分及中心差分 .
f k
f k
h
x k 1
x
1 k 2
h
xk
x
k 1 2
x k 1
给出f ( x )的函数表 求4次牛顿 ,
插值多项式,并由此计 f (0.596)的近似值。 算
首先根据给定函数表造 出均差表 .
xi
0.40
0.55 0.65 0.80 0.90 1.05
fi
0.41075 0.57815
0.69675 0.88811 1.02652 1.25382
一阶均差
二阶均差
N 4 x 0.41075 1.116 x 0.4 0.28( x 0.4) x 0.55 0.03134 x 0.4 x 0.55 x 0.65 x 0.8 , 0.19733 x 0.4 x 0.55 x 0.65
Table[f[i,i+1,i+2,i+3,i+4],{i,0,0}]//N; MatrixForm[%];
A={{y[0],y[1],y[2],y[3],y[4]},{0,f[0,1],f[1,2],f[2,3],f[3,4]}, {0,0,f[0,1,2],f[1,2,3],f[2,3,4]},{0,0,0,f[0,1,2,3],f[1,2,3,4]}, {0,0,0,0,f[0,1,2,3,4]}}; Transpose[A]//N; MatrixForm[%] a[0]=y[0]; a[1]=f[0,1]; a[2]=f[0,1,2]; a[3]=f[0,1,2,3]; a[4]=f[0,1,2,3,4]; N[x]=Sum[a[k]*Product[(x-x[m]),{m,0,k-1}],{k,0,4}]//N Expand[%] N[%/.x->0.596,20]
牛顿插值法ppt课件
f (m0 (m0
1)( )
1)!
(
x
x0
)(
m0
1)
19
Hermite插值多项式(续2)
已知函数 y f (x)在区间[a,b]上n个互异点 x0 , x1,L , xn 处的函数值 y0 , y1,L , yn , 以及导数值m0 , m1,L , mn ,求 H2n1(x) P2n1 使得满足插值条件
0 (x),1(x), 0 (x), 1(x)
使之满足
0 (x0 ) 1
00
( x1 (x0
) )
0 0
0 (x1) 0
0 (x0 ) 0 0 (x1) 1 0 (x0 ) 0 0 (x1) 0
0 (x0 ) 0
0 0
( x1 ) (x0 )
0 1
0 (x1) 0
0 (x0 ) 0
增加一个点后
Nn1(x) c0 c1(x x0 ) c2(x x0)(x x1) L cn (x x0)(x x1)L (x xn1) cn1(x x0 )(x x1)L (x xn1)(x xn )
5
Newton插值
关键是ci的求法! 可仿照泰勒公式里系数 的求法!
Nn (x) c0 c1(x x0 ) c2 (x x0 )(x x1) cn (x x0 )(x x1) (x xn1)
1.53427 2.18224 x 0.761677 x2 0.113706 x3
ln 1.5 = 0.409074
28
一般的Hermit插值
设在n+1个节点 a x0 x1 L xn b
给出函数值和导数值 y0 , y1,L , yn 及y0 , y1,L , yn
第二章牛顿插值法
3 fi3 3!h3
f [xi , xi1 ,, xim ]
m fi m!hm
m fim m!hm
f [x0 , x1 ,, xk ]
k f0 k!hk
k fk k!hk
1.Newton向前(差分)插值公式
如果节点 x0 , x1 ,, xn是等距节点 ,即
y2 ,
(a b)3 a3 3a2b 3ab2 b3
归纳4 y可0 知 ,3k2y阶y10差商3y可10表示yy4为04yy2326yy12y40y1 y0
4kyy1 iC32ky0y2y1ik3yCy21k1yiyyk5114yy342C6ykyk231yiy411y2 C kkyy1 i
fi xi
fi fi1 hh
f [xi , xi1 , xi2 ]
f [ xi , xi1 ] f [ xi1 , xi2 ] xi xi2
fi fi1 2h2
2 fi 2h2
fi1 fxi2 2h2
2 fi2 2h2
xk
x0
kh,k
0,1,, n, h
f [xi , xi1 , xi2 , xi3 ]
f [ xi , xi1 , xi2 ] f [ xi1 , xi2 , xi3 ] xi xi3
2 fi 2 fi1 3 2h3
3 fi 3!h3
依此类推
2
fi2 2 fxi3 3 2h3
xk f (xk ) 一阶差商 x0 f ( x0 )
x1 f ( x1 )