Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы по МПО / lore / LAB1
.CPP#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();
}