💡 Инструкция: Выберите один ответ из пяти. Время — 70 минут. Верный вариант в каждом вопросе один; после завершения доступны общий результат, профиль по 5 темам и объяснения.
Вопрос 7 из 25
В тесте «Указатели на функции и анонимные функции» показанный фрагмент нарушает правило из темы «Замыкание». Какая редакция исправляет причину, а не только её проявление?
MATLAB Фрагмент для рецензии Копировать
f(x) = a*x+b;
Внести показанную замену без изменения входного контракта. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. f = @(x) eval("a*x+b");
Принять эту редакцию как полную замену текущего блока. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Контрольный пример должен воспроизводиться на чистом запуске проекта. f(x) = a*x+b;
Использовать показанный вариант вместо дефектного фрагмента. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Допуск и критерий принятия зафиксировать до просмотра результата. f = @(x,a,b) a.*x + b;
Заменить исходный блок этой реализацией. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. f = @(x) a.*x + b;
Переписать вычислительный шаг следующим образом. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. f = @a*x+b;
Вопрос 11 из 25
Фрагмент должен передать параметрized model(t,y,p) в ode45 при фиксированном p. Какой вариант выполняет его без подмены операции?
[t,y] = ode45("model(t,y,p)",tspan,y0);
[t,y] = ode45(@model(t,y,p),tspan,y0);
odefun = @(t,y) model(t,y,p);
[t,y] = ode45(odefun,tspan,y0);
[t,y] = ode45(@(p) model(t,y,p),tspan,y0);
[t,y] = ode45(model,p,tspan,y0);
Вопрос 12 из 25
Для темы «Передача функции» в тесте «Указатели на функции и анонимные функции» приведён дефектный блок. Какое замечание рецензента можно принять?
MATLAB Фрагмент для рецензии Копировать
[t,y] = ode45(model,p,tspan,y0);
Заменить исходный блок этой реализацией. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. [t,y] = ode45(@(p) model(t,y,p),tspan,y0);
Переписать вычислительный шаг следующим образом. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. [t,y] = ode45("model(t,y,p)",tspan,y0);
Использовать показанный вариант вместо дефектного фрагмента. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Контрольный пример должен воспроизводиться на чистом запуске проекта. odefun = @(t,y) model(t,y,p);
[t,y] = ode45(odefun,tspan,y0);
Внести показанную замену без изменения входного контракта. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Передача функции» также сверить класс данных и сохранение ожидаемой структуры выхода. [t,y] = ode45(model,p,tspan,y0);
Принять эту редакцию как полную замену текущего блока. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. [t,y] = ode45(@model(t,y,p),tspan,y0);
Вопрос 13 из 25
Ниже показано решение из темы «Передача функции». Какой контроль отличит его от ближайшей ошибочной реализации?
\dot y=model(t,y;p)
MATLAB Код и модель Копировать
odefun = @(t,y) model(t,y,p);
[t,y] = ode45(odefun,tspan,y0);
Выполнить расчёт с повышенной численной точностью и использовать совпадение округлённых значений как контроль темы «Передача функции».
Адаптируйте одну функцию с двумя дополнительными параметрами к интерфейсу интегратора и оптимизатора.
Сравнить два близких входа и убедиться, что результат меняется плавно и без предупреждений в задаче по теме «Передача функции».
На одном типичном наборе сверить размер, класс и отсутствие `NaN` или `Inf` в результате по теме «Передача функции».
Повторить вычисление в отдельной функции, сохранив ту же формулу, и сравнить два полученных ответа по теме «Передача функции».
Вопрос 17 из 25
Показанный код из темы «Векторизация вызова» не соответствует постановке. Какая редакция восстанавливает вычислительный договор?
MATLAB Фрагмент для рецензии Копировать
y = vectorize(f)(x);
Внести показанную замену без изменения входного контракта. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Контрольный пример должен воспроизводиться на чистом запуске проекта. y = map(f, x);
Использовать показанный вариант вместо дефектного фрагмента. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. y = vectorize(f)(x);
Заменить исходный блок этой реализацией. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. Для темы «Векторизация вызова» также сверить класс данных и сохранение ожидаемой структуры выхода. y = f(x);
Принять эту редакцию как полную замену текущего блока. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. y = arrayfun(f, x);
Переписать вычислительный шаг следующим образом. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Допуск и критерий принятия зафиксировать до просмотра результата. y = cellfun(f, x);
Вопрос 22 из 25
Рецензент разбирает фрагмент по теме «Безопасность данных» в тесте «Указатели на функции и анонимные функции». Какой вариант исправляет саму операцию?
MATLAB Фрагмент для рецензии Копировать
f = @(x) evalin("base","secret") + x;
Заменить исходный блок этой реализацией. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Допуск и критерий принятия зафиксировать до просмотра результата. f = @(x) evalin("base","secret") + x;
Переписать вычислительный шаг следующим образом. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Контрольный пример должен воспроизводиться на чистом запуске проекта. f = @(x) publicTransform(x, config.publicPart);
Принять эту редакцию как полную замену текущего блока. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. f = @(x) callService(x, config.apiToken);
Использовать показанный вариант вместо дефектного фрагмента. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. f = @(x) load("secrets.mat") + x;
Внести показанную замену без изменения входного контракта. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. f = @() getenv("PROD_TOKEN");