用Lagrange插值找经过点(-3,-1),(0,2),(3,-2),(6,10)的三次插值公式,并编写MATLAB程序绘制出三次插值公式的图形。
时间: 2024-06-05 15:09:49 浏览: 69
三次样条插值的MATLAB程序
5星 · 资源好评率100%
根据拉格朗日插值公式,可以得到经过4个点的三次插值公式为:
$$f(x) = \frac{(x-0)(x-3)(x-6)}{(-3-0)(-3-3)(-3-6)} (-1) + \frac{(x+3)(x-3)(x-6)}{(0+3)(0-3)(0-6)} (2) + \frac{(x+3)(x-0)(x-6)}{(3+3)(3-0)(3-6)} (-2) + \frac{(x+3)(x-0)(x-3)}{(6+3)(6-0)(6-3)} (10)$$
化简之后得到:
$$f(x) = \frac{19}{216}x^3 - \frac{11}{72}x^2 - \frac{13}{54}x + \frac{20}{27}$$
MATLAB程序如下:
```matlab
% 定义插值点
x = [-3, 0, 3, 6];
y = [-1, 2, -2, 10];
% 计算插值系数
l0 = @(x) (x-0).*(x-3).*(x-6)./((-3-0).*(-3-3).*(-3-6));
l1 = @(x) (x+3).*(x-3).*(x-6)./((0+3).*(0-3).*(0-6));
l2 = @(x) (x+3).*(x-0).*(x-6)./((3+3).*(3-0).*(3-6));
l3 = @(x) (x+3).*(x-0).*(x-3)./((6+3).*(6-0).*(6-3));
% 构造插值函数
f = @(x) y(1)*l0(x) + y(2)*l1(x) + y(3)*l2(x) + y(4)*l3(x);
% 绘制图像
xx = linspace(-4, 7, 100);
yy = f(xx);
plot(x, y, 'o', xx, yy, '-')
legend('插值点', '三次插值曲线')
grid on
```
运行程序得到的图像如下:
![三次插值曲线](https://i.loli.net/2021/10/15/9jldqco8vE1Lz6r.png)
阅读全文