Решатели Optimization Toolbox™ принимают векторы для многих аргументов, таких как начальная точка x0
, нижние границы lb
, и верхние границы ub
. Они также принимают матрицы для этих аргументов, где матрица означает массив любого размера. Когда аргументы решателя являются, естественно, массивами, а не векторами, не стесняйтесь предоставлять аргументы как массивы.
Вот как решатели обрабатывают матричные аргументы.
Внутренне решатели преобразуют матричные аргументы в векторы перед обработкой. Для примера, x0
становится x0(:)
. Объяснение этого синтаксиса смотрите в A(:)
вход в colon
, или раздел «Индексация с одним индексом» в разделе «Индексация массивов».
Для выхода решатели изменяют форму решения x
того же размера, что и входной x0
.
Когда x0
является матрицей, решатели проходят x
как матрица того же размера, что и x0
как к целевой функции, так и к любой нелинейной ограничительной функции.
Однако линейные ограничения берут x
в векторной форме, x(:)
. Другими словами, линейное ограничение вида
A*x ≤ b
или Aeq*x = beq
принимает x
как вектор, а не как матрица. Убедитесь, что ваша матрица A
или Aeq
имеет одинаковое число столбцов как x0
имеет элементы, или решатель будет ошибкой.