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