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

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

def ssearch(interval,tol):

k_max = 1000

k = 0

a, b = interval

coords = []

df_A = df(a)

df_B = df(b)

x = b - df_B * (b - a) / (df_B- df_A)

coords.append([x, a, b])

neval = 2

while (np.abs(df_B)) > tol and (np.abs(b - a)) > tol and (k < k_max):

k += 1

x = b - df_B * (b-a)/(df_B-df_A)

df_X = df(x)

neval += 1

if df_X >= 0:

b = x

df_B = df_X

else:

a = x

df_A = df_X

coords.append([x,a,b])

xmin = x

fmin = f(xmin)

neval += 1

answer_ = [xmin, fmin, neval, coords]

return answer_

Из чего вытекает этот метод?

Метод секущих вытекает из метода Ньютона, если приближать производную конечной разностью:

То есть мы заменяем аналитическую производную на приближение по двум последним точкам.

Какой порядок (чего-то там) ?

Порядок сходимости метода секущих — примерно 1.618 (число Фибоначчи / золотое сечение). Это быстрее линейной, но медленнее квадратичной, как у Ньютона.

Почему это важно: секущие дают компромисс: не нужно брать аналитическую f′, но скорость приближения всё ещё хорошая.

берем формулу, выражаем

раскладываем в ряд тейлора и получаем p = 1+1/p

p^2-p-1=0

решение - 1.618 ((1+sqrt(5))/2)

Если внутри цикла df считается два раза, переделать на один

Почему в коде лучше вычислять df один раз внутри цикла?

Потому что в формуле секущих производная заменяется на разность двух значений функции.

Если считать df (или f) дважды для одной и той же точки — это лишние вычисления.

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

Первые 4 метода, от какого метода происходит метод секущих? (ньютон вродь)

От метода Ньютона (касательных). Разница в том, что в методе Ньютона используется аналитическая производная, а в секущих — приближение по двум точкам.

В каком случае применяем ньютона в каком секущих?

Ньютона — когда можно легко вычислить аналитическую производную и есть хорошее начальное приближение.

Секущих — когда производную найти сложно или невозможно, но значения функции вычислить можно.

Метод Ньютона применяем когда:

  • Производная f'(x) известна аналитически

  • Вычисление f'(x) не слишком сложное

  • Нужна высокая скорость сходимости (квадратичная)

Метод секущих применяем когда:

  • Производная неизвестна или сложно вычисляется

  • Функция "дорогая" для вычисления (и выгоднее делать 1 вычисление f(x) за шаг вместо 2)

  • Можно пожертвовать скоростью сходимости ради упрощения

В чем преимущество метода секущих?

Не требует аналитической производной, только значения функции.

Более экономный по числу вычислений, чем метод Ньютона, если производная дорогая.

Главное преимущество: Не требует вычисления производной

Дополнительные преимущества:

  • Всего 1 вычисление f(x) на итерацию (против 2 у Ньютона)

  • Часто более эффективен на практике, если учесть стоимость вычисления производной

  • Проще в реализации

  • Более устойчив в некоторых случаях

Цена: более медленная сходимость (1.618 против 2.0 у Ньютона)

еще вопросики

🔹 Теоретические вопросы

  1. Как выглядит формула метода секущих?

  2. В чём идея метода секущих? Заменяем касательную (как в методе Ньютона) на секущую через две последние точки, чтобы избежать вычисления производной.

  3. Какие начальные данные нужны? Две начальные точки x0,x1x​ (в отличие от метода Ньютона, где нужна одна точка и производная).

  4. Какие условия сходимости?

    • Функция f(x) непрерывна и дифференцируема в окрестности корня.

    • Производная f′(x)≠0 в корне.

    • Начальные приближения достаточно близки и дают разные значения функции.

  5. Как определяется ошибка и критерий останова? Например: Можно добавить КОП по количеству итераций.

  6. Когда метод секущих может не сойтись?

    • Если функция не монотонна рядом с корнем.

    • Если f(xk) и f(xk−1) близки → деление на почти ноль.

    • Если стартовые точки выбраны далеко от истинного корня.

  7. Что происходит, если f(xₖ) = f(xₖ₋₁)? Возникает деление на ноль → метод ломается (неопределённость). Обычно тогда делают перезапуск с другими начальными значениями.

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

  9. Почему медленнее Ньютона? Потому что производная приближённая, а не точная, и поэтому шаг менее точен.

  10. Можно ли методом секущих искать минимум функции? Да, если применить его к производной функции — искать корень уравнения f′(x)=0. Тогда это фактически поиск экстремума без аналитической второй производной.

  11. Что означает “суперлинейная сходимость”? Что ошибка уменьшается быстрее, чем линейно, но не квадратично. Формально: 1<α<2.

  12. Как выбрать начальные приближения?

    • Обычно берут две точки с разными знаками f(x).

    • Или близко к ожидаемому корню (если есть предварительная оценка).

  13. Сколько вычислений функции на итерацию? Обычно одно новое f(x), потому что f(xk−1) и f(xk) уже есть. То есть по эффективности близок к методу Ньютона с аналитической производной.

  14. Почему метод секущих считается компромиссом между точностью и вычислительной сложностью? Потому что не требует f′′, но даёт почти такую же скорость сходимости, как метод Ньютона.

  15. Что будет, если функция сильно нелинейна? Метод может «перескакивать» через корень и расходиться. Иногда помогает уменьшение шага или ограничение интервала.

почему в коп мы проверяем df_b а не df_a

В методе секущих для нахождения экстремума (через производную) мы идём итерациями, и новая точка вычисляется из последних двух приближений — в твоём коде это a и b.

После вычисления новой точки x_k:

x_k = b - df_b * (b - a) / (df_b - df_a)

— точка x_k фактически зависит от последнего значения b, и именно df_b отражает «актуальное состояние» производной в конце отрезка.