💡 Инструкция: Выберите один ответ из пяти. Время — 55 минут. Верный вариант в каждом вопросе один; после завершения доступны общий результат, профиль по 4 темам и объяснения.
Вопрос 12 из 20
Ниже приведена неудачная реализация из темы «Предвыделение памяти». Какая редакция возвращает требуемый результат и оставляет независимый контроль?
MATLAB Фрагмент для рецензии Копировать
y = cell(1, N);
for k = 1:N
y(k) = expensiveStep(k);
end
Внести показанную замену без изменения входного контракта. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Контрольный пример должен воспроизводиться на чистом запуске проекта. y = cell(1, N);
for k = 1:N
y(k) = expensiveStep(k);
end
Использовать показанный вариант вместо дефектного фрагмента. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. for k = 1:N
y = [y expensiveStep(k)];
end
Переписать вычислительный шаг следующим образом. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Допуск и критерий принятия зафиксировать до просмотра результата. y = zeros(N);
for k = 1:N
y(k) = expensiveStep(k);
end
Заменить исходный блок этой реализацией. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. y = [];
for k = 1:N
y(end+1) = expensiveStep(k);
end
Принять эту редакцию как полную замену текущего блока. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. y = zeros(1, N);
for k = 1:N
y(k) = expensiveStep(k);
end
Вопрос 17 из 20
В тесте «Условия и циклы» показанный фрагмент нарушает правило из темы «Условия остановки». Какая редакция исправляет причину, а не только её проявление?
MATLAB Фрагмент для рецензии Копировать
while true
x = step(x);
end
Переписать вычислительный шаг следующим образом. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Контрольный пример должен воспроизводиться на чистом запуске проекта. k = 0; delta = inf;
while delta >= tol || k < maxIter
[x, delta] = step(x);
k = k + 1;
end
Внести показанную замену без изменения входного контракта. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. for k = 1:tol
[x, delta] = step(x);
end
Использовать показанный вариант вместо дефектного фрагмента. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. k = 0; delta = inf;
while delta >= tol && k < maxIter
[x, delta] = step(x);
k = k + 1;
end
Принять эту редакцию как полную замену текущего блока. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. while delta < tol && k > maxIter
[x, delta] = step(x);
end
Заменить исходный блок этой реализацией. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Условия остановки» также сверить класс данных и сохранение ожидаемой структуры выхода. while true
x = step(x);
end