📄 lagrange.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 + -