lsqlin
РешательВ этом примере показано, как использовать Оптимизировать задачу Live Editor решить задачу метода наименьших квадратов с ограничениями.
Проблема в этом примере состоит в том, чтобы найти точку на плоском x 1 + 2x2 + 4x3 = 7, который является самым близким началу координат. Самый легкий способ решить эту задачу состоит в том, чтобы минимизировать квадрат расстояния от точки x = (x 1, x 2, x 3) на плоскости до начала координат, который возвращает ту же оптимальную точку как минимизация фактического расстояния. Поскольку квадрат расстояния от произвольной точки (x 1, x 2, x 3) до начала координат , можно описать проблему можно следующим образом:
подвергните ограничению
x 1 + 2x2 + 4x3 = 7. | (1) |
Функциональный f (x) является целевой функцией, и x 1 + 2x2 + 4x3 = 7 является ограничением равенства. Более сложные проблемы могут содержать другие ограничения равенства, ограничения неравенства и верхние или нижние границы ограничений.
Настройте проблему с lsqlin
решатель в Оптимизировать задаче Live Editor.
Создайте новый live скрипт путем нажатия кнопки New Live Script в разделе File по вкладке Home.
Вставьте Оптимизировать задачу Live Editor. Кликните по вкладке Insert и затем, в разделе Code, выберите Task > Optimize.
В разделе Specify problem type задачи выберите Objective > Least squares и Constraints > Linear equality.
Задача выбирает lsqlin
как рекомендуемый решатель.
Получить данные C
и d
в MATLAB® рабочая область, нажмите кнопку Section Break на вкладке Insert. В новом разделе введите следующий код.
C = eye(3); d = zeros(3,1);
Установите линейную матрицу ограничения равенства и вектор.
Aeq = [1 2 4]; beq = 7;
Запустите раздел путем нажатия Ctrl+Enter. Это помещает переменные в рабочую область.
В разделе Select problem data задачи, набор записи в их соответствующие значения.
Запустите решатель путем нажатия Ctrl+Enter. Просмотрите выходное сообщение.
Чтобы найти решение, посмотрите во главе задачи.
Решатель возвращает переменные solution
и objectiveValue
к рабочему пространству MATLAB.
Вставьте разрыв раздела ниже задачи. Поместите эти линии в новый раздел.
disp(solution) disp(objectiveValue)
Запустите раздел путем нажатия Ctrl+Enter.