Скачиваний:
16
Добавлен:
01.05.2014
Размер:
1.6 Кб
Скачать
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
#include <time.h>

const	tol		= 1.0E-6;
   float   sum,upper,lower	;

float fx(float x)
{
//float tmp;
// tmp =1.0 /x ;
return (1.0 /x) ;
}
void simps(float lower,float upper,float tol,float  sum  )

   {

      int i   ;
      float  x,delta_x,even_sum,odd_sum,end_sum,sum1 ;
      int    pieces	;

       pieces=2;
       delta_x = (upper-lower)/pieces;
       odd_sum = fx(lower+delta_x);
       even_sum = 0.0;
       end_sum  = fx(lower)+fx(upper);
       sum      = (end_sum+4.0*odd_sum)*delta_x/3.0;
       printf("pieces: %-5d sum: %g\n", pieces, sum);
     //  cout<<"pieces="<<sum<<endl;

       div_t tmp;
  int end_cicle;
     do{
     pieces=pieces*2;
    sum1 = sum;
    delta_x = (upper-lower)/pieces;
    even_sum = even_sum+odd_sum;
    odd_sum = 0.0;
    tmp = div(pieces,2);
    end_cicle = tmp.quot;

    for (i=1;i<= end_cicle;i++ ) //do
      {
	x=lower+delta_x*(2.0*i-1.0);
	odd_sum=odd_sum+fx(x) ;
      }

      sum = (end_sum+4.0*odd_sum+2.0*even_sum)*delta_x/3.0;
    printf("pieces: %-5d sum: %g\n", pieces, sum);
  //  cout<<"pieces="<<sum<<endl;
   }while ((sum != sum1) && (abs(sum-sum1)<=(abs(tol*sum))));

 }

void main () //	{ main program }
 {
    clrscr();
  lower=1.0;
  upper=9.0;
  cout<<"\n"<<endl;
  simps(lower,upper,tol,sum);
  cout<<"\n"<<endl;
//  printf("Erf of %-7.2f, is %12.8f\n",upper,erf);
  printf(" sum: %g\n",sum);

//  cout<<"area="<<sum<<endl;
  //printf;
  //printf("area= ",sum);
 getche();
  }

Соседние файлы в папке lore