Алгоритмы и структуры данных · 16 из 19
Бассейны Ньютона
Метод Ньютона ищет корень уравнения шагами: из точки — по касательной к нулю, оттуда снова по касательной. Для уравнения z³ = 1 корней три, и каждая точка плоскости в итоге приходит к одному из них. Если раскрасить точки по тому, к какому корню они пришли, получатся три спокойных области — а на их границах творится такое, что математики, впервые увидевшие эту картинку на компьютере, не сразу поверили, что это не ошибка в программе.
Что сделать
Узнайте, к какому из трёх корней z³ = 1 приходит метод Ньютона из точки (x, y) и за сколько шагов.
Что приходит
xиy— начальная точка: z = x + yishagov— больше стольких шагов не делать
Что вернуть
Пару (номер корня, сколько шагов сделано); не дошли за shagov шагов или попали в ноль — None.
Допишите функцию nyuton в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Из точки 2 метод идёт по вещественной оси: 2 → 1,4167 → 1,1105 → … и на пятом шаге оказывается ближе миллионной к корню 1, номер 0. Ответ (0, 5).
nyuton(2, 0, 30)
(0, 5)
Корни z³ = 1 нумеруются так: 0 — 1, 1 — −1/2 + (√3/2)·i, 2 — −1/2 − (√3/2)·i. В Python: complex(-0.5, math.sqrt(3) / 2) и сопряжённый.
Начинаем с z = complex(x, y). Перед каждым шагом (и в самом начале, и после последнего шага) проверяем: если |z − корень| < 1e-6 для какого-то корня — возвращаем (его номер, сделано шагов).
Шаг — z = z − (z³ − 1) / (3z²). Если z равно нулю, шаг сделать нельзя (касательная горизонтальна) — ответ None. Сделали shagov шагов и ни к одному корню не подошли — тоже None.
Модуль комплексного числа — abs(z).
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.