Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 14.07.2013
Сообщений: 24

Задачи оптимизации функции

14.07.2013, 17:55. Показов 3135. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужна помощь, никак не могу разобраться с задачей оптимизации функции.
необходимо решить задачу и в каждую оптимизируемую функцию необходимо включить формулы вычисления градиента.
https://www.cyberforum.ru/cgi-bin/latex.cgi?1. f(x)=x1^2+3x2^2+5x3^2\rightarrow min<br />
x\subset R^n
Стартовая точка x0=[0,0,0]

https://www.cyberforum.ru/cgi-bin/latex.cgi?2. f(x)={\epsilon }^{x1+x2+1}-{\epsilon }^{-x1-x2-1}\rightarrow min;<br />
x\in R^n;<br />
x0=[1,1]

https://www.cyberforum.ru/cgi-bin/latex.cgi?3. f(x)=100(x2-sin(x1))^2+0.25x1^2\rightarrow min;<br />
x\in R^n;<br />
x0=[1,1]

необходимо написать 3 программы для решения задач с помощью функции fminunc
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.07.2013, 17:55
Ответы с готовыми решениями:

Решение задачи оптимизации функции
ребят, помогите найти решение задачи оптимизации функции методом ga (Поиск минимума функции при помощи генетического алгоритма) 1. Найти...

Решение задачи оптимизации
Итак, обясняю. Есть функция: = Test( RefData, Data ) Задача состоит в следующем: нужно профильтровать сигнал Data таким...

Реализация задачи оптимизации
День добрый. Имеется массив с семью числами. Необходимо подобрать числа таким образом, чтобы их среднее значение соответствовала числу...

7
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
14.07.2013, 20:37
Хе кажись чуток разобрался.
Первое: судя по хелпу функция записывается так (не забываем m-функция matlab как создать?
Matlab M
1
2
3
4
5
6
7
function [f,g] = myfun1(x)
f = x(1)^2 + 3*x(2)^2 + 5*x(3)^2;  % функция
% считаем градиент
g(1) = 2*x(1); % df/dx1
g(2) = 6*x(2); % df/dx2
g(3) = 10*x(3); % df/dx3
end
Здесь градиент я считал в уме.
И программа расчета:
Matlab M
1
2
3
4
5
clear, clc
x0 = [0 0 0];
options = optimset('GradObj','on');
[x,fval,exitflag,output,grad] = fminunc(@myfun1,x0,options);
x, fval, grad
В результате получим
Matlab M
1
2
3
4
5
6
7
8
9
10
x =
     0     0     0
 
fval =
     0
 
grad =
     0
     0
     0
Не пугайся, так и должно быть!
Вторую я решил заставить матлаб самому считать частные производные (градиент):
Matlab M
1
2
3
4
5
6
7
8
function [f,g] = myfun2(x)
f = exp(x(1)+x(2)+1)-exp(-x(1)-x(2)-1);  % функция
Ga = diff(sym('exp(a+b+1)-exp(-a-b-1)'),1,'a'); % df/da
Gb = diff(sym('exp(a+b+1)-exp(-a-b-1)'),1,'b'); % df/db
% считаем градиент
g(1) = double(subs(Ga,{'a','b'},{x(1),x(2)})); % df/dx1
g(2) = double(subs(Gb,{'a','b'},{x(1),x(2)})); % df/dx2
end
И программа расчета:
Matlab M
1
2
3
4
5
6
clear, clc
 
x0 = [1 1];
options = optimset('GradObj','on','Display','iter');
[x,fval,exitflag,output,grad] = fminunc(@myfun2,x0,options);
x, fval, grad
А вот тут получается затыка...
Matlab M
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
                                Norm of      First-order 
 Iteration        f(x)          step          optimality   CG-iterations
     0            20.0357                          20.1                
     1            7.21361       0.710886           7.49           1
     2            2.23426       0.730324              3           1
     3          -0.804712       0.957453           2.16           1
     4      -2.05207e+006             10      2.05e+006           1
     5      -3.94361e+018             20      3.94e+018           1
     6      -1.45646e+043             40      1.46e+043           1
     7      -1.98661e+092             80      1.99e+092           1
     8      -1.43552e+179        141.421      1.44e+179           1
Warning: Matrix is singular to working precision. 
> In optim\private\pcgr>preproj at 108
  In optim\private\pcgr at 31
  In optim\private\trdog at 58
  In sfminbx at 296
  In fminunc at 379
  In temp1 at 5
 
??? Error using ==> sfminbx at 214
fminunc cannot continue: user function is returning Inf or NaN values.
 
Error in ==> fminunc at 379
   [x,FVAL,LAMBDA,EXITFLAG,OUTPUT,GRAD,HESSIAN] = sfminbx(funfcn,x,l,u, ...
 
Error in ==> temp1 at 5
[x,fval,exitflag,output,grad] = fminunc(@myfun2,x0,options);
Как можно заметить, функция скатывается в минус бесконечность, где и находит свой минимум может в формуле ошибка?
А с третьей проблем не возникло
Matlab M
1
2
3
4
5
6
7
8
function [f,g] = myfun3(x)
f = 100*(x(2)-sin(x(1)))^2 + 0.25*x(1)^2;  % функция
Ga = diff(sym('100*(b-sin(a))^2 + 0.25*a^2'),1,'a'); % df/da
Gb = diff(sym('100*(b-sin(a))^2 + 0.25*a^2'),1,'b'); % df/db
% считаем градиент
g(1) = double(subs(Ga,{'a','b'},{x(1),x(2)})); % df/dx1
g(2) = double(subs(Gb,{'a','b'},{x(1),x(2)})); % df/dx2
end
Программа рассчета:
Matlab M
1
2
3
4
5
6
clear, clc
 
x0 = [1 1];
options = optimset('GradObj','on','Display','iter');
[x,fval,exitflag,output,grad] = fminunc(@myfun3,x0,options);
x, fval, grad
И результат:
Matlab M
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
                                Norm of      First-order 
 Iteration        f(x)          step          optimality   CG-iterations
     0            2.76314                          31.7                
     1           0.240529       0.169111          0.359           1
     2           0.240529       0.445804          0.359           1
     3           0.196857       0.111451          0.818           0
     4           0.140803       0.222902           2.79           1
     5          0.0866804       0.152915           0.88           1
     6          0.0866804       0.470592           0.88           1
     7          0.0628601       0.111451          0.549           0
     8          0.0313815       0.222902           1.23           1
     9         0.00753277       0.254775           0.87           1
    10        0.000391219       0.164094          0.172           1
    11       3.34753e-008      0.0515218       0.000832           1
    12       2.41041e-019    0.000506918      1.34e-009           1
 
Local minimum found.
 
Optimization completed because the size of the gradient is less than
the default value of the function tolerance.
<stopping criteria details>
 
 
x =
  1.0e-009 *
   -0.9783   -0.9740
 
fval =
  2.4104e-019
 
grad =
  1.0e-008 *
   -0.1337
    0.0848
Как-то так! *с генетическими алгоритмами не знаком
0
0 / 0 / 0
Регистрация: 14.07.2013
Сообщений: 24
14.07.2013, 21:07  [ТС]
спасибо огромное, сейчас буду разбираться, и да во втором ошибка, должно быть
https://www.cyberforum.ru/cgi-bin/latex.cgi?f(x)={e}^{x1+x2+1}-{e}^{-x1-x2-1}+{e}^{-x1-1}\rightarrow min
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
14.07.2013, 21:24
Lerch, а попробуй сама, по образу и подобию! (я правильно догадался, ты девочка?) если что-то не понятно или не получится - спрашивай
0
0 / 0 / 0
Регистрация: 14.07.2013
Сообщений: 24
14.07.2013, 21:38  [ТС]
ахах
да я девочка)
попробую сейчас сама)
спасибо огромнейшее за помощь)
будут вопросы обязательно спрошу

Добавлено через 12 минут
Matlab M
1
2
3
4
5
6
7
8
function [f,g] = myfun2(x)
f = exp(x(1)+x(2)+1)-exp(-x(1)-x(2)-1)+exp(-x(1)-1);  % функция
Ga = diff(sym('exp(a+b+1)-exp(-a-b-1)+exp(-a-1)'),1,'a'); % df/da
Gb = diff(sym('exp(a+b+1)-exp(-a-b-1)+exp(-a-1)'),1,'b'); % df/db
% считаем градиент
g(1) = double(subs(Ga,{'a','b'},{x(1),x(2)})); % df/dx1
g(2) = double(subs(Gb,{'a','b'},{x(1),x(2)})); % df/dx2
end
вроде по образцу делаю, но в ответе огромное кольчество красных строчек(((
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
14.07.2013, 21:53
Lerch, молодчинка!
Лапка, ты если глянешь, что пишет до ошибок, в самом начале, то увидишь:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
                               Norm of      First-order 
 Iteration        f(x)          step          optimality   CG-iterations
     0            20.1711                          20.1                
     1            7.28618        1.74355           7.49           1
     2            2.29437        1.34876              3           1
     3          -0.777667        2.79893           2.15           1
     4      -2.04128e+006             10      2.04e+006           1
     5      -3.91767e+018             20      3.92e+018           1
     6      -1.44523e+043             40      1.45e+043           1
     7      -1.97093e+092             80      1.97e+092           1
     8      -1.42382e+179        141.421      1.42e+179           1
Ну а дальше начинаются сингулярные матрицы и ошибки...
Что мы тут видим? (смотри значения f(x) во втором столбце) Функция так же само как ив первом случае монотонно уходит в минус бесконечность!
Ну чтож, либо начальная точка не очень подходящая, либо у функции нет минимума!
0
0 / 0 / 0
Регистрация: 14.07.2013
Сообщений: 24
14.07.2013, 22:17  [ТС]
значит так и напишу своим руководителям, что некорректная задача у них)
еще раз спасибо огромное за помощь
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
14.07.2013, 22:39
Да я проверил другой минимумоискалкой:
Matlab M
1
2
3
4
5
clear, clc
f = @(x) exp(x(1)+x(2)+1)-exp(-x(1)-x(2)-1)+exp(-x(1)-1);
x0 = [1 1];
options = optimset('Display','iter');
[x,fval] = fminsearch(f,x0,options);
Тож самоэ!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2013, 22:39
Помогаю со студенческими работами здесь

Исследовать зависимость решения задачи оптимизации от нескольких управляемых переменных
Добрый вечер! Хотелось бы попросить помощи\консультации у людей которые понимают в данной теме. Проблема заключается в следующем,...

Промежуточные результаты функции оптимизации
Задаю параметры оптимизации с помощью структуры opt_contirions = optimset('TolFun', 1e-7, 'TolX', 1e-10, 'MaxFunEvals', 100, 'MaxIter',...

Метод Оптимизации, нахождение минимума функции
Нужно найти производную ,приравнять её к нулю и найти минимум функции и сам аргумент. %Приведем пример расчета максимальной...

Задачи оптимизации
Помогите решить, пожалуйста. Задача условной оптимизации Z(X)=2x1+3x2+2x3-&gt;min {2x1+3x2-2x3≥2 -3x1-6x2+3x3=-5 ...

Задачи оптимизации
Задачи оптимизации Аго, зачем дублировать темы? На первый раз - предупреждение. Дубль удаляю.


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru