chenyl78 发表于 2006-3-8 13:01:56

frensel 发表于 2006-3-8 19:20:57

Re:拉格朗日插值算法怎样用matlab描述

%lagrange.m
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
参考王沫然的MATLAB与科学计算

wangguanjin 发表于 2006-3-8 19:42:56

Re:拉格朗日插值算法怎样用matlab描述

//Lagrange插值的C++代码
//对给定的每个插值点,用Lagrange插值的方法求出每个自变量输入的输出值
#include<iostream>
//#include<vector>

using namespace std;

float Lagrange(float x,int n,float *x_i,float *y_i)
{
  int k,j;
  float y=0.0,t;
  for(k=0;k<n;k++)
  {  t=1;
    for(j=0;j<n;j++)
    {
      if(j==k) continue;
      else t=t*(x-x_i)/(x_i-x_i);
    }
    y=y+t*y_i;
  }
  return y;
}
void main(void)
{
  float x=0.6,x_i[]={0.40,0.50,0.70,0.80},y_i[]={-0.916291,-0.693147,-0.356675,-0.223144};
  double y;
  int n=4;
  y=Lagrange(x,n,x_i,y_i);
  cout<<"在"<<x<<"处的拉个朗日插值的结果是:"<<y<<"\n";
}

chenyl78 发表于 2006-3-9 08:59:57

胡磊 发表于 2010-11-11 12:01:16

有二维的程序吗?

zhouyang664 发表于 2010-11-11 12:44:43

讲数值分析的教程一般都有啊!
自己多动动手就不用麻烦他人了,自己也进步了,岂不是两全其美!
页: [1]
查看完整版本: 拉格朗日插值算法怎样用matlab描述