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

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

def search(interval, tol):

h = 0

a, b = interval

F = [1, 1]

while F[-1] < (b - a) / tol:

F.append(F[-1] + F[-2])

N = len(F) - 1

print(N)

print(F)

coords = []

# F_const = (1 + np.sqrt(5.csv)) / 2

x1 = a + (F[N - 2] / F[N]) * (b - a)

x2 = a + (F[N - 1] / F[N]) * (b - a)

f1 = f(x1)

f2 = f(x2)

neval = 2

for k in range(1, N-1):

h += 1

coords.append([x1, x2, a, b])

if f1 < f2:

b = x2

x2 = x1

f2 = f1

xmin = x1

fmin = f1

x1 = a + (b-a)*(F[N-k-2]/F[N-k])

print(F[N-k-2],F[N-k])

f1 = f(x1)

neval += 1

else:

a = x1

x1 = x2

f1 = f2

xmin = x2

fmin = f2

x2 = a + (b - a) * (F[N - k - 1] / F[N - k])

f2 = f(x2)

neval += 1

# if np.abs(f2-f1) < tol: break

print(h)

answer_ = [xmin, fmin, neval, coords]

return answer_

15. Почему метод Фибоначчи эффективнее золотого сечения? Потому что он точнее управляет длиной интервала — сокращение происходит в соответствии с соотношениями чисел Фибоначчи, а значит, ни одно вычисление функции не тратится зря.

16. Почему метод Фибоначчи требует заранее знать количество шагов? Потому что длина интервала на каждом шаге выражается через Fn, и нужно заранее знать, сколько раз он будет сужаться, чтобы достичь точности ε.

17. Что будет, если задать неправильное количество чисел Фибоначчи? Если меньше — не достигнешь нужной точности; если больше — лишние итерации без пользы.

18. Почему метод Фибоначчи ближе к теоретическому минимуму числа вычислений? Он использует минимально возможное количество обращений к функции, при которых сохраняется гарантированная точность результата.

19. Можно ли применить метод Фибоначчи для негладких функций? Да, можно, потому что не нужны производные — только значения функции на отрезке.

20. Что произойдёт, если ошибка округления в вычислении чисел Фибоначчи? Интервал может уменьшаться неправильно, и метод даст неточную точку минимума. (Поэтому в коде часто используют заранее вычисленные целые значения.)

21. Почему говорят, что метод золотого сечения — “предельный случай” метода Фибоначчи?

22. Какую формулу использовать для подбора числа итераций n?

Эта формула определяет, сколько чисел Фибоначчи нужно для достижения точности ε.

23. В чём практическая разница между золотым сечением и Фибоначчи?

  • Золотое сечение — проще, универсальнее.

  • Фибоначчи — требует расчёта последовательности, но выполняет меньше вычислений функции.

24. Можно ли модифицировать метод Фибоначчи под поиск максимума? Да, точно так же: нужно искать минимум для −f(x).

25. Можно ли комбинировать метод Фибоначчи с другими? Да — его часто используют на финальной стадии, когда нужно уточнить результат после грубого метода (например, дихотомии).

26. Что будет, если интервал [a,b] выбран так, что минимум вне его? Метод не найдёт правильный результат, так как он всегда сужает интервал внутри исходного диапазона.

27. Почему в методе Фибоначчи иногда говорят “экономим одно вычисление”? Потому что в последней итерации одно из значений функции уже известно, и новое вычисление не требуется.

28. Можно ли применять метод Фибоначчи для дискретных функций? Нет, он предполагает непрерывность и унимодальность функции — иначе принцип сравнения f(x1) и f(x2) теряет смысл.

29. Что будет, если функция не унимодальна (несколько минимумов)? Метод может “поймать” не тот минимум — поэтому важно заранее проверить форму функции на интервале.