Функция минимизации, которая принимает n векторов в качестве входных данных - PullRequest
1 голос
/ 28 октября 2019

Я бы хотел минимизировать функцию в MATLAB, которая принимает n векторов в качестве входных данных

Точнее: у меня есть n точек в 3D-пространстве, которые описывают замкнутую кривую, скажем, круг.

n = 10;
t = linspace(0,1,10);

x = cos(2*pi*t);
y = sin(2*pi*t);
z = zeros(1,length(2*pi*t));

vec = [x;y;z]
scalar = function my_fun(vec)

Таким образом, точки, представляющие кривую в пространстве, определяются как vec(:,1),...,vec(:,n). Моя функция берет точки (vec) и вычисляет некоторую энергию, поэтому на выходе получается скаляр.

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

1 Ответ

2 голосов
/ 29 октября 2019

fminsearch может оптимизировать функцию, которая принимает любой один массив в качестве входных данных. Ваша функция принимает один входной аргумент vec, который является 2D-массивом. Это может быть напрямую оптимизировано:

init = randn(3,n);
answer = fminsearch(my_fun,init);

Обратите внимание, что с n=10 у вас есть 30 переменных для оптимизации, что много. Это будет дорого и может застрять в локальном минимуме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...