💡 Инструкция: Выберите один ответ из пяти. Время — 85 минут. Верный вариант в каждом вопросе один; после завершения доступны общий результат, профиль по 6 темам и объяснения.
Вопрос 2 из 30
Показанный код из темы «Передаточная функция» не соответствует постановке. Какая редакция восстанавливает вычислительный договор?
MATLAB Фрагмент для рецензии Копировать
G = tf([1 2 5], 1);
Внести показанную замену без изменения входного контракта. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Допуск и критерий принятия зафиксировать до просмотра результата. G = tf("1/(s^2+2*s+5)");
Переписать вычислительный шаг следующим образом. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. G = zpk(1,[1 2 5]);
Использовать показанный вариант вместо дефектного фрагмента. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Контрольный пример должен воспроизводиться на чистом запуске проекта. G = ss(1,[1 2 5]);
Принять эту редакцию как полную замену текущего блока. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. G = tf([1 2 5], 1);
Заменить исходный блок этой реализацией. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. G = tf(1, [1 2 5]);
Вопрос 12 из 30
В расчёте по теме «Частотные характеристики» обнаружено содержательное расхождение. Какую замену следует принять после проверки?
MATLAB Фрагмент для рецензии Копировать
margin(feedback(L,1));
Внести показанную замену без изменения входного контракта. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. margin(feedback(L,1));
Использовать показанный вариант вместо дефектного фрагмента. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. margin(L);
[gm,pm,wcg,wcp] = margin(L);
Переписать вычислительный шаг следующим образом. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Контрольный пример должен воспроизводиться на чистом запуске проекта. bode(L);
[gm,pm] = pole(L);
Принять эту редакцию как полную замену текущего блока. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. nyquist(L);
[gm,pm] = stepinfo(L);
Заменить исходный блок этой реализацией. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Допуск и критерий принятия зафиксировать до просмотра результата. [gm,pm] = bandwidth(L);
Вопрос 17 из 30
Ниже приведена неудачная реализация из темы «Настройка регулятора». Какая редакция возвращает требуемый результат и оставляет независимый контроль?
MATLAB Фрагмент для рецензии Копировать
C = pid(G);
T = C+G;
Принять эту редакцию как полную замену текущего блока. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Допуск и критерий принятия зафиксировать до просмотра результата. C = pidtune(G,"PID");
T = feedback(C*G,1);
info = stepinfo(T);
Переписать вычислительный шаг следующим образом. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. C = pidtune(G,"PID");
info=stepinfo(C);
Внести показанную замену без изменения входного контракта. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. C = pid(G);
T = C+G;
Использовать показанный вариант вместо дефектного фрагмента. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. C = pidtune(feedback(G,1),"PID");
T=C*G;
Заменить исходный блок этой реализацией. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Контрольный пример должен воспроизводиться на чистом запуске проекта. Для темы «Настройка регулятора» также сверить класс данных и сохранение ожидаемой структуры выхода. C = tunePID(G);
T = feedback(G,C);
Вопрос 22 из 30
В тесте «Системы автоматического управления» показанный фрагмент нарушает правило из темы «Границы применимости». Какая редакция исправляет причину, а не только её проявление?
MATLAB Фрагмент для рецензии Копировать
y = lsim(G,uCmd,t); assert(islinear(G));
Внести показанную замену без изменения входного контракта. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. u = sign(uCmd).*inf; y=G*u;
Использовать показанный вариант вместо дефектного фрагмента. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Допуск и критерий принятия зафиксировать до просмотра результата. y = G * uCmd;
Переписать вычислительный шаг следующим образом. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. u = uCmd; y = step(G,u);
Заменить исходный блок этой реализацией. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. u = min(max(uCmd, uMin), uMax);
y = nonlinearPlant(u);
Принять эту редакцию как полную замену текущего блока. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Контрольный пример должен воспроизводиться на чистом запуске проекта. y = lsim(G,uCmd,t); assert(islinear(G));
Вопрос 27 из 30
Для темы «Сопровождение проекта» в тесте «Системы автоматического управления» приведён дефектный блок. Какое замечание рецензента можно принять?
MATLAB Фрагмент для рецензии Копировать
C = eval("pid(2.4,0.8)");
Использовать показанный вариант вместо дефектного фрагмента. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Контрольный пример должен воспроизводиться на чистом запуске проекта. % Начальные данные уже проверены; после блока отдельно контролируются значение и размер результата.
assignin("base","Kp",2.4); C=pid(Kp,0.8);
Переписать вычислительный шаг следующим образом. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. Для темы «Сопровождение проекта» также сверить класс данных и сохранение ожидаемой структуры выхода. % Начальные данные уже проверены; после блока отдельно контролируются значение и размер результата.
C = eval("pid(2.4,0.8)");
Внести показанную замену без изменения входного контракта. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Сопровождение проекта» также сверить класс данных и сохранение ожидаемой структуры выхода. % Начальные данные уже проверены; после блока отдельно контролируются значение и размер результата.
K = [2.4 0.8]; C=pid(K(1),K(2));
Заменить исходный блок этой реализацией. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. % Начальные данные уже проверены; после блока отдельно контролируются значение и размер результата.
cfg.Kp = 2.4; cfg.Ki = 0.8; cfg.units.input="deg"; cfg.units.output="N*m";
C = pid(cfg.Kp,cfg.Ki);
Принять эту редакцию как полную замену текущего блока. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. % Начальные данные уже проверены; после блока отдельно контролируются значение и размер результата.
C = pid(2.4,0.8);