ICode9

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

数模--拉格朗日多项式插值、matlab实现

2021-09-20 19:32:49  阅读:161  来源: 互联网

标签:yh xh -- 数模 matlab c2 xp prod c1


拉格朗日多项式公式:

        

Matlab编程实现拉格朗日插值法计算插值

matlab中插入一个值的代码

function yh=lagrange(x,y,xh)  %定义拉格朗日插入函数
n=length(x);                  %统计x和xh的长度
m=length(xh);            
yh=zeros(1,m);                %构建一行m列的zero矩阵
c1=ones(n-1,1);               %构建n-1行一列的单位矩阵
c2=ones(1,m);
for i=1:n
    xp=x([1:i-1 i+1:n]);
    yh=yh+y(i)*prod((c1*xh-xp'*c2)./(x(i)-xp'*c2));  
end


%  '* 表示转置乘,如r'*c 则表示将r转置后在与c相乘
%  求乘函数prod();prod(A)、prod(A,dim);
%  默认情况下dim的值为1,表示直接分别得出A中的每个列结果
%  dim值为2表示分别得出A中的每行的结果
>> x=[2003 2004 2005 2006 2007];
>> y=[13124000 13299000 13314000 13551100 14101800];
>> xh=2008;
%先对函数调用所需要的参数进行赋值

>>lagrange(x,y,xh)

        上述程序一次只能实现一个插值计算。进行多个值插入的代码如下

function yh=lagrange(x,y,xh)
n = length(x);
m = length(xh);
x = x(:);
y = y(:);
xh = xh(:);
yh = zeros(m,1); 

c1 = ones(1,n-1);
c2 = ones(m,1);

for i=1:n,
  xp = x([1:i-1 i+1:n]);
  yh = yh + y(i)*prod((xh*c1-c2*xp')./(c2*(x(i)*c1-xp')),2);
end

标签:yh,xh,--,数模,matlab,c2,xp,prod,c1
来源: https://blog.csdn.net/Monica_uu/article/details/120393990

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

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

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

ICode9版权所有