切比雪夫插值
创作时间:
2025-03-17 06:49:01
作者:
@小白创作中心
切比雪夫插值
引用
CSDN
1.
https://m.blog.csdn.net/u011572784/article/details/145084092
切比雪夫插值是一种基于切比雪夫节点的多项式插值方法,其优势是减少插值误差(特别是龙格现象:表现为高维插值时在边缘处插值误差骤增)。本文对其基本操作进行说明。
1. 切比雪夫节点
切比雪夫插值的核心是使用切比雪夫节点作为插值点。切比雪夫节点是切比雪夫多项式的零点,在区间[-1,1]上定义为:
$$
x_k=cos(\frac{(2k+1)\pi}{2n}),k=0,2,...,n-1 \tag{1}
$$
其中n是插值点数。
若将插值区间由[-1,1]变化为[a,b],则切比雪夫节点可以表示为
$$
x_k=\frac{a+b}{2}+\frac{b-a}{2}cos(\frac{(2k+1)\pi}{2n}),k=0,2,...,n-1 \tag{2}
$$
2. 切比雪夫插值步骤
切比雪夫插值包含以下步骤:
(1)计算切比雪夫节点
根据插值区间[a,b]和插值个数n,根据(2)式计算切比雪夫节点$x_k$;
(2)计算函数值
在切比雪夫节点处计算目标函数$f(x)$的值,得到数据点$(x_k,f(x_k))$;
(3)构建插值多项式
使用拉格朗日插值法或牛顿插值法,基于切比雪夫数据点$(x_k,f(x_k))$,构建插值多项式$P(x)$;
(4)插值结果验证
比较其他插值点选取方式和切比雪夫插值的结果差异。
3. 仿真验证
假设我们需要在区间[-5,5]上对函数$f(x)=\frac{1}{1+25x^2}$进行插值,插值算法为拉格朗日插值(原理见《拉格朗日插值原理推导》)。按均匀点和切比雪夫节点分别进行插值,结果如下(代码见附录):
图1. 线性插值示意图
从上图可见,采用均匀分布的点进行插值,在两端会有明显的震荡,插值误差很大(称为龙格现象),而采用切比雪夫节点进行插值,则没有该现象。切比雪夫节点抑制龙格现象的原因主要为:
- 切比雪夫节点在区间端点附近更加密集,这种分布方式能够有效抑制插值多项式在区间端点附近的振荡。相比之下,均匀分布的节点在区间端点附近较为稀疏,容易导致插值多项式在这些区域产生剧烈振荡。
- 切比雪夫节点的分布是基于最小最大准则(Minimax Criterion)的,即通过选择节点位置,使得插值多项式与目标函数之间的最大误差最小化。这种优化方式能够确保插值多项式在整个区间内均匀逼近目标函数,而不会在某些区域(如区间端点)产生过大的误差。
【附录】:仿真代码
clc;close all;clear;
a=-5;
b=5;
interp_x = linspace(a,b,100); % 期望的插值坐标
ref_y=test_func(interp_x); % 真实函数值
n=20; % 已知插值点数
k=0:n-1;
uniform_x=linspace(a,b,n);
uniform_y=test_func(uniform_x); % 等间隔分布的已知插值点
chebyshev_x=0.5*(a+b)+0.5*(b-a)*cos((2*k+1)*pi/(2*n));
chebyshev_y=test_func(chebyshev_x); % 切比雪夫插值点
uniform_interp_y=lagrange_interpolation(uniform_x, uniform_y, interp_x);
chebyshev_interp_y=lagrange_interpolation(chebyshev_x, chebyshev_y, interp_x);
figure;
hold on;
plot(interp_x,ref_y, 'r');
plot(uniform_x,uniform_y, 'bo');
plot(interp_x,uniform_interp_y, 'b');
plot(chebyshev_x,chebyshev_y, 'ko');
plot(interp_x,chebyshev_interp_y, 'k');
legend('ideal', 'uniform points', 'uniform interp.', 'chebyshev points', 'chebyshev interp.');
box on;
grid on;
function y = test_func(x)
% 函数说明:用于测试的目标函数
% x:横坐标
% y:函数返回值
y=1./(1+25*x.^2);
end
function P = lagrange_interpolation(x, y, xi)
% x: 已知数据点的 x 坐标
% y: 已知数据点的 y 坐标
% xi: 需要插值的点
% P: 插值结果
n = length(x);
P = zeros(size(xi));
for k = 1:n
L = ones(size(xi));
for i = 1:n
if i ~= k
L = L .* (xi - x(i)) / (x(k) - x(i));
end
end
P = P + y(k) * L;
end
end
热门推荐
警权信任危机:舆论监督下的警察执法困境
法警如何应对庭审中的心理挑战?
正月为什么不能剪头发?正月有哪些事情不能做?
景泰蓝元素如何引领时尚潮流?
修真界的新家:嬴政与扶苏的温情之旅
从嬴政到扶苏:秦朝父子关系的历史解读
克服心理障碍,理性投资:股市投资心理指南
去痣药膏真的有用吗?效果与风险全解析
科学护肤步骤大揭秘
“痣在必除”?那么,是切痣还是点痣?
商丘考古新发现:燧人氏的真实存在揭秘!
月里嫦娥带你了解一百年前的化妆品是什么样子的?
旅行者一号:NASA的宇宙探索传奇
旅行者1号:NASA的星际探险传奇
旅行者1号:47年太空之旅再遇技术挑战,NASA成功重启老旧推进器
旅行者1号恢复科学数据传输,继续探索星际空间
硅谷跳槽文化:职业发展的新机遇?
以人为本:员工离职全流程建议
长海之夜:探索上海最好的夜市和美食
书评丨永生是一场漫长的死亡——读李衔夏长篇科幻小说《无无》
手机也能拍绚丽烟花?关键在这1步,记得收藏!
春季驾车必备:车内除静电神器大揭秘!
你会给食材焯水吗?4个关于食材焯水的问题
2025泰晤士全球大学就业力排名发布!这些院校毕业生受雇主偏爱!
UCL逆袭?英国高校榜单大起底!
从排名到就业:伦敦大学学院(UCL)国内认可度全面解析!
脂肪不是“坏东西”?减肥须正念+科学
健康饮食指南:如何制定合理的膳食计划?
香港教大硕士申请攻略,你准备好了吗?
雅思7分,直通香港教大硕士!