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