MATLAB实现牛顿插值

    牛顿插值法的原理,在维基百科上不太全面,具体可以参考这篇文章。同样贴出,楼主作为初学者认为好理解的代码。

function p=Newton1(x1,y,x2)
%p为多项式估计出的插值
syms x
n = length(x1);
%差商的求法

for i=2:n
   f1(i,1)=(y(i)-y(i-1))/(x1(i)-x1(i-1));
end

for i=2:n
    for j=i+1:n
       f1(j,i)=(f1(j,i-1)-f1(j-1,i-1))/(x1(j)-x1(j-i));
   end
end
f1=[y‘,f1]%  输出带0阶差商的差商表格

%Newton插值函数
Newton=f1(1,1);
for i=2:n
    tt=1;
    for j=1:i-1
        tt=tt*(x-x1(j));
    end
    Newton=Newton+f1(i,i)*tt;
end
fprintf(‘Newton插值函数为\n‘)
expand(Newton)     % 将连乘多项式合并展开
x = x2;
p = eval(Newton);   % 代入值计算
%fprintf(‘Newton插值函数在所求点x2的函数值为\n‘)
%p

  

时间: 2024-08-10 14:58:25

MATLAB实现牛顿插值的相关文章

【数值分析】拉格朗日插值与牛顿插值

在工程应用和科学研究中,经常要研究变量之间的关系y=f(x).但对于函数f(x),常常得不到一个具体的解析表达式,它可能是通过观测或实验得到的一组数据(x,f(x)),x为一向量;或则是解析表达式非常复杂,不便于计算和使用.因此我们需要寻找一个计算比较简单的函数S(x)近似代替f(x),并使得S(x)=f(x),这种方法就称为插值法. 常用的插值法有: 一维插值法:拉格朗日插值.牛顿插值.分段低次插值.埃尔米特插值.样条插值. 二维插值法:双线性插值.双二次插值. 拉格朗日插值法 已知函数f(x

牛顿插值求解多项式

#include <iostream> using namespace std; //牛顿插值求解多项式 double * xs; //all input x double * ys; //all input y int n; //size //1 2 3 4 //0 -5 -6 3 //1.5 //-2.625 void init() { cout << "please input n " << endl; cin >> n; xs =

Matlab随笔之插值与拟合(上)

1.拉格朗日插值 新建如下函数: function y=lagrange(x0,y0,x) %拉格朗日插值函数 %n 个节点数据以数组 x0, y0 输入(注意 Matlat 的数组下标从1开始), %m 个插值点以数组 x 输入,输出数组 y 为 m 个插值 n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end

【matlab】 拉格朗日插值

第一个函数  "lagrange1.m" 输入:X Y 与点x0 输出:插值函数对应函数值 y0 function y = lagrange1(X,Y,x0) n = length(X); m = length(x0); for i = 1:m z = x0(i); s = 0.0; for k = 1:n; p = 1.0; for j = 1:n if j~=k p = p*(z - X(j))/(X(k)-X(j)); end end s = p * Y(k) + s; end

[数学建模(六)]使用MATLAB实现插值

常用的插值:拉格朗日多项式插值.牛顿插值.分段线性插值.Hermite 插值和三次样条插值. 1.拉格朗日插值法 function y=lagrange(x0,y0,x); n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end 测试: >> x0=

建模算法(八)&mdash;&mdash;插值与拟合

插值:求过已知有限个数据点的近似函数 拟合:已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义下在这些点的误差最小 (一)插值方法 一.拉格朗日多项式插值 1.插值多项式 就是做出一个多项式函数,经过给出的n个节点,并尽可能的接近原函数,将点带入多项式函数得到一个线性方程组 当系数矩阵满秩时,有唯一解.而,系数矩阵的行列式为 这是一个范德蒙德行列式,只要各个节点不同时,行列式就不为0,因此可得,一定能够解出系数方程 还有些指标 2.拉格朗日插值多项式 3.MATLAB实现 fun

matlab 计算方法的总结

此文章是我的大学课程<计算方法>的总结,所选用的代码是matlab的形式,因为内容都是个人的总结,大部分都是只是一个函数+事例搞定..所以要问我基础的东西其实我也不是很懂.. 所以下面这文章不讲理论,,只讲函数怎么用..能力有限哈.. 目录 一元线性线性方程的求解 什么是一元线性方程,什么是一元非线性方程? 二分法 牛顿法 弦截法 线性方程的计算方法 相关命令的基础知识 高斯消去法 LT分解 插值法 线性插值 拉格朗日插值 牛顿插值 样条插值 其他命令 数值积分 牛顿-柯西公式 数值积分命令

插值相关总结

插值的通俗解释就是一种用一些已知的数据去预测想要的数据的方法. 多项式插值 多项式插值是最常见的一种函数插值(插值函数为多项式). $${p_n}(x) = {a_0} + {a_1}x + {a_2}{x^2} +  \cdots  + {a_n}{x^n}$$ 从几何上看可以理解为:已知平面上n+1个不同点,要寻找一条n次插值多项式函数$p(x)$通过曲线$f(x)$上已知的这n+1个点.使$p(x)$接近$f(x)$. 而将n个点代入多项式函数,则可用方程组表示,即 $$\left\{\b

插值与拟合

1.插值 -->求过已知有限个数据点的近似函数 1)拉格朗日多项式插值 -->n个插值点不同时确定了一个唯一的n次多项式 构造n次拉格朗日插值多项式(不使用解方程n个约束来求解待定系数) 2)牛顿插值 使用差商概念来构造牛顿插值公式(计算量小,余项与拉格朗日余项相等),当节点之差为常数时,使用差分来代替差商构造牛顿向前插值公式 3)分段线性插值 -->高次插值存在震荡缺陷,采用低次分段函数(线性函数) y=interp1(x0,y0,x,'method') -->method可取n