Основанный на проблеме рабочий процесс для решения уравнений

Примечание

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, как объяснено в разделе «Изменение решателя по умолчанию» или «Опции».

Предупреждение

Основанный на проблеме подход не поддерживает комплексные числа в целевой функции, нелинейных равенствах и нелинейных неравенствах. Если при вычислении функции встретится комплексное число, даже как промежуточное значение, конечный результат может оказаться неправильным.

Для базового примера решения уравнений с полиномами смотрите Решение нелинейной Системы Многочленов, Основанная на Проблеме. Для общего нелинейного примера см. «Решение нелинейной системы уравнений, основанная на проблеме». Для более обширных примеров см. Системы нелинейных уравнений.

См. также

| | | | | |

Похожие темы