ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【计算方法数值分析】matlab插值问题,拉格朗日插值、牛顿差值实现及对比

2021-05-19 22:33:12  阅读:264  来源: 互联网

标签:拉格朗 end 插值 牛顿 插值法 matlab x0


【计算方法数值分析】插值问题

在这里插入图片描述
1、 拉格朗日插值
在这里插入图片描述

function f=agui_lagrange(x0,y0,x)
%x0为节点向量,y0为节点上的函数值,x为插值点,f返回插值
n=length(x0);
m=length(x);
format long
s=0.0;
for k=1:n
    p=1.0;
    for j=1:n
        if j~=k
            p=p*(x-x0(j))/(x0(k)-x0(j));
        end
    end
    s=p*y0(k)+s;
end
f=s;
end

f(0.5)= 0.521089682539683 f(0.7)= 0.758588904761904
f(0.85)= 0.956119446428571

在这里插入图片描述
2、 牛顿插值
在这里插入图片描述

function yi=agui_newtoninterp(x,y,xi)
%Newton插值方法,给定一系列插值的点(x,y),得到在x=xi处的,牛顿插值多项的值yi
n=length(x);
m=length(y);
if m~=n
 error('x,y的长度不一样,请重新输入!');
 return
end
A=zeros(n); %定义差商表
A(:,1)=y; %差商表第一列为y
for j=2:n%j为列标
for i=1:(n-j+1)%i为行标
 A(i,j)=(A(i+1,j-1)-A(i,j-1))/(x(i+j-1)-x(i));%计算差商表
end
end
disp('差商表为:')
disp(A)
%根据差商表,求对应的牛顿插值多项式在x=xi处的值yi
N(1)=A(1,1);
for j=2:n
 T=1;
for i=1:j-1
T=T*(xi-x(i));
 end
 N(j)=A(1,j)*T;
end
yi=sum(N); %将x=xi带入牛顿插值多项式,得到的yi的值
end


f(0.5)= 0.5211, f(0.7)= 0.7586 f(0.85)= 0.9561
在这里插入图片描述
<1>拉格朗日插值法与牛顿插值法都是常用的简便的插值法。但牛顿法插值法则更为简便,与拉格朗日插值多项式相比较,它不仅克服了“增加一个节点时整个计算工作必须重新开始的缺点,而且可以节省乘、除法运算次数。同时,在牛顿插值多项式中用到的差分与差商等概念,又与数值计算的其他方面有着密切的关系。
<2>对于一些计算比较复杂的函数,牛顿插值法就比拉格朗日插值法具有优势
<3>由实验结果可看出拉格朗日插值与牛顿插值最终计算的实验结果基本一致,只是涉及到最终结果精度的问题,所以二者各自有各自的特点,依照函数而定适用对象。

标签:拉格朗,end,插值,牛顿,插值法,matlab,x0
来源: https://blog.csdn.net/qq_42253057/article/details/116951992

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有