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

📄 lagrange.c

📁 我自己写的数值分析课程设计的源代码
💻 C
字号:
#include<stdio.h>
#include<math.h>

#define function(x) sin((x))
#define pi 3.14159265
#define N 11
#define M 9

double x[N]={0},
f[N]={0},
xx[M]={0},
ff[M]={0},
l1[M]={0},
l2[M]={0};

//void init(double *a,int m);

void print();


void main()
{
	int i;
	double s1, s2, s3;
	

	//the real value of function
	for(i=0;i<N;i++)
	{
		x[i]=pi*i/20;
		f[i]=function(x[i]);
	}

	for (i=0;i<M;i++)
	{
		xx[i]=pi*(i+.5)/20;
		ff[i]=function(xx[i]);
	}

	//l1 lagrange
	for(i=0;i<M;i++)
	{
		s1=(xx[i]-x[i+1]) / (x[i]-x[i+1]) * f[i];
		s2=(xx[i]-x[i]) / (x[i+1]-x[i]) * f[i+1];
		l1[i]= s1 + s2;
	}

	//l2 lagrange
	for(i=0;i<M;i++)
	{
		s1=((xx[i]-x[i+1]) * (xx[i]-x[i+2])) / ((x[i]-x[i+1]) * (x[i]-x[i+2])) * f[i];
		s2=((xx[i]-x[i]) * (xx[i]-x[i+2])) / ((x[i+1]-x[i]) * (x[i+1]-x[i+2])) * f[i+1];
		s3=((xx[i]-x[i]) * (xx[i]-x[i+1])) / ((x[i+2]-x[i]) * (x[i+2]-x[i+1])) * f[i+2];
		l2[i] = s1 + s2 + s3;
	}

	//print to file 
	print(x,10,"x");
	print(f,10,"f");
	print(xx,8,"xx");
	print(ff,8,"ff");
	print(l2,8,"l2");		
}
	
/*
void init(double *a,int m)
{
	FILE *f;
	if(f=fopen("lagrange.txt","r"))
	{
		for(i=0;i<=m;i++)
		{
			fscanf(f,"%f",a[i]);
		}
		fclose(f);
	}
	else 
		printf("Cannot open the file!\n");
}
*/

void print()
{
	int i;
	FILE *fout;

	if ((fout=fopen("Lagrange.txt","w")) != NULL)
	{
		fprintf(fout,"     x    |   sin(x) |    l1    |    E1     \n");
		for (i=0;i<M;i++)
		{
			fprintf(fout,"%9.8f %9.8f %9.8f %f\n",xx[i],ff[i],l1[i],fabs(ff[i]-l1[i]));
		}

		fprintf(fout,"\n");

		fprintf(fout,"     x    |   sin(x) |    l2    |    E2     \n");
		for (i=0;i<M;i++)
		{
			fprintf(fout,"%9.8f %9.8f %9.8f %f\n",xx[i],ff[i],l2[i],fabs(ff[i]-l2[i]));
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -