Вычисление интеграла на Си

В этой статье мы рассмотрим вычисление интеграла на языке Си. Будет приведён теоретический материал и его реализация в виде программы.

Для того, чтобы найти значение интеграла, нам понадобится формула парабол (Симпсона) – это один из самых точных численных методов для нахождения определенного интеграла. Вот эта формула:

calculationOfDefiniteIntegralFormula

где h = (b-a)/2n, 2n – количество отрезков (четное число), на которое мы делим интервал интегрирования (чем больше, тем точнее вычисления).

calculationOfDefiniteIntegralFormula2

В скобках формулы вычисления интеграла мы видим, как сгруппированы значения функции: первое и последнее просто суммируются, значения с нечетными индексами умножаются на 4, а с четными на 2.

Напишем программу, которая вычисляет такой определенный интеграл:

calculationOfDefiniteIntegralIntegral

Подключим необходимые библиотеки и определим константу N – число отрезков (четное), на которое мы будет делить отрезок интегрирования [a, b]:

Нам понадобится функция F(double x), вычисляющая значение sin(x) + cos(x), она будет возвращать значение типа double – вещественный тип повышенной точности:

Переходим к функции main(). Определим необходимые переменные, константу Пи и вычислим значение h:

Вычисляем значение x1 и в цикле начинаем вычислять часть формулы .. + 4(…) + 2(…):

Добавляем к S первое и последнее значение функции S + f(a) + f(b) и умножаем результат на (h/3). Выводим результат в консоль:

В итоге получается такая программа (исходник, как обычно, можно скачать внизу страницы):

Демонстрация работы программы:

calculationOfDefiniteIntegralDemo

Значение интеграла равно двум!

Скачать исходник
Вычисление интеграла на Си
5 (100%) 3 votes

Поделиться в соц. сетях:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">