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;
Если у вас есть нелинейная функция, которая не является многочленным или рациональным выражением, преобразуйте его в выражение оптимизации при помощи 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