简介

wikipedia: Neville's method

在数学上,Neville 算法是一种计算插值多项式方法,由数学家Eric Harold Neville提出。由给定的n+1个节点,存在一个唯一的幂次≤n的多项式存在,并且通过给定点。

算法

给定n+1个节点及其对应函数值 \((x_i, y_i)\),假设 \(P_{i,j}\) 表示 \(j-i\) 阶多项式,并且满足通过节点 \((x_k, y_k) \quad k =i, i+1, \cdots, j\)。\(P_{i,j}\) 满足以下迭代关系

\[\begin{eqnarray} \begin{aligned} & p_{i,i}(x) = y_i \cr & P_{i,j}(x) = \frac{(x_j - x)p_{i,j-1}(x) + (x - x_i)p_{i+1,j}(x)}{x_j - x_i}, \quad 0\le i\le j \le n \end{aligned} \end{eqnarray}\]

以n=4的节点举例,其迭代过程为

\[\begin{eqnarray} \begin{aligned} & p_{1,1}(x) = y_1, \cr & p_{2,2}(x) = y_2, p_{1,2}(x), \cr & p_{3,3}(x) = y_3, p_{2,3}(x), p_{1,3}(x),\cr & p_{4,4}(x) = y_4, p_{3,4}(x), p_{2,4}(x), p_{1,4}(x)\cr \end{aligned} \end{eqnarray}\]

代码

伪代码

  • 由于计算插值点为一向量,为避免过多层循环嵌套,将每个 \(P_{i,j}\) 都改写为向量形式,各元素分别储存多项式在插值点 \(x_0\) 处函数值。
  • 只有每次当一列 \(P_{i,j}\) 计算完后,才能利用迭代公式计算下一列 \(P_{i,j}\) 多项式,因此外层循环为计算每列 \(P_{i,j}\) 多项式。
  • 每列 \(P_{i,j}\) 个数是逐渐减少的,最开始有n个多项式,最终循环只有一个。

可将矩阵P[nRow,nCol]用于存储多项式 \(P_{i,j}(x)\)。其中每行为 \(P_{i,j}(x_k)\) 在 nCol 个插值点\(x_k\)处函数值。每次外层循环 \(P_{i,j}(x)\) 个数减少,此时从最后一行开始舍弃,每次只循环

for irow = 1: (nRow - icol) % 

\(x_i\)与\(x_j\)分别用变量x1与x2代替。迭代公式可表示为

for icol = 1:nRow - 1for irow = 1: (nRow - icol) % x1 = nodes(irow); x2 = nodes(irow + icol);P(irow, :) = ( (x2 - x0).*P(irow, :) + (x0 - x1 ).*P(irow+1, :) )./( x2 - x1 );end% for
end% for

最终完整代码为

function evalPol = f1300000_Neville(x0, nodes, fnodes)
% Implement Neville's algorithm to evaluate interpolation polynomial at x0
% Input:
%   x0  - the point where we want to evaluate the polynomial
%   nodes   - vector containing the interpolation nodes
%   fnodes  - vector containing the values of the function
% Output:
%   evalPol - vector containing the value at x0 of the different
%               the interpolating polynomialsif iscolumn(x0)x0 = x0'; % transfer to row vector
endif isrow(fnodes)fnodes = fnodes';
endnCol = length(x0);
nRow = length(nodes);% P = zeros(nRow, nCol);
P = repmat(fnodes, 1, nCol);for icol = 1:nRow - 1for irow = 1: (nRow - icol) % x1 = nodes(irow); x2 = nodes(irow + icol);P(irow, :) = ( (x2 - x0).*P(irow, :) + (x0 - x1 ).*P(irow+1, :) )./( x2 - x1 );end% for
end% forevalPol = P(1,:);
end

转载于:https://www.cnblogs.com/li12242/p/5047042.html

Neville 插值方法相关推荐

  1. python 数学基础_Python3数学基础 - 随笔分类 - 既生喻何生亮 - 博客园

    本系列主要集中于数学知识点,利用python编程描述以往学过的数学知识. 摘要:Kronecker delta 克罗内克函数 Wiki "维基百科" Kronecker delta ...

  2. 数值分析-多项式插值方法小结

    数值分析-多项式插值方法小结 前言 插值的应用与唯一性 Lagrange插值法和逐次线性插值 代码实现 逐次线性插值 代码实现 逼近复杂函数 Newton插值法 代码实践 差分与等距节点差分插值 代码 ...

  3. 数字图像处理中常用的插值方法

    假设变换后的图像(x,y)处投影大原图像的坐标点(u,v) 图像主要用三种插值方法求得变换后的像素: 1.最邻近元法 这是最简单的一种插值方法,不需要计算,在待求象素的四邻象素中,将距离待求象素最近的 ...

  4. 【声源定位】 球面散乱数据插值方法/似然估计hybrid spherical interpolation/maximum likelihood (SI/ML) 麦克风阵列声源定位

    1.软件版本 MATLAB2021a 2.本算法理论知识点 球面散乱数据插值方法/似然估计SI/ML 麦克风阵列声源定位 3.算法具体理论 这个部分的程序如下所示: 这个部分理论如下所示: 本文最后的 ...

  5. 【6 插值方法】实例实战篇

    背景知识 例1:在1-12的11小时内,每隔1小时测量一次温度,测得的温度依次为:5,8,9,15,25,29,31,30,22,25,27,24.试估计每隔1/10小时的温度值. MATLAB程序: ...

  6. matlab 平滑曲线连接_平滑轨迹插值方法之多项式插值(附代码)

    前言 今天我们来聊聊轨迹插值,在机器人的运动规划和控制领域,参考轨迹的生成是一个历史悠久的问题,已经发展出了一系列的方法.今天我们就来聊一聊轨迹插值领域中最常见的轨迹插值方法:多项式插值. 说明:本文 ...

  7. 插值方法——Lagrange插值公式

    问题 已知f(x)=ex(3x-ex),利用插值节点x0=1.00,x1=1.02,x2=1.04,x3=1.06,构造三次Lagrange插值公式,由此计算f(1.03)的近似值,并给出其实际误差. ...

  8. python等值面图平滑_离散点插值方法、等值线的绘制及平滑技巧

    离散点插值方法.等值线的绘制及平滑技巧 2008-06-10 22:45 由于等值线图看起来非常直观.形象 , 因此在天气预报.气候预测分析等方面用 得非常多 , 已成为预报员不可缺少的工具之一.如各 ...

  9. Python小白的数学建模课-22.插值方法

    Python小白的数学建模课-22.插值方法 插值.拟合.回归和预测,都是数学建模中经常提到的概念,也经常被混淆. 插值,是在离散数据的基础上补插连续函数,使得插值函数通过全部给定的离散数据点,多用于 ...

最新文章

  1. win设置计算机网络,Win10怎么修改网络类型,Win10网络类型怎么设置?
  2. SQL优化—— 优化order by语句 || Filesort 的优化
  3. python解释器下安装z3_再次:在Windows上安装Z3 Python
  4. 发那科pmc地址分配_一台全新的FANUC数控机床,请简述有挡块回参功能的实现步骤?包括PMC的I/O分配、具体参数设定、梯形图程序...
  5. 100万并发连接服务器笔记之1M并发连接目标达成
  6. Kafka版本介绍Version2.4.0
  7. .NET进阶系列之一:C#正则表达式整理备忘
  8. 第一章:Jsp_Servlet基础--尚学堂
  9. 网页跳转代码的三种方法
  10. 关于微信小程序上线流程的简单总结
  11. STM32F030系列 HAL库FLASH读写(当EEPROM用)
  12. linux命令行连接蓝牙键盘
  13. 一个提问答题网站stackoverflow
  14. python库的下载安装_Python库的安装
  15. 长连接心跳问题解决总结
  16. play home android,PlayHome整合版
  17. [ssh]permissions are too open密钥权限过大错误
  18. 帮助文档的使用和制作
  19. 夏商与西周》第四十二章之昭王伐楚(二)
  20. JumpServer国密支持配置

热门文章

  1. Python | threading05 - 使用有界信号量,实现线程间同步
  2. vpc源站保护_污染源自动监控设施运营要求
  3. Qt文档阅读笔记-Broadcast Sender Example解析
  4. 信息安全工程师笔记-网络安全漏洞防护技术原理与应用
  5. Qt文档阅读笔记-QSslSocket中与错误相关的信号
  6. Qt学习笔记-Qt程序切换皮肤
  7. px4 uavcan linux,PX4开发指南-12.2.2.UAVCAN固件升级
  8. android 抓log暗码,「有用功」强大的安卓暗码命令 你都知道吗?
  9. 映射到另一台计算机,远程服务器硬盘映射到本地电脑
  10. 完全背包——方案个数 UVA11137 Ingenuous Cubrency