Переменные и выражения являются базовым элементом рабочего процесса оптимизации на основе задач. Для легальных операций с переменными оптимизации и выражениями:
x и y представляют оптимизационные массивы произвольного размера (обычно того же размера).
x2D и y2D представляют 2-D оптимизационные массивы.
a является скалярной числовой константой.
M является постоянной числовой матрицей.
c - числовой массив того же размера, что и x.
Предупреждение
Основанный на проблеме подход не поддерживает комплексные числа в целевой функции, нелинейных равенствах и нелинейных неравенствах. Если при вычислении функции встретится комплексное число, даже как промежуточное значение, конечный результат может оказаться неправильным.
Эти использования с переменных оптимизации или выражениями возвращают выражение оптимизации.
| Категория | Операция | Пример |
|---|---|---|
| Арифметика | Добавьте константу | x+c или c+x |
| Добавить переменную | x+y | |
| Унарный плюс | +x | |
| Вычесть константу | x-c | |
| Вычитайте переменные | x–y | |
| Унарный минус | -x | |
| Умножьте на постоянный скаляр | a*x или a.*x или x*a или x.*a | |
| Разделите на постоянный скаляр | x/a или x./a или a\x или a.\x | |
| Точечное умножение на массив | c.*x или x.*c | |
| Точечное деление на массив | x./c или c.\x | |
| Точечное умножение переменных | x.*y | |
| Матричные переменные умножения | x2D*y2D, или x*y когда x или y является скаляром | |
| Матричная переменная умножения и матрица | M*x2D или x2D*M | |
| Скалярный продукт переменной и массива | dot(x,c) или dot(c,x) | |
| Линейная комбинация переменных | sum(x), sum(x,dim), sum(x,'all'), mean(x), и mean(x,dim) | |
| Произведение элементов массива | prod(x), prod(x,dim), и prod(x,'all') | |
| Трассировка матрицы | trace(x2D) | |
| Совокупная сумма или продукт | cumsum(x) или cumprod(x), включая синтаксисы cumsum(x,dim), cumsum(_,direction), cumprod(x,dim), и cumprod(_,direction) | |
| Различия | diff(x), включая синтаксисы diff(x,n) и diff(x,n,dim) | |
| Конкатенация и изменение формы | Переместить | x' или x.' |
| Конкатенация | cat, vertcat, и horzcat | |
| Измениться | reshape(x,[10 1]) | |
| Создайте диагональную матрицу или получите диагональные элементы матрицы | diag(x2D), где x2D является матрицей или вектором, включая синтаксис diag(x2D,k) | |
| Элементарные функции | Степень квадратной матрицы | x2D^a |
| Точечная степень | x.^a | |
| Квадратный корень | sqrt(x) | |
| Норма (евклидова) | norm(x), который вычисляет sqrt(sum(x.^2,'all')) | |
| Синус | sin(x) | |
| Косинус | cos(x) | |
| Секанс | sec(x) | |
| Косеканс | csc(x) | |
| Тангенс | tan(x) | |
| Arcsine | asin(x) | |
| Arccosine | acos(x) | |
| Arcsecant | asec(x) | |
| Arccosecant | acsc(x) | |
| Арктангенс | atan(x) | |
| Экспоненциал | exp(x) | |
| Логарифм | log(x) | |
| Гиперболический синус | sinh(x) | |
| Гиперболический косинус | cosh(x) | |
| Гиперболический секант | sech(x) | |
| Гиперболический косекант | csch(x) | |
| Гиперболический тангенс | tanh(x) | |
| Обратный гиперболический синус | asinh(x) | |
| Обратный гиперболический косинус | acosh(x) | |
| Обратный гиперболический секант | asech(x) | |
| Обратный гиперболический косекант | acsch(x) | |
| Обратный гиперболический тангенс | atanh(x) |
Примечание
a^x не поддерживается для переменной оптимизации x.
Однако, если вы связались a чтобы быть строго положительным, вы можете использовать эквивалентный exp(x*log(a)).
Эти операции с переменными оптимизации возвращают переменную оптимизации.
| Операция | Пример |
|---|---|
N-D числовая индексация (включает двоеточие и end) | x(3,5:end) |
| N-D логическая индексация | x(ind), где ind является логическим массивом |
| Индексирование N-D строк | x(str1,str2), где str1 и str2 являются строками |
| Смешанная индексация N-D (комбинация числа, логики, двоеточия, конца и строки) | x(ind,str1,:) |
Линейная числовая индексация (включает двоеточие и end) | x(17:end) |
| Линейная логическая индексация | x(ind) |
| Линейная индексация строк | x(str1) |
Выражения оптимизации поддерживают все операции, которые поддерживают переменные оптимизации, и возвращают выражения оптимизации. Кроме того, можно индексировать в или назначить в выражение оптимизации с помощью числового, логического, строкового или линейного индексирования, включая двоеточие и end операторы для числовой или линейной индексации.
Ограничениями являются любые две comparable expressions, которые включают один из следующих операторов сравнения: ==, <=, или >=. Сопоставимые выражения имеют тот же размер, или одно из выражений должно быть скаляр, то есть размер 1 на 1. Для примеров смотрите Выражения для ограничений и уравнений.
Внутренне некоторые функции и операции вызывают только документированные поддерживаемые операции. В этих случаях можно получить разумные результаты из функций или операций. Для примера, в настоящее время squeeze внутренние вызовы reshape, которая является документированной поддерживаемой операцией. Так что, если вы squeeze переменная оптимизации, тогда вы можете получить разумное выражение.
Если ваша целевая функция или нелинейные функции ограничений не поддерживаются, преобразуйте MATLAB® функцию в выражение оптимизации при помощи fcn2optimexpr. Для примеров смотрите Преобразование нелинейной функции в выражение оптимизации или fcn2optimexpr страница с описанием функции.
fcn2optimexpr | OptimizationExpression | OptimizationVariable