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