Есть функция f четырёх переменных: f=f(d,m,L,b), вид функции неизвестен, однако, задавая эти 4 параметра, мы можем увидеть на выходе значение f. Также, не исключено, что, например, m зависит от d, а d зависит от L, хотя, возможно это не имеет значения.
Задача - найти максимум функции f. Причем область значений 4 переменных задана.
Подойдет ли следующий алгоритм?
Фиксирую три параметра, меняю 1 - скажем, d, смотрю f на выходе, выбираю то d, при котором максимум (шаг некий задан).
Затем фиксирую d,L,b и пробегаюсь по m, нахожу максимум.
И так далее.
В итоге получу набор 4 чисел, соответствующих максимуму ф-ии f, верно?
Здесь вычислять градиент ведь не нужно или я не прав?
Естественные науки
Поиск максимума функции нескольких переменных
Попробуйте метод "локальных вариаций" - он работает не зависимо от вида функции.
f=f(x1,x2,x3,x4)
естественно, сначала выбираете начальные значения (x10,x20,x30,x40).
выбираете малое d>0 и варьируете (x10,x20,x30,x40).
затем рассматриваете функции f(x10,x20,x30,x40), f(x10-d,x20,x30,x40), f(x10+d,x20,x30,x40), f(x10,x20-d,x30,x40), f(x10,x20+d,x30,x40), ..тут перебираете все возможные комбинации переменных с +d и -d....
и ищите максимум среди них
полученную комбинацию переменных, соответствующую максимуму, обозначаете как (x10,x20,x30,x40)
и т. д. определенное количество раз (это число следует подбирать при конкретном расчете)
затем берете новое d=d/2, например,
и т. д. и т. п.
если x1,x2,x3,x4 имеют сильно разный диапазон изменения, то то для каждого xi выбирается свое di
**
если у вас m зависит от d, а d зависит от L, то это очень важно, так как сократится количество переменных и, следовательно, сократится количество вычислений.
***
а та процедура нахождения минимума, которую предложили вы -не верна, это легко увидеть на примере функций 2-х переменных.
f=f(x1,x2,x3,x4)
естественно, сначала выбираете начальные значения (x10,x20,x30,x40).
выбираете малое d>0 и варьируете (x10,x20,x30,x40).
затем рассматриваете функции f(x10,x20,x30,x40), f(x10-d,x20,x30,x40), f(x10+d,x20,x30,x40), f(x10,x20-d,x30,x40), f(x10,x20+d,x30,x40), ..тут перебираете все возможные комбинации переменных с +d и -d....
и ищите максимум среди них
полученную комбинацию переменных, соответствующую максимуму, обозначаете как (x10,x20,x30,x40)
и т. д. определенное количество раз (это число следует подбирать при конкретном расчете)
затем берете новое d=d/2, например,
и т. д. и т. п.
если x1,x2,x3,x4 имеют сильно разный диапазон изменения, то то для каждого xi выбирается свое di
**
если у вас m зависит от d, а d зависит от L, то это очень важно, так как сократится количество переменных и, следовательно, сократится количество вычислений.
***
а та процедура нахождения минимума, которую предложили вы -не верна, это легко увидеть на примере функций 2-х переменных.
Мариша Харина
я там в предпоследнем предложении имела в виду "максимум", хотя суть не меняется..
Сергей Денисов
Ну а, скажем, если максимум f приходится на группу переменных (1,50,48,45), грубо говоря, этот метод же, вроде не рассматривает такие значения? Т. к. то, что вы предложили, это +- некое эпсилон, последовательно примененное к каждой из 4 пер-ых, то есть разрыв (1,50,48,45) не пробегается
Вы предлагаете метод "покоординатного спуска", хотя здесь будет "подъёма". Не для любой функции его можно применить. Надо хоть что-то о функции знать. Но, возможно и так, как вы предлагаете. Только потом нужно ещё несколько раз начать движение с первой координаты, затем 2й... до тех пор, пока изменений в значениях функции не будет. Затем надо уменьшить шаг движения и снова всё повторить. До тех пор, пока шаг не станет меньше "разумного". Желательно, раз f неизвестна, выполнить процедуру от случайных начальных координат несколько раз. Если получится одно и то же, то это довод за то, что вы нашли экстремум. Довод, но не полная уверенность.
Сергей Денисов
Характер f таков, что, например, найдя максимум по d, зафиксировав три других параметра, может запросто произойти следующее: изменив один из фиксированных параметров немного, максимума при выше найденном d может уже не быть. Это можно как-то учесть?
Или, похоже, придется пробегать все множество значений 4 параметров со всеми комбинациями...
Или, похоже, придется пробегать все множество значений 4 параметров со всеми комбинациями...
Кроме координатного спуска (с постоянным и переменным шагом) есть еще методы градиентного спуска (с постоянным и переменным шагом), метод наискорейшего спуска, метод сопряженных направлений. Гуглите и выгуглите!
Похожие вопросы
- Почему в рациональных функциях нельзя поднимать в переменную степень?
- у=10 или у=15 не понятно! как функция модет существовать без независимой переменной? обьясните, пожалуйста, спасибо
- БЕЗ ПОСТРОЕНИЯ ГРАФИКА как понять где максимум, а где минимум функции на пальцах , подоступнее на примерах НЕ ГРАФИЧЕСКИ
- Функция - зависимость одной переменной от другой. у - функция . где логика?
- Ребят помогите решить все с функцией. Мне надо найти область определения, непрерывности, минимум, максимум, найти произв
- как понять Сумма значений функции помноженных на переменную интегрирования? СПАСИБО за ответы
- почему функцию трех и более переменных изобразить с помощью графика невозможно?
- Вопрос про электрический переменный ток.
- Таки чем отличаются переменный ток и ток пульсирующий? Пояснения внутри...
- Как работают электродвигатели на переменном токе? См. вопрос