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