Примечание
Optimization Toolbox™ предоставляет два подхода для решения уравнений. В этом разделе описывается основанный на подходе , основанном на проблеме. Настройка задачи оптимизации на основе решателя описывает подход, основанный на решателе.
Чтобы решить систему уравнений, выполните следующие шаги.
Создайте объект задачи уравнения при помощи eqnproblem
. Объект задачи является контейнером, в котором вы задаете уравнения. Объект задачи уравнения задает задачу и любые границы, которые существуют в переменных задачи.
Для примера создайте задачу уравнения.
prob = eqnproblem;
Создайте именованные переменные при помощи optimvar
. Переменная оптимизации является символьной переменной, которую вы используете для описания уравнений. Включите все границы в определения переменных.
Например, создайте массив переменных 15 на 3 с именем 'x'
с нижними границами 0
и верхние границы 1
.
x = optimvar('x',15,3,'LowerBound',0,'UpperBound',1);
Задайте уравнения в переменных задачи. Для примера:
sumeq = sum(x,2) == 1; prob.Equations.sumeq = sumeq;
Примечание
Если у вас есть нелинейная функция, которая не состоит из полиномов, рациональных выражений и элементарных функций, таких как exp
, затем преобразуйте функцию в выражение оптимизации при помощи fcn2optimexpr
. Смотрите Преобразование нелинейной функции в выражение оптимизации и Поддерживаемые Операции над Переменными Оптимизации и Выражениями.
При необходимости включите дополнительные параметры в свои уравнения как переменные рабочей области; см. «Передайте дополнительные параметры в основанном на проблеме подходе».
Для нелинейных задач задайте начальную точку как структуру, поля которой являются именами переменных оптимизации. Для примера:
x0.x = randn(size(x));
x0.y = eye(4); % Assumes y is a 4-by-4 variable
Решите проблему при помощи solve
.
sol = solve(prob);
% Or, for nonlinear problems,
sol = solve(prob,x0)
В дополнение к этим базовым шагам можно просмотреть описание задачи перед решением задачи при помощи show
или write
. Установите опции для solve
при помощи optimoptions
, как объяснено в разделе «Изменение решателя по умолчанию» или «Опции».
Предупреждение
Основанный на проблеме подход не поддерживает комплексные числа в целевой функции, нелинейных равенствах и нелинейных неравенствах. Если при вычислении функции встретится комплексное число, даже как промежуточное значение, конечный результат может оказаться неправильным.
Для базового примера решения уравнений с полиномами смотрите Решение нелинейной Системы Многочленов, Основанная на Проблеме. Для общего нелинейного примера см. «Решение нелинейной системы уравнений, основанная на проблеме». Для более обширных примеров см. Системы нелинейных уравнений.
eqnproblem
| fcn2optimexpr
| optimoptions
| optimvar
| show
| solve
| write