1K подписчиков

Программирование на языке Python. Числовые алгоритмы. Вычисление определённых интегралов

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Вычисление определённых алгоритмов на Python

Численные методы - один разделов математики. Когда-то я его изучал и мне он казался таким скучным. Но потом появились компьютеры и не бумажное программирование и оказалось, что это весьма интересно. Занимался когда-то численным решением нелинейных уравнений. Но это было давно.

В сегодня определённые интегралы. Не многие из них можно взять аналитически. Вот приходится считать в числах. Нужно сказать, что сама идея алгоритмов вычисления очень проста. Она восходит в сущности к определению интеграла, как предел суммы. Значение функции вычисляется на каждом шаге и умножается на шаг. Чем меньше шаг, тем точнее вычисления.

Алгоритмы в сущности отличаются тем, как брать значения функции.

Рисунок 1. Рисунок в свободном доступе в Интернет
Рисунок 1. Рисунок в свободном доступе в Интернет

Рассмотрим рисунок 1. Если вы изучали математический анализ, то должны знать, что определённый алгоритм - это площадь под кривой функции. Таким образом алгоритм можно свести к приближённому вычислению такой площади. Как мы видим из рисунка площадь под кривой можно заменить площадью фигуры, состоящей из множества прямоугольников. Чем уже прямоугольник, тем точнее он вписывается в площадь под кривой. Вопрос только в том, где брать значение функции: по левому краю прямоугольника, по правому краю или по середине.

Ниже представлена программа приближенного вычисление интеграла, где значение функции берутся по левому краю. Да, в случае рисунка 1 значение лучше брать по правому краю, но в общем случае это совсем не факт. В качестве функции в программе была взята экспонента. Такой метод вычисления называется методом прямоугольника.

Вычисление методом прямоугольника по левым точкам. Ссылку на текст программы см. ниже
Вычисление методом прямоугольника по левым точкам. Ссылку на текст программы см. ниже

Обратим внимание на строку

integr += dx * f(x1)

Мы берём значение функции по левому краю. Если мы хотим брать значения по правому краю, то тогда

integr += dx * f(x1 + dx)

и наконец, брать значение по середине, то

integr += dx * f(x1 + dx / 2)

Результат выполнения программы

19.082674235793007

Рисунок 2. Рисунок в свободном доступе в Интернет
Рисунок 2. Рисунок в свободном доступе в Интернет

Другой метод вычисления похож на предыдущий, но в качестве фигуры берёт трапецию (см. Рисунок 2). Такой метод так и называется методом трапеций. Считается, что метод в среднем даёт более точный результат, чем метод прямоугольников.

Вычисление методом трапеций. Ссылку на текст программы см. ниже
Вычисление методом трапеций. Ссылку на текст программы см. ниже

В программе выше обращаем на строку

integr += dx *(f(x1) + f(x1 + dx)) / 2

здесь как раз присутствует вычисление площади трапеции.

Результат выполнения программы

19.085537066331455

Есть ещё более изощренные методы вычисления интегралов. Например, верхнюю часть прямоугольников можно заменить какой-нибудь кривой, проходящей через две точки. Одним из таких методов является методом парабол. Но об этом в другой раз.

Ну, пока всё!

Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

А слабо интеграл Дирихле вычислить?
А слабо интеграл Дирихле вычислить?