Загрузка данных


import scipy.optimize as optim
import numpy as np

# Целевая функция
def f(x):
    x1, x2 = x
    return (x1 - 1.1)**2 + (1.2 * x2 - 1.1)**2 - 1.2 * x1 * x2

# Градиент
def grad(x):
    x1, x2 = x
    df_dx1 = 2 * (x1 - 1.1) - 1.2 * x2
    df_dx2 = 2 * (1.2 * x2 - 1.1) * 1.2 - 1.2 * x1
    return np.array([df_dx1, df_dx2])

# Начальное приближение (предполагаем [0, 3], т.к. в условии опечатка)
x0 = [0.0, 3.0]

# Симплекс-метод (Nelder-Mead)
res_simplex = optim.minimize(f, x0, method='Nelder-Mead')
print('Симплексный метод\n', res_simplex)
print('Минимум:', res_simplex.x, 'Значение функции:', res_simplex.fun, '\n')

# Градиентный метод (BFGS)
res_bfgs = optim.minimize(f, x0, jac=grad, method='BFGS')
print('Градиентный метод\n', res_bfgs)
print('Минимум:', res_bfgs.x, 'Значение функции:', res_bfgs.fun)