lagrange插值法matlab代码
时间: 2023-10-18 14:04:40 浏览: 42
以下是Lagrange插值法的Matlab代码:
```matlab
function y_int = lagrange(x, y, x_int)
% x和y是已知数据点,x_int是需要插值的点
% 返回插值点的函数值y_int
n = length(x);
L = ones(n,length(x_int));
% 计算Lagrange插值的基函数
for i = 1:n
for j = 1:n
if i ~= j
L(i,:) = L(i,:).*(x_int-x(j))/(x(i)-x(j));
end
end
end
% 计算插值点的函数值
y_int = 0;
for i=1:n
y_int = y_int + y(i)*L(i,:);
end
end
```
使用方法:
假设我们要对数据点(1,4), (2,3), (3,5), (4,1)进行插值,并计算x=2.5时的函数值。
```matlab
x = [1, 2, 3, 4];
y = [4, 3, 5, 1];
x_int = 2.5;
y_int = lagrange(x, y, x_int);
disp(y_int);
```
输出结果为2.75,即x=2.5时的插值函数值。
相关问题
lagrange插值法作图matlab
以下是一个使用 MATLAB 绘制拉格朗日插值多项式函数的示例代码:
```matlab
% 指定插值节点 x 和对应的函数值 y
x = [0 1 2 4 5 6];
y = [1 1.5 2.5 7 9 15];
% 指定插值区间并生成插值点
xi = linspace(0, 6, 101);
% 计算拉格朗日插值多项式
n = length(x);
L = ones(n, length(xi));
for j = 1:n
for k = 1:n
if k ~= j
L(j,:) = L(j,:) .* (xi - x(k)) / (x(j) - x(k));
end
end
end
yi = 0;
for j = 1:n
yi = yi + y(j) * L(j,:);
end
% 绘制原函数和插值函数的图像
plot(x, y, 'o', xi, yi);
legend('原函数', '插值函数');
```
这个代码将生成一个包含原函数和插值函数的图像,其中原函数用圆点标记,插值函数用实线表示。可以根据需要调整插值节点和插值区间来得到不同的插值结果。
lagrange插值matlab程序
下面是一个使用拉格朗日插值法进行插值的 MATLAB 代码示例:
```matlab
function y_interp = lagrange_interp(x,y,x_interp)
% 拉格朗日插值
% x: 已知点的横坐标
% y: 已知点的纵坐标
% x_interp: 插值点的横坐标
% y_interp: 插值点的纵坐标
n = length(x);
y_interp = zeros(size(x_interp));
for i = 1:length(x_interp)
% 计算每个插值点的函数值
L = ones(n,1);
for j = 1:n
for k = 1:n
if j ~= k
L(j) = L(j) * (x_interp(i) - x(k)) / (x(j) - x(k));
end
end
end
y_interp(i) = sum(y.*L);
end
end
```
这个代码通过计算拉格朗日插值多项式的系数,然后将插值点代入多项式中计算出插值点的函数值。