对1/(1+x^2)做朗格朗日5次多项式、10次多项式的MATLAB代码
时间: 2024-03-18 10:38:47 浏览: 11
对于函数 $f(x) = 1/(1+x^2)$,其在区间 $[-5, 5]$ 上的朗格朗日插值多项式的 MATLAB 代码可以如下实现:
```matlab
% 朗格朗日插值多项式
% f(x) = 1 / (1 + x^2)
% 函数定义
f = @(x) 1 ./ (1 + x.^2);
% 区间定义
a = -5;
b = 5;
% 生成插值点
n1 = 5;
x1 = linspace(a, b, n1 + 1);
y1 = f(x1);
n2 = 10;
x2 = linspace(a, b, n2 + 1);
y2 = f(x2);
% 计算逼近值
x = linspace(a, b, 100);
y1_interp = LagrangeInterp(x1, y1, n1, x);
y2_interp = LagrangeInterp(x2, y2, n2, x);
% 绘图
plot(x, f(x), 'r', x, y1_interp, 'b', x, y2_interp, 'm');
legend('f(x)', '5次朗格朗日插值多项式', '10次朗格朗日插值多项式');
```
其中,生成插值点的方法是通过使用 `linspace` 函数在区间 $[-5, 5]$ 上等间距地取 $n+1$ 个点,然后计算这些点在函数 $f(x)$ 上的函数值。最后,调用 `LagrangeInterp` 函数计算多项式的逼近值,然后使用 `plot` 函数进行绘图。
需要注意的是,当插值点数量较多时,计算多项式的逼近值可能会比较耗时。因此,在实际应用中需要根据具体情况进行调整。