Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
непрмо_подготовка к экзую.docx
Скачиваний:
0
Добавлен:
24.01.2026
Размер:
6.31 Mб
Скачать

14. Метод Мюллера. Запрограммировать, показать работу на функциях.

Базовое понимание

1. В чём принципиальное отличие метода Мюллера от метода секущих? Метод секущих аппроксимирует функцию прямой по двум точкам, а метод Мюллера аппроксимирует её параболой по трём точкам, что даёт более высокую скорость сходимости.

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

3. Какой геометрический объект используется? Парабола, аппроксимирующая функцию (или её производную) локально.

4. Что значит «точка пересечения параболы с осью x»? Это корень аппроксимирующей параболы, который принимается за новое приближение к корню функции.

5. Почему ищется корень g(x)=f′(x)? Потому что минимум функции достигается в точке, где её производная равна нулю.

Разделённые разности

6. Чем разделённая разность первого порядка отличается от производной? Разделённая разность — это дискретная аппроксимация производной, не требующая предела.

7. Смысл разделённой разности второго порядка? Она характеризует кривизну функции и является дискретным аналогом второй производной.

8. Что будет, если функция почти линейна? Разделённая разность второго порядка будет близка к нулю.

9. Почему удобно использовать разделённые разности? Они позволяют строить интерполяционный полином без вычисления производных.

10. Что будет, если точки очень близки? Могут возникнуть численные ошибки из-за деления на малые величины, метод станет неустойчивым.

Формула шага

11. Почему появляется квадратный корень? Потому что ищется корень квадратного уравнения, возникающего при пересечении параболы с осью x.

12. Почему есть знак ±? Квадратное уравнение имеет два корня.

13. Геометрический смысл двух корней? Это две точки пересечения параболы с осью x.

14. Почему выбирают знаменатель с большим модулем? Чтобы избежать деления на малое число и повысить численную устойчивость.

15. Что будет при выборе меньшего модуля? Итерация может сделать слишком большой шаг и привести к расходимости.

Сходимость и устойчивость

16. Почему сходимость быстрее, чем у секущих? Параболическая аппроксимация точнее линейной.

17. Почему медленнее, чем у Ньютона? Метод Ньютона использует точную информацию о второй производной.

18. Когда метод неустойчив? При плохом выборе начальных точек или при сильной нелинейности функции.

19. Почему возможны комплексные приближения? Подкоренное выражение может стать отрицательным.

20. Это недостаток или особенность? Особенность метода; при поиске вещественных корней обычно ограничивают область.

Сравнение методов

21. Сравнение с Ньютоном:

  • скорость: Мюллер медленнее

  • производные: не требует второй производной

  • устойчивость: ниже, чем у Ньютона

22. Когда Мюллер лучше Ньютона? Когда вторая производная сложна или дорога для вычисления.

23. Когда секущие лучше Мюллера? Когда важна простота и устойчивость, а скорость не критична.

24. Можно ли считать Мюллера обобщением секущих? Да, секущие — частный случай, когда парабола вырождается в прямую.

25. Что если парабола выродится? Метод фактически переходит в метод секущих.

Вопросы «на подумать»

26. Если g[xk−2,xk−1,xk]=0? Парабола вырождается в прямую, квадратное уравнение становится линейным.

27. Можно ли искать минимум напрямую? Теоретически да, но стандартно метод применяется к производной.

28. Если использовать кубическую аппроксимацию? Метод станет сложнее и менее устойчивым.

29. Почему редко применяют в многомерных задачах? Построение многомерной квадратичной аппроксимации становится слишком сложным.

30. Почему метод считают промежуточным? Он сочетает идеи секущих и Ньютона, но не требует второй производной.

Ответы «одной фразой»

31. Метод Мюллера одним предложением: Метод Мюллера — это итерационный метод поиска корня, использующий параболическую аппроксимацию по трём точкам.

32. Главный плюс и минус: Плюс — высокая скорость сходимости без второй производной; минус — возможные комплексные шаги.

33. Почему не нужна вторая производная? Потому что квадратичная модель строится по значениям функции, а не по аналитическим производным.

import numpy as np

def f(x):

return x**2 - 10*np.cos(0.3*np.pi*x) - 20

def df(x):

return 2*x + 3*np.pi*np.sin(0.3*np.pi*x)

def muller_search(interval, tol):

k_max = 1000

neval = 0

coords = []

x0, x1 = interval

x2 = (x0 + x1) / 2

g0 = df(x0)

g1 = df(x1)

g2 = df(x2)

neval += 3

k = 0

while k < k_max:

k += 1

g01 = (g1 - g0) / (x1 - x0)

g12 = (g2 - g1) / (x2 - x1)

g012 = (g12 - g01) / (x2 - x0)

w = g12 + (g2 - g0)/(x2 - x0) - g01

D = np.sqrt(w**2 - 4*g2*g012)

d_plus = w + D

d_minus = w - D

if abs(d_minus) < abs(d_plus):

d = d_plus

else:

d = d_minus

x3 = x2 - 2*g2 / d

coords.append([x3, x0, x1, x2])

if abs(x3 - x2) <= tol:

xmin = x3

fmin = f(xmin)

neval += 1

return [xmin, fmin, neval, coords]

print(x0, x1, x2)

print(g0, g1, g2)

x0, x1, x2 = x1, x2, x3

g0, g1, g2 = g1, g2, df(x3)

neval += 1

xmin = x2

fmin = f(xmin)

neval += 1

return [xmin, fmin, neval, coords]

Что означают g01, g12 и g012? → Разделённые разности первого (g01, g12) и второго порядка (g012).

Почему g012 = (g12 - g01)/(x2 - x0)? → Это дискретная аппроксимация второй производной для построения параболы.

Как w вычисляется и зачем нужен? → w = g12 + (g2 - g0)/(x2 - x0) - g01 — это вспомогательная величина для знаменателя формулы Мюллера.

Что делает x3 = x2 - 2*g2/d?

→ Новая точка итерации (следующее приближение к корню производной).

Почему метод может «зависнуть» или не сходиться? → Если точки подобраны плохо, знаменатель близок к нулю, или функция слишком нелинейна.

Почему метод Мюллера быстрее секущих в этом коде? → Парабола точнее аппроксимирует производную, чем прямая через две точки.

Почему метод не требует второй производной явно? → Потому что вторая производная аппроксимируется через разделённые разности (g012).

Что произойдёт с coords, если шаг станет комплексным? → В список попадёт комплексное значение, и визуализация/анализ сходимости потеряет смысл.

Можно ли использовать этот код для поиска глобального минимума функции? → Нет, метод Мюллера — локальный, может сойтись к ближайшему минимуму или критической точке.