写一段matlab代码来实现:设f(x)=1/(1+25x^2),-1<=x<=1,取插值步长为0.2。求出10次Lagrange差值多项式,画出图像
时间: 2024-03-21 22:16:27 浏览: 60
使用有限差分法的函数的二阶导数:使用有限差分法的函数的二阶导数-matlab开发
以下是实现代码:
```
% 定义函数
f = @(x) 1./(1+25.*x.^2);
% 定义插值步长
h = 0.2;
% 定义插值节点
x = (-1:h:1);
% 定义插值点
xi = (-1:0.01:1);
% 计算Lagrange差值多项式
L = zeros(length(x), length(xi));
for k = 1:length(x)
L(k,:) = prod(bsxfun(@minus, xi(:), x([1:k-1 k+1:end])), 2)./prod(x(k)-x([1:k-1 k+1:end]));
end
p = f(x) * L;
% 绘图
plot(xi, f(xi), 'b-', xi, p, 'r--');
legend('原函数', 'Lagrange差值多项式');
title('10次Lagrange差值多项式');
xlabel('x');
ylabel('y');
```
运行代码后,将会绘制出原函数和10次Lagrange差值多项式的图像。
阅读全文