⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gauss.cpp

📁 Contains many numerical algorithms for interpolation.
💻 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 + -