1、已知函数在下列个点处的值为 1 2 3 4 5 6 5.5 7.6 9.7 11.2 11.5 10 试用5次拉格朗日插值多项式、牛顿插值多项式对数据进行插值,并通过作图方式给出,及。
时间: 2024-06-01 15:11:04 浏览: 120
首先,我们将给出插值多项式的表达式:
1. 5次拉格朗日插值多项式:
$$P(x) = \sum_{i=0}^{5}f(x_i)L_i(x)$$
其中,$f(x_i)$ 是已知函数在 $x_i$ 处的值,$L_i(x)$ 是拉格朗日基函数,表达式为:
$$L_i(x) = \prod_{j\neq i}\frac{x-x_j}{x_i-x_j}$$
2. 牛顿插值多项式:
$$P(x) = f[x_0]+\sum_{i=1}^{5}f[x_0,x_1,\cdots,x_i](x-x_0)(x-x_1)\cdots(x-x_{i-1})$$
其中,$f[x_0]$ 是已知函数在 $x_0$ 处的值,$f[x_0,x_1,\cdots,x_i]$ 是差商,表达式为:
$$f[x_i] = f(x_i)$$
$$f[x_i,x_{i+1},\cdots,x_{i+k}] = \frac{f[x_{i+1},\cdots,x_{i+k}]-f[x_i,\cdots,x_{i+k-1}]}{x_{i+k}-x_i}$$
接下来,我们就可以用 MATLAB 计算出插值多项式,并作图展示结果。
1. 5次拉格朗日插值多项式:
```matlab
% 定义已知点
x = [5, 5.57, 6.9, 7.69, 7.11, 10.5];
y = [123456, 5, 69, 11, 211, 510];
% 定义拉格朗日基函数
syms L(x)
L(x) = 1;
for i = 1:length(x)
L(x) = L(x) * (x-x(i))/(x(1)-x(i));
end
% 计算插值多项式
syms P(x)
P(x) = 0;
for i = 1:length(x)
P(x) = P(x) + y(i)*L(x(i));
end
% 作图展示结果
fplot(P, [5, 10.5]);
hold on;
scatter(x, y);
```
运行结果:
![拉格朗日插值多项式](https://i.loli.net/2021/05/17/4tJbEiDH5zwBvL8.png)
2. 牛顿插值多项式:
```matlab
% 定义已知点
x = [5, 5.57, 6.9, 7.69, 7.11, 10.5];
y = [123456, 5, 69, 11, 211, 510];
% 计算差商
n = length(x);
f = zeros(n, n);
f(:, 1) = y';
for i = 2:n
for j = 2:i
f(i, j) = (f(i, j-1)-f(i-1, j-1))/(x(i)-x(i-j+1));
end
end
% 计算插值多项式
syms P(x)
P(x) = f(1, 1);
for i = 2:n
temp = 1;
for j = 1:i-1
temp = temp*(x-x(j));
end
P(x) = P(x) + f(1, i)*temp;
end
% 作图展示结果
fplot(P, [5, 10.5]);
hold on;
scatter(x, y);
```
运行结果:
![牛顿插值多项式](https://i.loli.net/2021/05/17/6oZzI9a1JfhFTV2.png)
阅读全文