编写MATLAB程序, 利用函数 f(x) = \frac{1}{1+25x^2} 生成区间[-1,1]上的31个等距点 (x_i, f(x_i)),利用Lagrange插值法生成插值函数,观察结果。
时间: 2024-12-23 14:27:35 浏览: 4
在MATLAB中,你可以使用`linspace`函数来创建等间距的点数组,然后计算`f(x)`的值,接着使用`lagrange`函数进行拉格朗日插值。以下是一段简单的示例代码:
```matlab
% 定义函数
f = @(x) 1 ./ (1 + 25 * x.^2);
% 创建x范围 [-1, 1, 31);
% 计算f(x) 的值
y = f(x);
% 使用lagrange函数进行插值
p = lagrange(x', y); % 注意转置x,因为lagrange函数期望列向量
% 创建一个新的x值网格用于插值
xi = linspace(min(x), max(x), 1000); % 增加更多插值点以观察更细致的结果
% 计算插值后的y值
yi = p(xi);
% 绘制原始数据和插值曲线
plot(x, y, 'o', 'MarkerSize', 8, 'LineWidth', 1.5, 'DisplayName', 'Data Points');
hold on;
plot(xi, yi, 'r-', 'LineWidth', 2, 'DisplayName', 'Interpolated Curve');
legend('show');
xlabel('x');
ylabel('f(x)');
title('Lagrange Interpolation of f(x) = 1/(1+25x^2)');
grid on;
% 显示结果
disp('Interpolation completed.');
```
这段代码首先定义了函数`f(x)`,然后在指定的区间上创建等距点,计算函数值,再使用拉格朗日插值生成插值多项式,最后绘制原始数据点和插值函数。运行此代码后,你应该能看到原始数据点和拉格朗日插值曲线。
阅读全文