Александр Сидорченко
Просветленный
(42190)
7 лет назад
для первого примера
//метод прямоугольников
#include "stdio.h"
#include "math.h"
double f(double a) { return (a*a); } // вычисление значения функции в точке
void main()
{
double a; // нижний предел интегрирования
double b; // верхний предел интегрирования
double d; // количество отрезков разбиения
double h; /// длина отрезка разбиения
double a1; // начало отрезка разбиения
double b1; // конец отрезка разбиения
double s; // интегральная сумма
double fs; // определенный интеграл
int j;
a = 1.0;
b = 4.0;
d = 15.0;
fs = 0.0;
h = (b-a)/d;
printf("%f\n", h);
for(j = 0; j < d; j++)
{
a1 = a + (double)j * h;
b1 = a1 + h;
s = f ( (a1 + b1) / 2.0 ) * ( b1 - a1);
printf("%d a+j*h:%f a1 +h:%f %f\n", j, a1, b1, s);
fs +=s;
}
printf("%f\n", fs);
}
//метод трапеций
#include "stdio.h"
#include "math.h"
double f(double a) { return (a*a); } // вычисление значения функции в точке
void main()
{
double a; // нижний предел интегрирования
double b; // верхний предел интегрирования
double d; // количество отрезков разбиения
double h; /// длина отрезка разбиения
double a1; // начало отрезка разбиения
double b1; // конец отрезка разбиения
double s; // интегральная сумма
double fs; // определенный интеграл
int j;
a = 1.0;
b = 4.0;
d = 15.0;
fs = 0.0;
h = (b-a)/d;
printf("%f\n", h);
for(j = 0; j < d; j++)
{
a1 = a + (double)j * h;
b1 = a1 + h;
s = ((f (a1) + f (b1)) / 2.0 ) * (b1 - a1);
printf("%d a+j*h:%f a1 +h:%f %f\n", j, a1, b1, s);
fs +=s;
}
printf("%f\n", fs);
}
// Метод Симпсона
#include "stdio.h"
#include "math.h"
double f(double a) { return (a*a); } // вычисление значения функции в точке
void main()
{
double a; // нижний предел интегрирования
double b; // верхний предел интегрирования
double d; // количество отрезков разбиения
double h; /// длина отрезка разбиения
double a1; // начало отрезка разбиения
double b1; // конец отрезка разбиения
double s; // интегральная сумма
double fs; // определенный интеграл
int j;
a = 1.0;
b = 4.0;
d = 15.0;
fs = 0.0;
h = (b-a)/d;
printf("%f\n", h);
for(j = 0; j < d; j++)
{
a1 = a + (double)j * h;
b1 = a1 + h;
s = ( (b1-a1)/6.0 ) * ( f (a1) + 4.0 * f ( (a1 + b1) / 2.0 ) + f(b1) );
printf("%d a+j*h:%f a1 +h:%f %f\n", j, a1, b1, s);
fs +=s;
}
printf("%f\n", fs);
}
//для второго по Симпсону
double f(double a) { return (a); } // вычисление значения функции в точке
void main()
{
double a; // нижний предел интегрирования
double b; // верхний предел интегрирования
double d; // количество отрезков разбиения
double h; /// длина отрезка разбиения
double a1; // начало отрезка разбиения
double b1; // конец отрезка разбиения
double s; // интегральная сумма
double fs; // определенный интеграл
int j;
a = 4.0;
b = 6.0;
d = 10.0;
fs = 0.0;
h = (b-a)/d;
printf("%f\n", h);
for(j = 0; j < d; j++)
{
a1 = a + (double)j * h;
b1 = a1 + h;
s = ( (b1-a1)/6.0 ) * ( f (a1) + 4.0 * f ( (a1 + b1) / 2.0 ) + f(b1) );
printf("%d a+j*h:%f a1 +h:%f %f\n", j, a1, b1, s);
fs +=s;
}
printf("%f\n", fs);
}
//для третьего по Симпсону
double f(double a) { return (a*a*a); } // вычисление значения функции в точке
void main()
{
double a; // нижний предел интегрирования
double b; // верхний предел интегрирования
double d; // количество отрезков разбиения
double h; /// длина отрезка разбиения
double a1; // начало отрезка разбиения
double b1; // конец отрезка разбиения
double s; // интегральная сумма
double fs; // определенный интеграл
int j;
a = 0.0;
b = 2.0;
d = 10.0;
fs = 0.0;
h = (b-a)/d;
printf("%f\n", h);
for(j = 0; j < d; j++)
{
a1 = a + (double)j * h;
b1 = a1 + h;
s = ( (b1-a1)/6.0 ) * ( f (a1) + 4.0 * f ( (a1 + b1) / 2.0 ) + f(b1) );
printf("%d a+j*h:%f a1 +h:%f %f\n", j, a1, b1, s);
fs +=s;
}
printf("%f\n", fs);
}
//для четвертого по Симпсону
double f(double a) { return (exp(a)); } // вычисление значения