💡 Инструкция: Выберите один ответ из пяти. Время — 70 минут. Верный вариант в каждом вопросе один; после завершения доступны общий результат, профиль по 5 темам и объяснения.
Вопрос 1 из 25
Проверяется реализация операции: решить задачу y'=−2y, y(0)=1 на интервале [0,5] адаптивным решателем. Какой фрагмент можно принять после проверки размерностей?
[t,y] = ode45(@(t,y) -2*y, [0 5], 1);
[t,y] = ode45(-2*y, [0 5], 1);
[t,y] = solveode(@(t,y) -2*y, [0 5], 1);
[t,y] = ode45(@(y) -2*y, 0:5);
y = ode45(@(t,y) -2*y, 1, [0 5]);
Вопрос 2 из 25
Показанный код из темы «Решатели дифференциальных уравнений» не соответствует постановке. Какая редакция восстанавливает вычислительный договор?
MATLAB Фрагмент для рецензии Копировать
[t,y] = ode45(-2*y, [0 5], 1);
Использовать показанный вариант вместо дефектного фрагмента. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. [t,y] = ode45(@(t,y) -2*y, [0 5], 1);
Внести показанную замену без изменения входного контракта. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. y = ode45(@(t,y) -2*y, 1, [0 5]);
Заменить исходный блок этой реализацией. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Допуск и критерий принятия зафиксировать до просмотра результата. [t,y] = solveode(@(t,y) -2*y, [0 5], 1);
Переписать вычислительный шаг следующим образом. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Контрольный пример должен воспроизводиться на чистом запуске проекта. [t,y] = ode45(-2*y, [0 5], 1);
Принять эту редакцию как полную замену текущего блока. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. [t,y] = ode45(@(y) -2*y, 0:5);
Вопрос 6 из 25
Исходное требование формулируется так: выбрать решатель для жёсткой системы, где ode45 делает чрезмерно много малых шагов. Какой фрагмент можно принять после проверки размерностей?
[t,y] = integral(odefun, tspan, y0);
[t,y] = ode45(odefun, tspan, y0, MaxStep=inf);
[t,y] = ode23(odefun, tspan, y0);
[t,y] = ode15s(odefun, tspan, y0);
[t,y] = ode1(odefun, tspan, y0);
Вопрос 7 из 25
Рецензент разбирает фрагмент по теме «Жёсткость» в тесте «Дифференциальные уравнения». Какой вариант исправляет саму операцию?
MATLAB Фрагмент для рецензии Копировать
[t,y] = integral(odefun, tspan, y0);
Переписать вычислительный шаг следующим образом. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. Для темы «Жёсткость» также сверить класс данных и сохранение ожидаемой структуры выхода. [t,y] = integral(odefun, tspan, y0);
Использовать показанный вариант вместо дефектного фрагмента. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. [t,y] = ode45(odefun, tspan, y0, MaxStep=inf);
Внести показанную замену без изменения входного контракта. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. [t,y] = ode23(odefun, tspan, y0);
Принять эту редакцию как полную замену текущего блока. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Жёсткость» также сверить класс данных и сохранение ожидаемой структуры выхода. [t,y] = ode1(odefun, tspan, y0);
Заменить исходный блок этой реализацией. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Контрольный пример должен воспроизводиться на чистом запуске проекта. Для темы «Жёсткость» также сверить класс данных и сохранение ожидаемой структуры выхода. [t,y] = ode15s(odefun, tspan, y0);
Вопрос 11 из 25
Нужно реализовать действие: остановить интегрирование, когда состояние y(1) впервые достигнет нуля при убывании. Какой код сохраняет математический смысл постановки?
function [value,isterminal] = events(t,y)
value = 0; isterminal = 1;
end
function [value,isterminal,direction] = events(t,y)
value = y(1);
isterminal = 1;
direction = -1;
end
function stop = events(t,y)
stop = y(1)==0;
end
function [value,isterminal,direction] = events(t,y)
value = y(1); isterminal = 0; direction = 1;
end
event = @(t,y) y(1) < 0;
Вопрос 12 из 25
В расчёте по теме «События» обнаружено содержательное расхождение. Какую замену следует принять после проверки?
MATLAB Фрагмент для рецензии Копировать
function [value,isterminal] = events(t,y)
value = 0; isterminal = 1;
end
Переписать вычислительный шаг следующим образом. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. function [value,isterminal,direction] = events(t,y)
value = y(1); isterminal = 0; direction = 1;
end
Использовать показанный вариант вместо дефектного фрагмента. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «События» также сверить класс данных и сохранение ожидаемой структуры выхода. function stop = events(t,y)
stop = y(1)==0;
end
Внести показанную замену без изменения входного контракта. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. function [value,isterminal] = events(t,y)
value = 0; isterminal = 1;
end
Принять эту редакцию как полную замену текущего блока. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Контрольный пример должен воспроизводиться на чистом запуске проекта. function [value,isterminal,direction] = events(t,y)
value = y(1);
isterminal = 1;
direction = -1;
end
Заменить исходный блок этой реализацией. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. Для темы «События» также сверить класс данных и сохранение ожидаемой структуры выхода. event = @(t,y) y(1) < 0;
Вопрос 13 из 25
Код по теме «События» проходит обычный пример. Какая проверка покажет, что вычислительный договор сохраняется и на неудобном входе?
g(t,y)=y_1=0,\quad \dot g<0
MATLAB Код и модель Копировать
function [value,isterminal,direction] = events(t,y)
value = y(1);
isterminal = 1;
direction = -1;
end
Проверить только один сводный показатель результата — сумму, среднее или норму — на двух обычных входах из темы «События».
Увеличить размер входа и проверить ожидаемый рост времени и памяти, сохранив исходный способ вычисления по теме «События».
Сравнить ответ с сохранённым выводом предыдущей версии на рабочем наборе данных по теме «События».
Сравнить два близких входа и убедиться, что результат меняется плавно и без предупреждений в задаче по теме «События».
Создайте событие уровня и сравните направления −1, 0 и +1 на колебательном решении.
Вопрос 14 из 25
Для действия «остановить интегрирование, когда состояние y(1) впервые достигнет нуля при убывании» нужен независимый математический эталон. Какое соотношение можно использовать для проверки?
g(t,z)=y_1=0,\quad \dot g<0
g(t,x)=y_1=0,\quad \dot g<0
g(t,y)=y_1=0,\quad \dot g>0
g(t,y)=y_1=0,\quad \dot g<0
g(t,y)=y_1=1,\quad \dot g<0
Вопрос 17 из 25
Ниже приведена неудачная реализация из темы «Точность решения». Какая редакция возвращает требуемый результат и оставляет независимый контроль?
MATLAB Фрагмент для рецензии Копировать
opts = odeset(RelTol=0, AbsTol=eps);
Переписать вычислительный шаг следующим образом. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. opts = odeset(MaxStep=1e-8, Accuracy="high");
Внести показанную замену без изменения входного контракта. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Допуск и критерий принятия зафиксировать до просмотра результата. opts = odeoptions(RelError=1e-8, AbsoluteError=0);
Использовать показанный вариант вместо дефектного фрагмента. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Контрольный пример должен воспроизводиться на чистом запуске проекта. opts = odeset(RelTol=0, AbsTol=eps);
Заменить исходный блок этой реализацией. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. opts = odeset(RelTol=1e-8, AbsTol=[1e-10 1e-6]);
Принять эту редакцию как полную замену текущего блока. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. opts = odeset(Tolerance=1e-8);
Вопрос 21 из 25
На рецензию вынесена операция: диагностировать скачки решения, возникшие после передачи параметра через изменяемую глобальную переменную. Какой код сохраняет математический смысл постановки?
[t,y] = ode45(@(t,y) evalin("base","model(t,y,params)"),tspan,y0);
global params
[t,y] = ode45(@model, tspan, y0);
assignin("base","params",params);
[t,y] = ode45(@model,tspan,y0);
persistent params
[t,y] = ode45(@model,tspan,y0);
odefun = @(t,y) model(t,y,params);
[t,y] = ode45(odefun, tspan, y0);
Вопрос 22 из 25
В тесте «Дифференциальные уравнения» показанный фрагмент нарушает правило из темы «Ошибки интеграции». Какая редакция исправляет причину, а не только её проявление?
MATLAB Фрагмент для рецензии Копировать
persistent params
[t,y] = ode45(@model,tspan,y0);
Переписать вычислительный шаг следующим образом. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Допуск и критерий принятия зафиксировать до просмотра результата. [t,y] = ode45(@(t,y) evalin("base","model(t,y,params)"),tspan,y0);
Использовать показанный вариант вместо дефектного фрагмента. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. assignin("base","params",params);
[t,y] = ode45(@model,tspan,y0);
Принять эту редакцию как полную замену текущего блока. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. odefun = @(t,y) model(t,y,params);
[t,y] = ode45(odefun, tspan, y0);
Заменить исходный блок этой реализацией. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. Для темы «Ошибки интеграции» также сверить класс данных и сохранение ожидаемой структуры выхода. global params
[t,y] = ode45(@model, tspan, y0);
Внести показанную замену без изменения входного контракта. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Контрольный пример должен воспроизводиться на чистом запуске проекта. persistent params
[t,y] = ode45(@model,tspan,y0);
Вопрос 23 из 25
Фрагмент по теме «Ошибки интеграции» выглядит правдоподобно. Какая проверка действительно подтвердит заявленное свойство, а не только отсутствие сбоя?
\dot y=f(t,y;\theta)
MATLAB Код и модель Копировать
odefun = @(t,y) model(t,y,params);
[t,y] = ode45(odefun, tspan, y0);
Запустить несколько случайных наборов одинакового масштаба и сопоставить время выполнения и форму результата для темы «Ошибки интеграции».
Увеличить размер входа и проверить ожидаемый рост времени и памяти, сохранив исходный способ вычисления по теме «Ошибки интеграции».
Проверить только один сводный показатель результата — сумму, среднее или норму — на двух обычных входах из темы «Ошибки интеграции».
Выполнить расчёт с повышенной численной точностью и использовать совпадение округлённых значений как контроль темы «Ошибки интеграции».
Перепишите модель с глобальным параметром в функцию с явным `params` и проверьте повторяемость двух запусков.