Neville 插值方法
简介
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 插值方法相关推荐
- python 数学基础_Python3数学基础 - 随笔分类 - 既生喻何生亮 - 博客园
本系列主要集中于数学知识点,利用python编程描述以往学过的数学知识. 摘要:Kronecker delta 克罗内克函数 Wiki "维基百科" Kronecker delta ...
- 数值分析-多项式插值方法小结
数值分析-多项式插值方法小结 前言 插值的应用与唯一性 Lagrange插值法和逐次线性插值 代码实现 逐次线性插值 代码实现 逼近复杂函数 Newton插值法 代码实践 差分与等距节点差分插值 代码 ...
- 数字图像处理中常用的插值方法
假设变换后的图像(x,y)处投影大原图像的坐标点(u,v) 图像主要用三种插值方法求得变换后的像素: 1.最邻近元法 这是最简单的一种插值方法,不需要计算,在待求象素的四邻象素中,将距离待求象素最近的 ...
- 【声源定位】 球面散乱数据插值方法/似然估计hybrid spherical interpolation/maximum likelihood (SI/ML) 麦克风阵列声源定位
1.软件版本 MATLAB2021a 2.本算法理论知识点 球面散乱数据插值方法/似然估计SI/ML 麦克风阵列声源定位 3.算法具体理论 这个部分的程序如下所示: 这个部分理论如下所示: 本文最后的 ...
- 【6 插值方法】实例实战篇
背景知识 例1:在1-12的11小时内,每隔1小时测量一次温度,测得的温度依次为:5,8,9,15,25,29,31,30,22,25,27,24.试估计每隔1/10小时的温度值. MATLAB程序: ...
- matlab 平滑曲线连接_平滑轨迹插值方法之多项式插值(附代码)
前言 今天我们来聊聊轨迹插值,在机器人的运动规划和控制领域,参考轨迹的生成是一个历史悠久的问题,已经发展出了一系列的方法.今天我们就来聊一聊轨迹插值领域中最常见的轨迹插值方法:多项式插值. 说明:本文 ...
- 插值方法——Lagrange插值公式
问题 已知f(x)=ex(3x-ex),利用插值节点x0=1.00,x1=1.02,x2=1.04,x3=1.06,构造三次Lagrange插值公式,由此计算f(1.03)的近似值,并给出其实际误差. ...
- python等值面图平滑_离散点插值方法、等值线的绘制及平滑技巧
离散点插值方法.等值线的绘制及平滑技巧 2008-06-10 22:45 由于等值线图看起来非常直观.形象 , 因此在天气预报.气候预测分析等方面用 得非常多 , 已成为预报员不可缺少的工具之一.如各 ...
- Python小白的数学建模课-22.插值方法
Python小白的数学建模课-22.插值方法 插值.拟合.回归和预测,都是数学建模中经常提到的概念,也经常被混淆. 插值,是在离散数据的基础上补插连续函数,使得插值函数通过全部给定的离散数据点,多用于 ...
最新文章
- win设置计算机网络,Win10怎么修改网络类型,Win10网络类型怎么设置?
- SQL优化—— 优化order by语句 || Filesort 的优化
- python解释器下安装z3_再次:在Windows上安装Z3 Python
- 发那科pmc地址分配_一台全新的FANUC数控机床,请简述有挡块回参功能的实现步骤?包括PMC的I/O分配、具体参数设定、梯形图程序...
- 100万并发连接服务器笔记之1M并发连接目标达成
- Kafka版本介绍Version2.4.0
- .NET进阶系列之一:C#正则表达式整理备忘
- 第一章:Jsp_Servlet基础--尚学堂
- 网页跳转代码的三种方法
- 关于微信小程序上线流程的简单总结
- STM32F030系列 HAL库FLASH读写(当EEPROM用)
- linux命令行连接蓝牙键盘
- 一个提问答题网站stackoverflow
- python库的下载安装_Python库的安装
- 长连接心跳问题解决总结
- play home android,PlayHome整合版
- [ssh]permissions are too open密钥权限过大错误
- 帮助文档的使用和制作
- 夏商与西周》第四十二章之昭王伐楚(二)
- JumpServer国密支持配置
热门文章
- Python | threading05 - 使用有界信号量,实现线程间同步
- vpc源站保护_污染源自动监控设施运营要求
- Qt文档阅读笔记-Broadcast Sender Example解析
- 信息安全工程师笔记-网络安全漏洞防护技术原理与应用
- Qt文档阅读笔记-QSslSocket中与错误相关的信号
- Qt学习笔记-Qt程序切换皮肤
- px4 uavcan linux,PX4开发指南-12.2.2.UAVCAN固件升级
- android 抓log暗码,「有用功」强大的安卓暗码命令 你都知道吗?
- 映射到另一台计算机,远程服务器硬盘映射到本地电脑
- 完全背包——方案个数 UVA11137 Ingenuous Cubrency