第一类:令插值节点为等距节点−5,−4,−3,−2,−1,0,1,2,3,4,5; 第二类:令插值节点为区间[−5,5]上的11次切比雪夫多项式的零点.
时间: 2023-08-19 07:25:19 浏览: 166
好的,按照您的要求,我可以给出一个示例代码来演示如何使用myLagrange和myHermite函数进行插值,并计算平均误差。以下是示例代码:
```
% 定义插值点
xi = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]; % 等距插值点
yi = 5*cos((2*(1:11)-1)/(2*11)*pi); % Chebyshev插值点
% 定义要插值的函数
f = @(x) sin(x);
% 使用myLagrange和myHermite函数进行插值
x = linspace(-5, 5, 100); % 定义插值点
y = f(x); % 计算原始函数的值
y1 = myLagrange(xi, f(xi), x); % 使用myLagrange进行插值
y2 = myHermite(yi, f(yi), x); % 使用myHermite进行插值
% 绘制插值结果和原始函数的图像
figure;
plot(x, y, 'k-', x, y1, 'r--', x, y2, 'b-.');
legend('原函数', 'Lagrange插值', 'Hermite插值');
xlabel('x');
ylabel('y');
title('插值结果');
% 计算误差
err1 = abs(y1 - y); % 计算Lagrange插值的误差
err2 = abs(y2 - y); % 计算Hermite插值的误差
mean_err1 = mean(err1); % 计算平均误差
mean_err2 = mean(err2); % 计算平均误差
disp(['Lagrange插值的平均误差:', num2str(mean_err1)]);
disp(['Hermite插值的平均误差:', num2str(mean_err2)]);
```
在上述代码中,我定义了两类插值点:等距插值点和Chebyshev插值点。我还定义了要插值的函数f(x)为sin(x)。
然后,我使用myLagrange和myHermite函数分别对函数进行插值,并绘制插值结果和原始函数的图像。
最后,我计算了Lagrange插值和Hermite插值的平均误差,并输出结果。您可以根据实际情况修改插值点和要插值的函数,并分析误差的大小和分布情况。
阅读全文