💡 Инструкция: Выберите один ответ из пяти. Время — 70 минут. Верный вариант в каждом вопросе один; после завершения доступны общий результат, профиль по 5 темам и объяснения.
Вопрос 2 из 25
Для темы «Целевая функция» в тесте «Оптимизация функций» приведён дефектный блок. Какое замечание рецензента можно принять?
MATLAB Фрагмент для рецензии Копировать
fun = @(x) [x(1)-2, x(2)+1];
Заменить исходный блок этой реализацией. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Контрольный пример должен воспроизводиться на чистом запуске проекта. Для темы «Целевая функция» также сверить класс данных и сохранение ожидаемой структуры выхода. fun = @(x1,x2) (x1-2)^2 + 3*(x2+1)^2;
Использовать показанный вариант вместо дефектного фрагмента. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. fun = (x) => (x(1)-2)^2 + 3*(x(2)+1)^2;
Переписать вычислительный шаг следующим образом. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. Для темы «Целевая функция» также сверить класс данных и сохранение ожидаемой структуры выхода. fun = @(x) [x(1)-2, x(2)+1];
Принять эту редакцию как полную замену текущего блока. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Целевая функция» также сверить класс данных и сохранение ожидаемой структуры выхода. fun = @(x) (x-2)^2 + 3*(x+1)^2;
Внести показанную замену без изменения входного контракта. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. fun = @(x) (x(1)-2)^2 + 3*(x(2)+1)^2;
Вопрос 6 из 25
Условие задачи — решить задачу с линейным ограничением A*x <= b и границами lb <= x <= ub. Какой фрагмент можно принять после проверки размерностей?
x = minimize(fun, Constraints=[A*x<=b, lb<=x<=ub]);
x = fminsearch(fun, x0, A*x <= b);
x = fminunc(fun, x0, A, b, lb, ub);
x = linprog(fun, A, b, lb, ub);
x = fmincon(fun, x0, A, b, [], [], lb, ub);
Вопрос 7 из 25
Показанный код из темы «Ограничения» не соответствует постановке. Какая редакция восстанавливает вычислительный договор?
MATLAB Фрагмент для рецензии Копировать
x = minimize(fun, Constraints=[A*x<=b, lb<=x<=ub]);
Заменить исходный блок этой реализацией. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. x = minimize(fun, Constraints=[A*x<=b, lb<=x<=ub]);
Внести показанную замену без изменения входного контракта. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. x = linprog(fun, A, b, lb, ub);
Переписать вычислительный шаг следующим образом. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. x = fminunc(fun, x0, A, b, lb, ub);
Принять эту редакцию как полную замену текущего блока. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Контрольный пример должен воспроизводиться на чистом запуске проекта. x = fminsearch(fun, x0, A*x <= b);
Использовать показанный вариант вместо дефектного фрагмента. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Допуск и критерий принятия зафиксировать до просмотра результата. x = fmincon(fun, x0, A, b, [], [], lb, ub);
Вопрос 8 из 25
Результат фрагмента по теме «Ограничения» нужно принять перед включением в расчёт. Какая проверка даст независимое основание?
Ax\le b,\quad l\le x\le u
MATLAB Код и модель Копировать
x = fmincon(fun, x0, A, b, [], [], lb, ub);
Повторить вычисление в отдельной функции, сохранив ту же формулу, и сравнить два полученных ответа по теме «Ограничения».
Сравнить ответ с сохранённым выводом предыдущей версии на рабочем наборе данных по теме «Ограничения».
Сравнить два близких входа и убедиться, что результат меняется плавно и без предупреждений в задаче по теме «Ограничения».
На одном типичном наборе сверить размер, класс и отсутствие `NaN` или `Inf` в результате по теме «Ограничения».
Составьте маленькую задачу, где безусловный минимум лежит вне допустимой области, и сравните `fminunc` с `fmincon`.
Вопрос 11 из 25
Фрагмент должен запустить локальную оптимизацию с несколькими разумными начальными точками. Какой фрагмент можно принять после проверки размерностей?
% Одинаковый набор входов передаётся каждому варианту; журналирование выполняется после расчёта.
[x,f] = fminunc(starts, fun);
% Одинаковый набор входов передаётся каждому варианту; журналирование выполняется после расчёта.
[x,f] = fminunc(fun, rand);
% Одинаковый набор входов передаётся каждому варианту; журналирование выполняется после расчёта.
for k = 1:size(starts,1)
[xk,fk] = fminunc(fun, starts(k,:));
solutions(k,:) = [xk fk];
end
% Одинаковый набор входов передаётся каждому варианту; журналирование выполняется после расчёта.
[x,f] = fminunc(fun, mean(starts,1));
% Одинаковый набор входов передаётся каждому варианту; журналирование выполняется после расчёта.
solutions = fminunc(fun, starts);
Вопрос 12 из 25
Рецензент разбирает фрагмент по теме «Начальная точка» в тесте «Оптимизация функций». Какой вариант исправляет саму операцию?
MATLAB Фрагмент для рецензии Копировать
[x,f] = fminunc(starts, fun);
Переписать вычислительный шаг следующим образом. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. % Одинаковый набор входов передаётся каждому варианту; журналирование выполняется после расчёта.
solutions = fminunc(fun, starts);
Принять эту редакцию как полную замену текущего блока. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. % Одинаковый набор входов передаётся каждому варианту; журналирование выполняется после расчёта.
[x,f] = fminunc(fun, mean(starts,1));
Внести показанную замену без изменения входного контракта. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Допуск и критерий принятия зафиксировать до просмотра результата. % Одинаковый набор входов передаётся каждому варианту; журналирование выполняется после расчёта.
for k = 1:size(starts,1)
[xk,fk] = fminunc(fun, starts(k,:));
solutions(k,:) = [xk fk];
end
Использовать показанный вариант вместо дефектного фрагмента. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Контрольный пример должен воспроизводиться на чистом запуске проекта. Для темы «Начальная точка» также сверить класс данных и сохранение ожидаемой структуры выхода. % Одинаковый набор входов передаётся каждому варианту; журналирование выполняется после расчёта.
[x,f] = fminunc(starts, fun);
Заменить исходный блок этой реализацией. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. Для темы «Начальная точка» также сверить класс данных и сохранение ожидаемой структуры выхода. % Одинаковый набор входов передаётся каждому варианту; журналирование выполняется после расчёта.
[x,f] = fminunc(fun, rand);
Вопрос 16 из 25
Разработчик переносит в MATLAB требование: остановить решатель по малому изменению цели и параметров, сохранив диагностический вывод. Какой фрагмент можно принять после проверки размерностей?
opts = options(FunctionTolerance=eps, Iterations="all");
opts = optimoptions("fminunc", Display="iter", FunctionTolerance=1e-8, StepTolerance=1e-10);
opts = optimset("fminunc", "Display", true, "Tolerance", 0);
opts = optimoptions("fminunc", Display="none", MaxIterations=1);
opts = optimoptions("fminunc", Error=1e-8, Stop=1e-10);
Вопрос 17 из 25
В расчёте по теме «Критерий остановки» обнаружено содержательное расхождение. Какую замену следует принять после проверки?
MATLAB Фрагмент для рецензии Копировать
opts = optimset("fminunc", "Display", true, "Tolerance", 0);
Переписать вычислительный шаг следующим образом. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Критерий остановки» также сверить класс данных и сохранение ожидаемой структуры выхода. opts = options(FunctionTolerance=eps, Iterations="all");
Использовать показанный вариант вместо дефектного фрагмента. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. opts = optimset("fminunc", "Display", true, "Tolerance", 0);
Принять эту редакцию как полную замену текущего блока. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. opts = optimoptions("fminunc", Display="iter", FunctionTolerance=1e-8, StepTolerance=1e-10);
Внести показанную замену без изменения входного контракта. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Контрольный пример должен воспроизводиться на чистом запуске проекта. opts = optimoptions("fminunc", Display="none", MaxIterations=1);
Заменить исходный блок этой реализацией. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. Для темы «Критерий остановки» также сверить класс данных и сохранение ожидаемой структуры выхода. opts = optimoptions("fminunc", Error=1e-8, Stop=1e-10);
Вопрос 24 из 25
Нужно сопоставить MATLAB-код с постановкой «оформить оптимизационный расчёт так, чтобы из кода было видно, что измеряется и какие ограничения проверяются». Какая формула задаёт именно этот результат?
v_{max}=\max\{Ax-b,\ l-x,\ x-v\}
v_{max}=\min\{Ax-b,\ l-x,\ x-u\}
v_{max}=\max\{xA-b,\ l-x,\ x-u\}
v_{max}=\max\{Ax+b,\ l-x,\ x-u\}
v_{max}=\max\{Ax-b,\ l-x,\ x-u\}