0 / 0 / 0
Регистрация: 23.02.2021
Сообщений: 16

Нахождение экстремума функции нескольких переменных методом градиентного спуска

27.05.2021, 22:40. Показов 8162. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
написал програму для нахождения экстремума функции нескольких переменных методом градиентного спуска програма видает
такой ответ (-190.0 -210.0 117339.0 1) программа некорректно определяет экстремум, должно быть такой ответ:
max {11 - 2 x ^ 2 + y (5 - y)} = 69/4 at (x, y) = (0, 5/2)


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
 
from math import sqrt, fabs
 
 
def F(x, y):
    return 11 - 2*x**2 + y * (5 - y)
 
 
def dfdx(x, y):
    return 2*(x + 1)
 
 
def dfdy(x, y):
    return 2 * y
 
 
def vX(x, y):
    return -dfdx(x, y)
 
 
def vY(x, y):
    return -dfdy(x, y)
 
 
def Xt(t):
    return x_0 + t * vX(x_0, y_0)
 
 
def Yt(t):
    return y_0 + t * vY(x_0, y_0)
 
 
def Ft(t):
    return F(Xt(t), Yt(t))
 
 
def Max_t(a, b, e):
    tau = (-1 + sqrt(5))/2
    c = a + (b - a) * (1 - tau)
    c_1 = a + (b - a) * tau
    while fabs(b - a) > e:
        if Ft(c_1) > Ft(c):
            a = c
            c = c_1
            c_1 = a + (b - a) * tau
        else:
            b = c_1
            c_1 = c
            c = a + (b - a) * (1 - tau)
    return (a + b)/2
 
 
def main(x_0, y_0):
    e = 0.000001
    it = 0
    x_1 = 0
    y_1 = 0
    while fabs(x_0 - x_1) > e or fabs(y_0-y_1) > e:
        t_max = Max_t(x_0, y_0, e)
        x_1 = Xt(t_max)
        y_1 = Yt(t_max)
        it += 1
        x_0 = x_1
        y_0 = y_1
    print(x_1, y_1, F(x_1, y_1), it)
 
 
if __name__ == "__main__":
    x_0 = -10
    y_0 = -10
    main(x_0, y_0)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2021, 22:40
Ответы с готовыми решениями:

Поиск экстремума функции нескольких переменных с градиентного метода
Поиск экстремума функции нескольких переменных с помощью градиентного метода

Оптимизация функции, зависящей от 8 переменных, методом наискорейшего градиентного спуска
Программа должна и вроде бы как представляет собой оптимизацию функции, зависящей от 8 переменных, методом наискорейшего градиентного...

Найти экстремум функции двух переменных методом градиентного спуска
Ругается на cout << setw(4) << setprecision(5) << x; и clrscr(); Разные библиотеки пробовал но запустить не получилось... ошибка и всё, в...

2
Эксперт Python
8815 / 4468 / 1862
Регистрация: 27.03.2020
Сообщений: 7,287
28.05.2021, 00:00
Лучший ответ Сообщение было отмечено lulson как решение

Решение

lulson,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import numpy as np
 
def f(x):
    return 11 - 2*x[0]**2 + x[1] * (5 - x[1])
 
def dfdx(x):
    return np.array([-4*x[0], 5 - 2*x[1]])
 
def gradsteps(f, r, epsg=1e-6, alpha=0.4, maxiter=100): 
    #xlist = [r]
    for itera in range(maxiter):
        arr_r = dfdx(r) 
        summa = sum(arr_r**2)
        r = r + alpha * arr_r 
        if np.sqrt(summa) < epsg:
            break      
    r = np.round(r, 6)
    return r.tolist(), f(r), itera
 
r = np.array([-10, -10])
 
gradsteps_f_x = gradsteps(f, r)
print(gradsteps_f_x)
2
5454 / 2818 / 566
Регистрация: 07.11.2019
Сообщений: 4,648
28.05.2021, 06:23
lulson, у вас частные производные неправильные.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2021, 06:23
Помогаю со студенческими работами здесь

Найти минимум многомерной функции методом градиентного спуска или покоординатного спуска
Найти минимум многомерной функции методом градиентного спуска или покоординатного спуска

Найти минимум функции методом градиентного спуска
Помогите пожалуйста написать прогу для нахождения минимума функции методом градиентного спуска на C#, с объяснением пожалуйста.

Поиска минимума функции методом штрафной функции. Метод градиентного спуска
В данном методе самое нахождение минимума основывается на методе безусловной оптимизации(градиентный метод(он же наискорейшего спуска))...

Найти минимум квадратичной функции и функции четвертой степени методом градиентного спуска
Помогите найти минимум квадратичной функции и функции четветой степени методом градиентного спуска.

Минимизация функции методом градиентного спуска с дроблением шага. Ошибка!
Уважаемые товарищи! Не могу справиться с задачей( Минимизация функции методом градиентного спуска с дроблением шага. Программа указывает на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru