写一个切比雪夫多项式插值的Matlab代码
时间: 2023-05-31 21:01:30 浏览: 155
C 代码 确定切比雪夫多项式的组合 插值一组数据,使 p(x(i)) = y(i).rar
function [p] = chebyshev_interpolation(x, y, n)
% 输入:
% x:插值节点
% y:插值节点对应的函数值
% n:多项式次数
% 输出:
% p:插值多项式
%
% 切比雪夫多项式插值
%
% 作者:zbl
% 日期:2021.07.01
% 计算切比雪夫节点
x_chebyshev = cos(pi * (2 * (1:n) - 1) / (2 * n));
% 计算切比雪夫多项式值
T = zeros(n, n);
T(:, 1) = 1;
T(:, 2) = x_chebyshev';
for i = 3:n
T(:, i) = 2 * x_chebyshev' .* T(:, i-1) - T(:, i-2);
end
% 计算系数
c = T \ y';
% 计算插值多项式
p = c(n) * ones(size(x));
for i = n-1:-1:1
p = c(i) + p .* x;
end
% 绘制图像
figure;
xx = linspace(-1, 1, 1000);
yy = polyval(p, xx);
plot(xx, yy, 'b-', x, y, 'ro');
xlabel('x');
ylabel('y');
title('Chebyshev Interpolation');
legend('Interpolation', 'Data Points');
grid on;
end
阅读全文