lsqlin
РешательВ этом примере показов, как использовать задачу Optimize Live Editor для решения метода наименьших квадратов с ограничениями задачи.
Задача в этом примере состоит в том, чтобы найти точку на плоскости x 1 + 2 x 2 + 4 x 3 = 7, которая ближайшая к началу координат. Самый легкий способ решить эту задачу - минимизировать квадрат расстояния от точки x = (x 1, x 2, x 3) на плоскости до начала координат, что возвращает ту же оптимальную точку, что и минимизация фактического расстояния. Потому что квадрат расстояния от произвольной точки (x 1, x 2 x 3) до начала координат, можно описать задачу следующим образом:
удовлетворяющее ограничению
<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 4 <reservedrangesplaceholder0> 3 = 7. | (1) |
Функция f (x) является целевой функцией, и x 1 + 2 x 2 + 4 x 3 = 7 является ограничением равенства. Более сложные задачи могут содержать другие ограничения равенства, ограничения неравенства и верхних или нижних границ ограничений.
Настройте проблему с lsqlin
решатель в задаче Оптимизации Live Editor.
Создайте новый live скрипт, нажав кнопку New Live Script в разделе File на вкладке Home.
Вставьте задачу Optimize 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.