Выпуклая функция (Convex Function) - Лена Капаца
Выпуклая функция (Convex Function) by Лена Капаца Feb. 18, 2024 Основы

Выпуклая функция — это тип функции, которая обладает важным свойством: её сегмент линии, соединяющий любые две точки графика этой функции, находится выше или на графике функции.

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

Функция \(f: \mathbb{R}^n \rightarrow \mathbb{R}\) называется выпуклой, если для любых двух точек \(x, y \in \mathbb{R}^n\) и любого \(\theta \in [0, 1]\) выполняется неравенство:

\[f(\theta x + (1-\theta)y) \leq \theta f(x) + (1-\theta)f(y)\]

Это определение говорит о том, что значение функции в точке на прямой, соединяющей \(x\) и \(y\), не превышает средневзвешенного значения функций в этих точках.

Выпуклые функции обладают рядом важных свойств:
- Локальный минимум выпуклой функции также является глобальным минимумом.
- Если функция выпукла, то её эпиграф (множество точек, лежащих выше графика функции) также выпукл.
- Сумма выпуклых функций также является выпуклой функцией.

 

Примерами выпуклых функций являются:
- \(f(x) = x^2\), квадратичная функция
- \(f(x) = e^x\), экспоненциальная функция
- \(f(x) = |x|\), модуль \(x\)

 

Рассмотрим пример, демонстрирующий проверку, является ли функция \(f(x) = x^2\) выпуклой на интервале. Мы воспользуемся определением выпуклости функции, проверяя неравенство для различных значений \(x\), \(y\) и \(\theta\).


def f(x):
    return x**2

def is_convex(f, x, y, theta):
    return f(theta*x + (1-theta)*y) <= theta*f(x) + (1-theta)*f(y)

# Проверка на интервале от -10 до 10 с шагом 1 и theta = 0.5
x_values = range(-10, 11)
y_values = range(-10, 11)
theta = 0.5

convex = True
for x in x_values:
    for y in y_values:
        if not is_convex(f, x, y, theta):
            convex = False
            break

if convex:
    print("Функция выпукла")
else:
    print("Функция не выпукла")

 

Этот код проверяет выпуклость функции \(f(x) = x^2\) на заданном интервале, используя средневзвешенное значение для различных \(x\) и \(y\) с фиксированным \(\theta = 0.5\). В данном случае, вывод будет подтверждать, что \(f(x) = x^2\) является выпуклой функцией, что соответствует теоретическим свойствам квадратичной функции.

Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.

© Лена Капаца. Все права защищены.