📄 gauss.cpp
字号:
//Gaussian forward and backward interpolation formula
#include<stdio.h>
#include<conio.h>
main()
{
float x[10],y[10],z[10][10],p,p1,xv,yv;
int n,i,j,m,k;
printf("How many set of values do u want to enter");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Enter (x[%d],y[%d])\a",i+1,i+1);
scanf("%f%f",&x[i],&y[i]);
}
for(i=0;i<n;i++)
{
z[i][0]=y[i];
}
for(j=1;j<n;j++)
{
for(i=0;i<n-j;i++)
{
z[i][j]=z[i+1][j-1]-z[i][j-1];
}
}
label:
k=1;
printf("Enter the value of x");
scanf("%f",&xv);
m=n/2+1;
p=(xv-x[m])/(x[1]-x[0]);
p1=p;
j=2;
if(xv>=x[m])
{
/* forward*/
yv=z[m][0]+p*z[m][1];
for(i=m-1;i>0;i--)
{
k=k*j;
p1=p1*(p-j+1);
yv=yv+p1*z[i][j]/k;
p1=p1*(p+j-1);
k=k*(k+1);
yv=yv+p1*z[i][j+1]/k;
j++;
}
}
else
{
/*backward */
yv=z[m][0]+p*z[m-1][1];
for(i=m-1;i>0;i--)
{
k=k*j;
p1=p1*(p+j-1);
yv=yv+p1*z[i][j]/k;
k=k*(k+1);
p1=p1*(p-j+1);
yv=yv+p1*z[i-1][j+1]/k;
j++;
}
}
printf("%f",yv);
printf("\nDo u want to continue(y/n):");
if('y'==getch())
goto label;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -