免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 897 | 回复: 0
打印 上一主题 下一主题

请学过数值分析的高手帮忙看一下,谢了!!!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-07 21:13 |只看该作者 |倒序浏览
已知函数f(x)在如下点的函数值,求其插值多项式的代数表达式:     
f(0.40244=11.696911,     
f(0.513871)=14.314712,     
f(0.135929)=7.591531,     
f(0.835719)=31.572442,     
f(0.233406)=8.844833,     
f(0.465011)=13.068839,     
f(0.249397)=9.073717,     
f(0.698263)=21.378525,     
f(0.726432)=22.984531,     



这是我写的程序:     

#include <math.h>     
#include <stdio.h>     
#define N 9     
double x[N]={0.135929,0.233406,0.249397,0.402448,0.465011,0.513871,0.698263,0.726432,0.835719};     
double fx[N]={7.591531,8.844833,9.073717,11.696911,13.068839,14.314712,21.378525,22.984531,31.572442};     
double f[N][N],fn[N],a[N][N];     
void jc()     
{     
int i,j;     
for (i=0;i<N;i++)     
{     
  f[i][0]=fx[i];     
  for (j=1;j<=i;j++)     
   f[i][j]=(f[i][j-1]-f[i-1][j-1])/(x[i]-x[i-j]);     
}     
}     
void xishu()     
{     
int i,j,m,n;     

for(n=0;n<N-1;n++)     
{     
a[n][0]=-x[0];     
a[n][1]=1;     

for(m=1;m<=n;m++)     
{     
a[n][m+1]=a[n][m];     
for(i=m;i>0;i--)     
   a[n][i]=a[n][i-1]-a[n][i]*x[m];     
   a[n][0]=-x[m]*a[n][0];     


   }     
   }     
fn[0]=fx[0];     

for(j=0;j<N;j++)     
{     
   for(i=0;i<N-1;i++)     
   fn[j]+=(f[i+1][i+1]*a[i][j]);     

}     

}     
void main()     
{     
int i,j;     
double s;     
jc();     
xishu();     
for(j=N-1;j>0;j--)     
  printf("(%f)*X^%d+",fn[j],j);     
printf("(%f)\n",fn[0]);     
}     


结果正确,但有人说执行效率不高,具体的就是不带均差系数的那部分程序执行效率不高,     
请明白的高手们指点一下小弟,谢谢!!!   
是牛顿插值多项式
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP