在区间上分别取等分,用等距节点对龙格函数作多项式插值,分别构造次插值多项式。对每个,分别画出插值函数并与真实函数做对比。
时间: 2024-03-23 08:43:19 浏览: 103
changweifenfangcheng.rar_B样条插值_二次样条插值_双三次B样条_有理b样条_牛顿差分插值
首先,需要构造龙格函数。龙格函数是以龙格(Runge)命名的,它是一个具有极大振荡的函数,其表达式为:
f(x) = 1 / (1 + 25x^2)
接下来,我们需要在区间[-1, 1]上等分取n个节点,构造等距节点。可以使用linspace函数生成这些节点:
```
n = 10; % 节点数量
x = linspace(-1, 1, n); % 均匀分布的节点
y = 1 ./ (1 + 25 * x.^2); % 对应的函数值
```
接下来,使用polyfit函数进行插值:
```
p = polyfit(x, y, n-1); % 多项式次数为n-1
```
然后,使用polyval函数计算插值多项式在一定区间上的值:
```
xx = linspace(-1, 1, 1000); % 用于绘图的点
yy = polyval(p, xx); % 插值多项式在xx上的值
```
最后,使用plot函数将插值函数和真实函数绘制在同一张图中:
```
% 绘制插值函数和真实函数
plot(xx, yy, '-r', xx, 1 ./ (1 + 25 * xx.^2), '-b')
xlabel('x')
ylabel('y')
legend('插值函数', '真实函数')
```
完整的代码如下:
```
n = 10; % 节点数量
x = linspace(-1, 1, n); % 均匀分布的节点
y = 1 ./ (1 + 25 * x.^2); % 对应的函数值
p = polyfit(x, y, n-1); % 多项式次数为n-1
xx = linspace(-1, 1, 1000); % 用于绘图的点
yy = polyval(p, xx); % 插值多项式在xx上的值
% 绘制插值函数和真实函数
plot(xx, yy, '-r', xx, 1 ./ (1 + 25 * xx.^2), '-b')
xlabel('x')
ylabel('y')
legend('插值函数', '真实函数')
```
运行后,即可得到插值函数和真实函数的图像。重复以上步骤,使用不同数量的节点进行插值,即可得到不同次数的插值多项式。
阅读全文