一、算法原理

1、问题引入

上一篇博客我们介绍了拉格朗日插值法,我们现在来回顾其定义:

对于插值区间【a,b】上一系列插值节点x0,x1,x2,......xn及其函数值y0、y1、y2......yn;构造一个简单的简单易算的近似函数g(x)≈f(x),满足条件g(xi)=f(xi) (i=0,1,2...,n)。

其拉格朗日插值多项式的形式为:

g(x)=L0(x0)*y0+L1(x1)*y1+......+Ln(xn)*yn,

其中Li(xi)=[(x-x0)*(x-x1)*......*(x-x(i-1))*(x-x(i+1))*.....*(x-xn)]  /  [(xi-x0)*(xi-x1)*......*(xi-x(i-1))*(xi-x(i+1))*.....*(xi-xn)]。

优点:具有严格的规律性,便于记忆。

缺点:计算量大、不具有承袭性。

2、牛顿插值法

Lagrange 插值虽然易算,但若要增加一个节点时, 全部基函数Li(x) 都需要重新计算。能否改写其形式,使其每增加一个点,只附加一项(重新计算一项)。

设Nn(x)=A0+A1*(X-X0)+A2*(X-X0)(X-X1)+......+An(X-X0)*(X-X1)......(X-X(n-1))

利用Nn(xi)=f(xi),写成矩阵形式:

1            0                  ......                              0                       [A0       [f(x0)

1         x1-x0               ......                              0                        A1        f(x1)

1         x2-x0   (x2-x0) (x2-x1) ......               0                   *  ......  =   ......

...          ...                                                                               ......       ......

...          ...         ...                                                                   ......       ......

1         xn-x0   (xn-x0) (xn-x1) ......  (xn-x0)*...(xn-x(n-1))      An]       f(xn)]

根据该线形方程组可以求得:A0=f(x0),A1=[f(x1)-f(x0)]/[x1-x0],

A2={[f(x2)-f(x0)]/[x2-x0]-f(x1)-f(x0)]/[x1-x0]} / (x2-x1)

3差商的定义

设已知函数f (x)在一系列互不相等的节点x0,x1,x2,......xn,(即在i≠j时,xi≠xj)上的函数值 f(xi) ,

f (x)在点xi , xj处的一阶差商为:

f (x)在点xi,xj,xk处的二阶差商为:

f(x)在点x0,x1,x2,......xk的k阶差商为:

规律总结:高阶差商是两个低一阶差商的差商。

利用差商的定义,可得Nn(x)的系数Aj :

从而可得牛顿插值多项式:

这样就实现了,每增加一个节点,多项式只增加一项,克服了拉格朗日插值多项式的缺点。

差商可以通过差商表计算。

4、牛顿插值多项式

了解了差商,我们就可以利用差商来表示牛顿插值多项式:

二、matlab程序

%% 牛顿插值 (创建函数脚本方可运行)
close
clc
clear
x=[2 3 5 6 9];
y=[4 8 12 15 23];
m=length(X);
c=cha(X,Y);
syms x
for i=1:m-1D1=x-X(1:i);D(i)=prod(D1);
endN=sym2poly(expand(sum(D.*c)+Y(1)))
x=X(1):0.1:X(end);
y=polyval(N,x);
plot(x,y)
hold on
plot(X,Y,'o')
function C=cha(X,Y)
% C存储差商结果
% X是横坐标m=length(X);
d=diff(Y)./diff(X);  %一阶差商
C(1)=d(1);   %取出第一个一阶差商做系数for i=2:m-1  %i阶差商 依次算出C(2)、C(3)...C(m-1)阶茶商 ,储存在数组C中X1=X(i+1:end); n=length(X1);X2=X(1:n);d=diff(d)./(X1-X2);C(i)=d(1);
end
end

MATLAB之牛顿插值法相关推荐

  1. 2021-01-07 matlab数值分析  插值法 拉格朗日插值法 牛顿插值法

    matlab数值分析  插值法 1 拉格朗日插值法 function yh=lagrange(x,y,xh) n=length(x); m=length(xh); yh=zeros(1,m); for ...

  2. 牛顿法的matlab实现例题,【MATLAB|MATLAB牛顿插值法例题与程序Word版】

    『易坊知识库摘要_MATLAB|MATLAB牛顿插值法例题与程序Word版』x12345678y22.523.324.421.7025.228.524.825.4二.数学原理假设有n+1个不同的节点及 ...

  3. 【数学建模笔记】【第三讲】拉格朗日插值法,牛顿插值法,分段三次埃尔米特插值法及其MATLAB实践

    温馨提示:本文共有3748字,阅读并理解全文大概需要15-20分钟 插值算法 一.插值法的定义 1.插值函数一共有三种: 2.多项式插值法原理 3.分段插值法原理: 4.具体如何求插值函数呢? (1) ...

  4. 牛顿插值法 matlab m文件,牛顿插值法matlab程序

    <牛顿插值法matlab程序>由会员分享,可在线阅读,更多相关<牛顿插值法matlab程序(3页珍藏版)>请在人人文库网上搜索. 1.计算方法数值实验报告班级090712学号0 ...

  5. matlab 牛顿向后差分,利用差分的牛顿插值法(Newton)

    差分牛顿插值法要求是等距的. 先来看三个概念 差分与均差的关系如下: 牛顿(Newton)插值的基本公式为: 由于差分插值是等距的,所以可以设x=x0+nh 对于上式

  6. java 多项式拟合最多的项数_牛顿插值法、曲线拟合、多项式拟合

    2020年10月4日研究了一下牛顿插值法,其用途是使用x.y两组数值,根据新的x值返回对应的y值,与TREND.FORECAST函数不同,这种方法可应对非线性数据.其作用类似于图表中的曲线拟合或LIN ...

  7. 艾特肯法方程解matlab程序,牛顿迭代法matlab代码

    牛顿法 迭代公式: x(k1) xk [2 f (x(k) )]1f (x(k) ) Matlab 代码: function [x1,k] =newton(x1,eps) hs=inline('(x ...

  8. matlab用牛顿差值计算三次差值多项式,计算方法用Newton插值多项式求函数的近似值.docx...

    计算方法用Newton插值多项式求函数的近似值 计算方法课程设计题 目: 用Newton插值多项式 处理磁化曲线学 院: 理学院班 级: 学 生 姓 名: 学 生 学 号: 指 导 教 师: 2017 ...

  9. 非线性方程组牛顿迭代法matlab,matlab实现牛顿迭代法求解非线性方程组

    <matlab实现牛顿迭代法求解非线性方程组>由会员分享,可在线阅读,更多相关<matlab实现牛顿迭代法求解非线性方程组(5页珍藏版)>请在人人文库网上搜索. 1.matla ...

  10. 拉格朗日插值的优缺点_拉格朗日与牛顿插值法的比较

    第 1 页 共 7 页 拉格朗日插值法与牛顿插值法的比较 一. 背景 在工程和科学研究中出现的函数是多种多样的.常常会遇到这样的情况:在某个实际 问题中,虽然可以断定所考虑的函数 ) ( x f 在区 ...

最新文章

  1. R语言rev函数对数据对象(向量、dataframe通过行或者列)反序实战
  2. python创建树结构、求深度_数据结构-树以及深度、广度优先遍历(递归和非递归,python实现)...
  3. 全网最深刻的理解音频转码swr_convert(2019/10/29已补充修正)
  4. Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮...
  5. mac os x10.8下如何使用git与github
  6. 同字母异序词 python_49. 字母异位次分组(Python)
  7. Oracle 12c与GoldenGate 12c的一些问答
  8. vue自学入门-2(vue创建项目)
  9. 如何在Win7 x64上的配置32位的PostgreSQL ODBC数据源
  10. Ubuntu用Apache2快速搭建一个HTTP文件服务器
  11. 软件测试功底技术——编程语言
  12. 软件项目管理作业汇总
  13. 3. react脚手架
  14. HDU 5336 XYZ and Drops (模拟+搜索,详解)
  15. python乒乓球比赛规则介绍_乒乓球比赛的简要规则
  16. 【Fuzzy】不确定规划:模糊变量
  17. AE 动画的分层与组合
  18. 短信验证码总是发送失败是什么原因?
  19. 理解sparse coding
  20. 计算机如何显示e盘文档,我把电脑E盘里文件隐藏了,怎么弄可以显示出来!

热门文章

  1. win7 管理iphone日历_软媒时间3.08正式版:让Win7用上最美桌面日历
  2. 3.7V转5V电路图芯片,3.7V升压5V的升压芯片
  3. python三对角矩阵_用NumPy实现三对角矩阵算法(TDMA)
  4. 基于分形理论和空间技术的耕地景观变化和用地质量研究
  5. android wps页面设置背景图片,如何给手机版WPS的文档设置图片背景
  6. mysql处理微信表情
  7. 计算机仿真课程的心得体会,数学建模心得体会
  8. adams2020安装教程(附详细图文安装教程)
  9. ADAMS2016启动证书错误解决
  10. 移动 app 测试工具 bugtags