利用差分的牛顿插值法(Newton)
来源:互联网 发布:mac怎么彻底删除软件 编辑:程序博客网 时间:2024/05/22 10:41
差分牛顿插值法要求是等距的。
先来看三个概念
差分与均差的关系如下:
牛顿(Newton)插值的基本公式为:
由于差分插值是等距的,所以可以设x=x0+nh
对于上式
再由差分和均差的关系,可以将上面的黄色部分也就是牛顿插值基本公式转换成:
这里只介绍前插法:
此外还有一个余项公式:
余项部分暂不考虑。现在可以将公式转换为代码:
NewtonForward.m
function f = Newtonforward(x,y,x0)%求已知数据点的向前差分牛顿插值多项式%已知数据点的x 坐标向量:x%已知数据点的y 坐标向量:y%为插值点的x坐标:x0%求得的向前差分牛顿插值多项式或x0处的插值:fsyms t;if(length(x) == length(y)) n = length(x); c(1:n) = 0.0;else disp('x和y的维数不相等!'); return;endf = y(1);y1 = 0;xx =linspace(x(1),x(n),n); %吧x(1)到x(n)分成n-1份,比如1到100分成11份就是:1 10 20...100if(xx ~= x) disp('节点之间不是等距的!'); return;endfor(i=1:n-1) for(j=1:n-i) y1(j) = y(j+1)-y(j); %求△f end c(i) = y1(1); l = t; for(k=1:i-1) l = l*(t-k); %每一项的∏部分 end; f = f + c(i)*l/factorial(i); %得到前i项的牛顿插值的和 simplify(f); y = y1; if(i==n-1) if(nargin == 3) f = subs(f,'t',(x0-x(1))/(x(2)-x(1))); %如果有输入x0,那么就把未知数t替换成(x0-x(1))/(x(2)-x(1)),表示x0的位置在哪里 else f = collect(f); f = vpa(f, 6); end endend
NewtonForwardInsert.m
xx=0:2*pi;yy=sin(xx);x1=0:0.5:2*pi;y1=Newtonforward(xx,yy,x1);plot(xx,yy,'o',x1,y1,'r')
【附】前插和后插的公式对比
前插公式:
余项:
后插公式:
余项:
后插法的matlab实现:
Newtonback.m
function f = Newtonback(x,y,x0)%求已知数据点的向后差分牛顿插值多项式%x:已知数据点的x坐标向量%y:已知数据点的y坐标向量%x0:插值点的x坐标%f:求得的向后差分牛顿插值多项式或x0处的插值syms t;if(length(x)==length(y)) n=length(x); c(1:n)=0.0;else disp('x和y的维数不相等!!'); return;endf=y(n);y1=0;xx=linspace(x(1),x(n),n); %将x(1)到x(n)分成x(2)-x(1)等间距段if(xx~=x) disp('节点之间不是等距的!'); return;endfor(i=1:n-1) for(j=i+1:n) y1(j)=y(j)-y(j-1); end c(i)=y1(n); l=t; for(k=1:i-1) l=l*(t+k); end f=f+c(i)*l/factorial(i); simplify(f); y=y1; if(i==n-1) if(nargin==3) f=subs(f,'t',(x0-x(n))/(x(2)-x(1))); else f=collect(f); f=vpa(f,6); end endend
NewtonBackInsert.m
xx=0:2*pi;yy=sin(xx);x1=0:0.5:2*pi;y1=Newtonback(xx,yy,x1);plot(xx,yy,'o',x1,y1,'r')
1 0
- 利用差分的牛顿插值法(Newton)
- 利用均差的牛顿插值法(Newton)
- Newton差分插值性质证明(均差与差分的关系证明)
- 牛顿法 Newton Method
- 牛顿(Newton)方法
- Newton法(牛顿法)
- 实验二:Newton牛顿插值法之C语言代码
- Newton法(牛顿法 Newton Method)
- Newton法(牛顿法 Newton Method)
- 牛顿迭代法(Newton's Method)
- 牛顿迭代法(Newton's Method)
- 牛顿法(Newton's Method)
- 牛顿迭代法(Newton's Method)
- 牛顿迭代法(Newton's Method)
- 牛顿插值(牛顿差商法)的Matlab实现
- 利用牛顿差商法与拉格朗日差值法进行拟合
- 使用牛顿迭代方法(Newton’s method)来估计方程的解
- 牛顿迭代例子Newton-Raphson Method
- 设计模式(Design Patterns)
- 2015年9月10日工作日志------------赵鑫
- JAVA 该数出现几次
- 程序员必须开始的道路
- 年总结(三):风雨征程一年机房路
- 利用差分的牛顿插值法(Newton)
- Java 解析java程序的过程图
- 【hihoCoder】Tower Defense Game
- erl_线性结构
- 不得不收藏的APP设计资源站【UI设计师干货】
- C语言基础
- Android第八讲——多媒体(一) 音乐播放器
- iOS中计算文本的宽高
- poj 1659 Frogs' Neighborhood 图论基础 可图性