реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Экстремум функции двух переменных.
Костян
сообщение Mar 26 2014, 05:49
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Дана функция двух переменных f(x,y).
Известны значения f(x,y) вблизи экстремума.
Как найти значение x,y при котором функции f(x,y) имеет экстремум ?

Пример:
Функция f(x,y) вблизи экстремума принимает значения, запишем их в виде матрицы 3х3
CODE
      
      | 1  ,  1 ,  1   |
F = | 1 ,  3,    2   |
      | 1,   1,   1.5 |


Т.е эктремум функции будет примерно при x=2.2 , y = 2.1 .

Как это вычислить точно?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 26 2014, 06:00
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



http://www.cyberforum.ru/matlab/thread580749.html
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Mar 26 2014, 06:07
Сообщение #3





Guests






Если сам, то методы: координатного спуска, градиентный, наискорейшего спуска, метод сопряженных градиентов и т.д.
Если не сам, то в матлаб fminsearch(..)
Go to the top of the page
 
+Quote Post
Костян
сообщение Mar 26 2014, 08:21
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Спасибо. Матлаб хорошо, но нужно самому sm.gif. На языке крутиться идея, но выразить не получается.
И эксремум мне необходим в максимуме функции. Странно , но в матлабе нету fmaxsearch()/
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Mar 26 2014, 08:51
Сообщение #5





Guests






Так написал же выше..
Еще симплекс-метод и еще куча.


Цитата(Костян @ Mar 26 2014, 12:21) *
И эксремум мне необходим в максимуме функции. Странно , но в матлабе нету fmaxsearch()/


имя функции берется с минусом - будет максимум.
Go to the top of the page
 
+Quote Post
Костян
сообщение Mar 26 2014, 09:39
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Спасибо, изучаю.

Может ли упростится задача, если ответ нужен только под одной переменной X, У - не интересует ?
Go to the top of the page
 
+Quote Post
Xenia
сообщение Mar 26 2014, 10:18
Сообщение #7


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



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

Например, уравнением
F(x,y) = a*x^2 + b*y^2 + c*x + d*y + e
Тут неизвестных 5 штук (a,b,c,d,e), а известных точек в открестности максимума 9.
Значит, решение здесь есть, как у переопределенной системы из 9-ти уравнений с 5-ю неизвестными.
А дальше каждый максимум определяется тривиально:
X = -0.5*c/a
Y = -0.5*d/b
Go to the top of the page
 
+Quote Post
Костян
сообщение Mar 26 2014, 10:38
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



QUOTE (Xenia @ Mar 26 2014, 09:18) *
Может быть аппроксимировать функцию возле вершины двумерной параболой?

Да, я думал про апроксимацию параболой.
Желательно оптимальный алгоритм для реализации в ПЛИС найти.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Mar 26 2014, 10:52
Сообщение #9


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Костян @ Mar 26 2014, 14:38) *
Да, я думал про апроксимацию параболой.
Желательно оптимальный алгоритм для реализации в ПЛИС найти.


А чем этот вариант плох для ПЛИС?
Если начало координат установить в центральную точку (центральная из 9-ти), то левая часть системы уравнений будет всегда одинаковой. Ее можно (псевдо)инвертировать вручную (МатЛабом), а на долю ПЛИС останется только работа множить эту матрицу на реальные значения функции в 9-ти точках. Это даже без матричных операций можно запрограммировать. После умножения получатся коэффициенты (a,b,c,d,e), причем на вычислении последнего можно сэкономить, т.к. для дальнейшего расчета координат он не нужен. Т.е. потребуется 36 (9х4) умножений и столько же сложений. Координаты получатся виде смещения от центральной точки (там еще 2 умножения и 2 деления).

Но если ваша ПЛИС умножать, складывать и делить (иные операции здесь не требуются) не умеет, то тогда я пас.
Go to the top of the page
 
+Quote Post
AnatolyT
сообщение Mar 26 2014, 16:52
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 29-03-10
Пользователь №: 56 269



Попробую. Каждая частная производная первого порядка в точке экстремума равняется нулю. То есть нужно решить систему из двух уравнений, {df\dx=0; df\dy=0;}. Для определения координаты экстремума необходимо задаться определенной точностью, то есть величинами dx , dy и df. Принимая во внимание что наша функция непрерывна и экстремум единственный в заданной матрице, можно использовать закон аппроксимации (парабола или др.) и по 9-ти точкам из матрицы построить криволинейную поверхность методами машинной графики с шагом dx, dy и затем в двойном цикле найти частные экстремумы (f(x(n))-f(x(n+1)))<df, (f(y(n))-f(y(n+1)))<df или просто найти максимальное значение функции f(x(n),y(n)) если уверены что там максимум.

Сообщение отредактировал AnatolyT - Mar 26 2014, 17:01
Go to the top of the page
 
+Quote Post
_pv
сообщение Mar 26 2014, 18:38
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



усреднить по столбцам и по стокам,
по горизонтали 1, 1.6, 1.5
по вертикали 1, 2, 1.1666
по трем точкам провести параболы найти максимумы. не совсем честно, зато считать быстро.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01438 секунд с 7
ELECTRONIX ©2004-2016