Как найти минимум функции методом фибоначчи python?

Аватар пользователя Elena Gromova
Elena Gromova
23 сентября 2024

Для поиска минимума функции методом Фибоначчи в Python, сначала необходимо определить интервал, в котором предположительно находится минимум функции. Затем следует реализовать алгоритм поиска минимума методом Фибоначчи.

Вот пример кода на Python для реализации поиска минимума функции методом Фибоначчи:

import math

def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)

def fibonacci_search(func, a, b, tol):
    n = 0
    while fibonacci(n) < (b-a) / tol:
        n += 1

    x1 = a + (fibonacci(n-2) / fibonacci(n)) * (b-a)
    x2 = a + (fibonacci(n-1) / fibonacci(n)) * (b-a)

    f1 = func(x1)
    f2 = func(x2)

    for i in range(2, n):
        if f1 < f2:
            b = x2
            x2 = x1
            f2 = f1
            x1 = a + (fibonacci(n-i) / fibonacci(n-i+2)) * (b-a)
            f1 = func(x1)
        else:
            a = x1
            x1 = x2
            f1 = f2
            x2 = a + (fibonacci(n-i+1) / fibonacci(n-i+2)) * (b-a)
            f2 = func(x2)

    return (a+b) / 2

# пример использования
def f(x):
    return (x-2)**2

x_min = fibonacci_search(f, 0, 4, 0.001)
print(""Минимум функции равен:"", x_min)

В данном примере fibonacci_search - функция, которая принимает на вход функцию func, интервал [a, b], и погрешность tol. Далее она использует ряд Фибоначчи для поиска минимума функции func на заданном интервале с заданной точностью.

Не забудьте подставить свою функцию f(x) и интервал [a, b] в пример кода, чтобы найти минимум функции методом Фибоначчи.

0 0

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Программирование

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Тест-драйв

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

Верстка

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Бесплатные курсы

Бесплатные курсы по тестированию, дата-аналитике, верстке, программированию на Python, Java, PHP и JavaScript.

Базы данных

Фреймворки