Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Решение нелинейных уравнений методом Ньютона на Python
Сегодня о методе Ньютона по вычислению корней уравнений типа f(x)=0. В прошлой статье по этой тематике уже познакомились с методом перебора и методом деления отрезка пополам. Мы будем использовать метод Ньютона в купе с методом перебора. С помощью последнего метода мы найдём отрезки с предполагаемыми корнями, а методом Ньютона получим значения корней высокой точности.
Метод Ньютона основывается на очень простой рекуррентной формуле, представленной на рисунке 1.
Последовательно подставляя значения, начиная с некоторой исходной точки x мы приближаемся к точке, в которой f(x)=0.
Ниже в программе мы опять решаем уравнение sin(x)=0 (как в предыдущей статье). В начале с помощью последовательного поиска мы находим отрезки, где находятся корни (get_ends(), см. предыдущую статью), а потом, используя метод Ньютона ищем уже корни с большой точностью. В качестве отправной точки нами берутся правые концы найденных отрезков.
Результат выполнения программы
-1.2547917381284872e-26
3.141592653589793
6.283185307179586
9.42477796076938
Сравните со значениями math.pi, math.pi*2, math.pi*3.
Обратим внимание на функцию der(), она взята из статьи, где мы говорили о вычислении производных.
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.