找回密码
 注册
Simdroid-非首页
查看: 174|回复: 5

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

[复制链接]
chenyl78 该用户已被删除
发表于 2006-3-8 13:01:56 | 显示全部楼层 |阅读模式 来自 云南昆明
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2006-3-8 19:20:57 | 显示全部楼层 来自 广东广州

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

Simdroid开发平台
%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与科学计算
发表于 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[j])/(x_i[k]-x_i[j]);
    }
    y=y+t*y_i[k];
  }
  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 | 显示全部楼层 来自 江苏南京
有二维的程序吗?
回复 不支持

使用道具 举报

发表于 2010-11-11 12:44:43 | 显示全部楼层 来自 黑龙江哈尔滨
讲数值分析的教程一般都有啊!
自己多动动手就不用麻烦他人了,自己也进步了,岂不是两全其美!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-5 11:25 , Processed in 0.044505 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表