GAUSS FORWRD INTERPOLATION
#include<stdio.h>
int main()
{
int n;
printf("enter size");
scanf("%d",&n);
float ax[n];
float ay[n];
int i,j;
for(i=0;i<n;i++)
{
printf("enter ax[%d]\n",i);
scanf("%f",&ax[i]);
printf("enter ay[%d]\n",i);
scanf("%f",&ay[i]);
}
float d,m,q;
int r=0;
printf("enter intermediate value of x");
scanf("%f",&d);
r=0;
do
{
r++;
}while(ax[r]<d);
r--;
m=ax [r];
float y=1,p;
p=(d-m)/(ax[1]-ax[0]);
printf("%f\n",p);
float a[n][n];
for(i=0;i<n;i++)
{
a[i][0]=ay[i];
}
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
{
a[j][i]=a[j+1][i-1]-a[j][i-1];
}
}
for(i=0;i<n;i++)
{
printf(" %f ",ax[i]);
for(j=0;j<n-i;j++)
{
printf(" %f ",a[i][j]);
}
printf("\n");
}
float g=ay[r];
int c=1,h=1;
for(i=1;i<n;i++)
{
if(i==1)
{
y=(y*(p-i+1))/i;
g=g+(y*a[r-i][i]);
printf("%f\n",g);
}
else if(i%2==0)
{
y=(y*(p+i-1))/i;
g=g+(y*a[r-h][i]);
printf("%f\n",g);
}
else
{
y=(y*(p-i-1))/i;
g=g+(y*a[r-h][i]);
h++;
printf("%f\n",g);
}
}
printf("value of y=%f ",g);
return 0;
}
No comments:
Post a Comment