C语言拉格朗日插值法,求帮忙看一下程序哪里出错了,0 error但是运行出不来结果……

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
int main()
{
double t,z,tmp;
double x[12]={0,8.8,20.2,30.0,39.7,48.9,59.2,70.0,80.3,90.3,95.0,100.0};
double y[12]={110.6,106.1,102.2,98.6,95.2,92.1,89.4,86.8,84.4,82.3,81.2,80.2};
t=45.0;
int i,j,k,p;
k=0;
p=12;
for (i=k;i<k+p;i++)
{
tmp=1;
for (j=k;j<k+p;j++)
if (j=i)
tmp=tmp*(t-x[j])/(x[i]-x[j]);
z=z+tmp*y[i];
}
return z;
printf("%2.5f°C\n",z);
return 0;
}

nclude<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
int main()
{
double t, z=0, tmp;
double x[12] = { 0, 8.8, 20.2, 30.0, 39.7, 48.9, 59.2, 70.0, 80.3, 90.3, 95.0, 100.0 };
double y[12] = { 110.6, 106.1, 102.2, 98.6, 95.2, 92.1, 89.4, 86.8, 84.4, 82.3, 81.2, 80.2 };
t = 45.0;
int i, j, k, p;
k = 0;
p = 12;
for (i = k; i < k + p; i++)
{
tmp = 1;
for (j = k; j<p+k; j++)
if (j == i)//j=i??
tmp = tmp*(t - x[j]) / (x[i] - x[j]);//j=i?x[i] - x[j]=0?0作为分母??
z = z + tmp*y[i];//z没有初始化
}
//return z;//遇到return åŽé¢çš„就不会执行
printf("%2.5f°C\n", z);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-28
i=p,j=p吧,不是i=k,j=k.因为k=0,你没有定义x[0]和y[0].顺便i<=k+p,j<=k+p.
相似回答