拉格朗日插值 不准确的问题

laudroup 2010-05-20 03:31:24
我有50个节点,利用这50个节点构造拉格朗日插值。每个节点的x值都能正确显示对应的y值。可是当我取节点以外的x值时,所取的x值在两头处时,y值明显不正确,当x值在中间时就比较正确。比如x节点1,3,5,7,9,,,,100。当我x取1.5或是99.5时y值明显不正确。这是为什么?在程序中怎么解决这个问题?
float jg1,jg2=0;
int m,n;
for(m=0;m<jj;m++)
{
jg1=1.0;

for(n=0;n<jj;n++)
{
if (m!=n)
{jg1*=(X-aa[n])/(aa[m]-aa[n]);
}
}
jg2+=bb[m]*jg1;}
ShowMessage(jg2);
...全文
331 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
laudroup 2010-05-20
  • 打赏
  • 举报
回复
数组是被定义为浮点的。我查过,应该是龙格问题,节点过多会导致两端节点附近产生巨大误差。如果我将这50个节点分为10段,每段5个节点。判断输入X的大小属于那个段,然后在那一段中进行拉格朗日插值运算,不知可行否?
lirg8405 2010-05-20
  • 打赏
  • 举报
回复
数组aa,bb还有X都用float

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧