Смекни!
smekni.com

Исследование точности численного интегрирования (стр. 3 из 3)

# include <string.h>

# include <math.h>

int main ()

{

FILE *fp; /*указатель на поток*/

int n,i,t,j,N;

float a,b,h,Sum[100],x,y,coa;

printf("Research of Accuracy of Numerical Integration&bsol;n");

/*Ввод точности вычисления*/

printf("Enter accuracy of calculation n= ");

scanf("%d",&n);

/*Ввод начала интегрирования*/

printf("Enter beginnings of integration= ");

scanf("%f",&a);

/*Ввод предела интегрирования*/

printf("Enter limit of integration= ");

scanf("%f",&b);

/*Открытие файла-источника*/

while((fp=fopen("data3.xls","w"))==NULL)

{

puts("Error!!! Can't open file &bsol;nInput name of file&bsol;n");

}

/*Ввод количества итераций*/

printf("Enter number of Itteration N= ");

scanf("%d",&N);

/*Вычисление шага интегрирования*/

h=(a+b)/n;

printf("Step=%.3f&bsol;n",h);

/*******Вычисление интеграла методом трапеций*******/

for(j=1;j<=N;j++)

{

h=(a+b)/(int(pow(2,j-1))*n);

Sum[j]=0;

for(i=0;i<=(int(pow(2,j-1))*n);i++)

{

x=a+i*h;

if(i==0)

t=1;

else

t=2;

y=t*(h/2)*(sin(2*x));

Sum[j]=Sum[j]+y;

}

if (j>1)

{

coa=(Sum[j]-Sum[j-1])/Sum[j-1];

printf("Criterion of accuracy=%.5f Number of iteration=%d&bsol;n",coa,j);

fprintf(fp,"%.7f&bsol;t",coa);

fprintf(fp,"%d&bsol;t&bsol;n",j);

}

}

printf("The sum by a method of trapezes=%.7f&bsol;n",Sum[1]);

fprintf(fp,"The sum by a method of trapezes=%.7f&bsol;n",Sum[1]);

/*******Вычисление интеграла методом Симпсона*******/

for(j=1;j<=N;j++)

{

h=(a+b)/(int(pow(2,j-1))*n);

Sum[j]=0;

for(i=0;i<=(int(pow(2,j-1))*n);i++)

{

x=a+i*h;

if(i==0||i==n)

t=1;

else

{

if(i%2==0)

t=2;

else

t=4;

}

y=t*(h/3)*(sin(2*x));

Sum[j]=Sum[j]+y;

}

if (j>1)

{

coa=(Sum[j]-Sum[j-1])/Sum[j-1];

printf("Criterion of accuracy=%.5f Number of iteration=%d&bsol;n",coa,j);

fprintf(fp,"%.7f&bsol;t",coa);

fprintf(fp,"%d&bsol;t&bsol;n",j);

}

}

printf("The sum by a Simpson's method= %.7f&bsol;n",Sum[1]);

fprintf(fp,"The sum by a Simpson's method=%.7f&bsol;n",Sum[1]);

scanf("%d",&b);

}