切比雪夫插值
创作时间:
作者:
@小白创作中心
切比雪夫插值
引用
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
热门推荐
田湾村:中国传统村落的魅力
主动式AI(代理式)与生成式AI的关键差异与影响
AI科研能力超过人类了吗(o1 vs cladue科研挑战)
卧室养这些植物,让你一夜好眠!
琴叶榕:卧室植物新宠儿
卧室养君子兰和龟背竹助眠效果佳!
卧室植物摆放指南:绿萝、吊兰、发财树
什么中药清热解毒效果最好
二战时期瑞士的国土防御策略:解析其不怕报复的原因
头油、头痒、头屑多?皮肤科医生来支招
头皮屑问题:从医学角度探讨解决方案
西田湾村:湖南常德的乡村文化生活
喀什古城:丝路明珠的文化传承与现代新生
打卡喀什博物馆:穿越千年的文化之旅
这种苦凉性野菜,清热又利湿,凉拌、包饺子都很美味,3月吃正合适
霜降过后,阿克苏苹果迎来丰收季,金融政策助力果农增收
阿克苏苹果:如何打造全球知名品牌?
石雕观音菩萨像摆放在家里什么位置好?
简单黑白就是美!2024最新时尚“Clean Fit”5大穿搭重点及实际范例
医生为什么开多种心脏检查? --科普之心脏疾病不同诊断方法
朱迅回归春晚,拉萨分会场成最大亮点
冬天防病从汤开始,推荐4道滋补汤品,暖胃又营养,健康守护每一天
煲仔饭,让广东小孩胆寒
新疆春季校园防疫指南出炉!
乌鲁木齐市2025年中小学寒假时间安排及安全教育指南
补肺汤的配方介绍
约翰·拉贝:纳粹身份下的英雄事迹
托马斯·拉贝新书发布:传承祖父的人道主义精神
从拯救南京到子孙获援:约翰·拉贝家族的中德情缘
二战时瑞士仅凭中立就能免遭德国入侵吗?真正原因只有一点