Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вычисление интегралов по формулам прямоугольников, трапеций, формуле Симпсона

Tanki Tankys Ученик (208), закрыт 7 лет назад
Вычислить интегралы методом прямоугольников, методом трапеций и по формуле Симпсона. Сравнить полученные результаты. Найти относительную погрешность вычислений.
Лучший ответ
Остальные ответы
Александр Сидорченко Просветленный (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)); } // вычисление значения
Похожие вопросы