Изучение оптимизации: поиск минимума с помощью arg min

В мире математики и информатики оптимизация играет решающую роль в решении различных задач. Одной из распространенных задач является поиск минимального значения функции, и именно здесь в игру вступает оператор arg min. В этой статье мы углубимся в концепцию arg min, рассмотрим различные методы поиска минимума и попутно предоставим примеры кода. Так что хватайте шляпу программиста и начнем!

Что такое arg min:
Arg min, сокращение от «аргумент минимума», — это оператор, используемый для поиска входного значения, которое минимизирует заданную функцию. Он представляет собой аргумент (вход), для которого функция достигает минимального значения. В LaTeX мы можем обозначить arg min с помощью команды “\arg\min”.

Теперь, когда мы понимаем основы, давайте рассмотрим некоторые методы поиска минимума с помощью arg min.

  1. Грубая сила.
    Самый простой метод – это метод грубой силы, при котором мы оцениваем функцию для диапазона входных значений и находим то, которое дает минимальное значение. Хотя этот метод может быть дорогостоящим в вычислительном отношении для больших функций или интервалов, он обеспечивает простое решение. Вот пример на Python:
def f(x):
    # Define your function here
    return x  2 + 3 * x - 5
def argmin_brute_force():
    min_value = float('inf')
    arg_min = None
    for x in range(-10, 11):
        value = f(x)
        if value < min_value:
            min_value = value
            arg_min = x
    return arg_min
result = argmin_brute_force()
print("arg min:", result)
  1. Методы на основе производных.
    Другим популярным подходом является использование методов оптимизации на основе производных. Эти методы используют производную функции для итеративного приближения к минимуму. Одним из таких методов является градиентный спуск, который обновляет входное значение в направлении наибольшего спуска. Вот пример использования библиотеки SciPy в Python:
from scipy.optimize import minimize_scalar
result = minimize_scalar(f, method='bounded', bounds=(-10, 10))
print("arg min:", result.x)
  1. Метод Ньютона.
    Метод Ньютона — это итеративный алгоритм оптимизации, который использует производную и вторую производную функции для поиска минимума. Он быстро сходится для функций с хорошим поведением. Вот пример использования библиотеки SymPy на Python:
from sympy import symbols, diff, solve
x = symbols('x')
f_expr = x  2 + 3 * x - 5
f_prime = diff(f_expr, x)
f_double_prime = diff(f_prime, x)
arg_min = solve(f_prime, x)[0]
print("arg min:", arg_min)