Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Вычисление определённых алгоритмов на Python
Численные методы - один разделов математики. Когда-то я его изучал и мне он казался таким скучным. Но потом появились компьютеры и не бумажное программирование и оказалось, что это весьма интересно. Занимался когда-то численным решением нелинейных уравнений. Но это было давно.
В сегодня определённые интегралы. Не многие из них можно взять аналитически. Вот приходится считать в числах. Нужно сказать, что сама идея алгоритмов вычисления очень проста. Она восходит в сущности к определению интеграла, как предел суммы. Значение функции вычисляется на каждом шаге и умножается на шаг. Чем меньше шаг, тем точнее вычисления.
Алгоритмы в сущности отличаются тем, как брать значения функции.
Рассмотрим рисунок 1. Если вы изучали математический анализ, то должны знать, что определённый алгоритм - это площадь под кривой функции. Таким образом алгоритм можно свести к приближённому вычислению такой площади. Как мы видим из рисунка площадь под кривой можно заменить площадью фигуры, состоящей из множества прямоугольников. Чем уже прямоугольник, тем точнее он вписывается в площадь под кривой. Вопрос только в том, где брать значение функции: по левому краю прямоугольника, по правому краю или по середине.
Ниже представлена программа приближенного вычисление интеграла, где значение функции берутся по левому краю. Да, в случае рисунка 1 значение лучше брать по правому краю, но в общем случае это совсем не факт. В качестве функции в программе была взята экспонента. Такой метод вычисления называется методом прямоугольника.
Обратим внимание на строку
integr += dx * f(x1)
Мы берём значение функции по левому краю. Если мы хотим брать значения по правому краю, то тогда
integr += dx * f(x1 + dx)
и наконец, брать значение по середине, то
integr += dx * f(x1 + dx / 2)
Результат выполнения программы
19.082674235793007
Другой метод вычисления похож на предыдущий, но в качестве фигуры берёт трапецию (см. Рисунок 2). Такой метод так и называется методом трапеций. Считается, что метод в среднем даёт более точный результат, чем метод прямоугольников.
В программе выше обращаем на строку
integr += dx *(f(x1) + f(x1 + dx)) / 2
здесь как раз присутствует вычисление площади трапеции.
Результат выполнения программы
19.085537066331455
Есть ещё более изощренные методы вычисления интегралов. Например, верхнюю часть прямоугольников можно заменить какой-нибудь кривой, проходящей через две точки. Одним из таких методов является методом парабол. Но об этом в другой раз.
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.