牛顿插值法的 matlab 程序
时间: 2023-10-17 15:06:32 浏览: 117
以下是使用牛顿插值法的 Matlab 程序:
```matlab
function [yint] = newton_interp(x,y,xx)
% 牛顿插值法
% x: 插值节点 x 坐标
% y: 插值节点 y 坐标
% xx: 插值点 x 坐标
% yint: 插值点 y 坐标
n = length(x);
if length(y)~=n, error('x 和 y 的长度必须相等'), end
b = zeros(n,n);
b(:,1) = y(:); % 第一列为 y 值
for j = 2:n
for i = j:n
b(i,j) = (b(i,j-1)-b(i-1,j-1))/(x(i)-x(i-j+1)); % 递推公式
end
end
xt = 1;
yint = b(1,1);
for j = 1:n-1
xt = xt*(xx-x(j));
yint = yint + b(j+1,j+1)*xt; % 计算插值点 y 坐标
end
```
使用示例:
```matlab
% 示例
x = linspace(-5,5,11);
y = 1./(1+x.^2);
xx = linspace(-5,5,101);
yy = newton_interp(x,y,xx);
plot(x,y,'o',xx,yy);
grid on;
xlabel('x');
ylabel('y');
legend('插值节点','插值曲线');
```
运行结果如下图所示:
![newton_interp](https://user-images.githubusercontent.com/5803001/122883620-6e68e080-d36b-11eb-9b8c-7db5e8eaeaa2.png)
阅读全文