- •Содержание
- •1 Лабораторная работа № 1
- •Математическая модель
- •Этапы разработки программы
- •Вызов DeskTop matlab
- •Файлы-сценарии (Script-files) и файлы-функции (Function-files)
- •Ввод исходных данных методом присваивания. Комментарии
- •Графический вывод
- •Организация ввода исходных данных в диалоговом режиме
- •Создание подпрограммы-функции (Function-file)
- •2 Лабораторная работа № 2
- •Поиск синтаксических ошибок
- •Отладка с помощью редактора программ Editor/Debugger
- •Верификация результатов расчета
- •3 Лабораторная работа № 3
- •Задание на выполнение работы
- •Индивидуальные задания
- •4 Лабораторная работа № 4
- •Математическая модель
- •Блок-схема алгоритма расчета согласно математической модели
- •Задание на выполнение работы
- •5 Лабораторная работа №5
- •Задание на выполнение работы
- •Индивидуальные задания
- •6 Лабораторная работа № 6
- •Математическая модель
- •Определение начального приближения
- •Программа расчета в среде MatLab
- •Результаты расчета
- •Индивидуальные задания
- •Задание на выполнение работы
- •7 Лабораторная работа № 7
- •Математическая модель
- •Программа расчета в среде MatLab
- •Результаты вычислений
- •Индивидуальные задания
- •Задание на выполнение работы
- •8 Лабораторная работа №8
- •Математическая модель
- •Программа расчета в среде MatLab
- •Результаты расчета
- •Улучшение сходимости метода Ньютона
- •Задание на выполнение работы
- •9 Лабораторная работа №9
- •Математическая модель
- •Программа расчета в среде MatLab
- •Результаты расчета
- •Задание на выполнение работы
- •10 Лабораторная работа №10
- •Задание на выполнение работы
- •Индивидуальные задания
- •Литература
Отладка с помощью редактора программ Editor/Debugger
Одним из средств инструментального поиска ошибок является применение встроенной системы редактирования и отладки программ Editor/Debugger.
Ознакомимся с опциями отладчика на примере программы Circuit1_debug.
Перед началом сеанса целесообразно очистить Workspace с помощью команды Clear и Command Window с помощью команды Clc ( можно использовать с этой целью Главное менюEditClear Workspace и Главное менюEditClear Command Window ).
Запустите отладчик программ. Для этого в главном меню Editor/Debugger нажмите DebugRun. После этого, подводя курсор к любой переменной или массиву в тексте программы, можно проследить их численные (или символьные) значения.
Очистите Workspace и Command Window . Установите курсор перед каким-либо оператором. Пусть это будет оператор в строке 13
XL=2*pi*f*L2;
Нажмите на иконку Set/clear breakpoint на панели инструментов. Красная точка слева от указанного оператора обозначает точку прерывания при выполнении программы. Нажмите DebugRun. Появившаяся в тексте программы зеленая стрелка указывает на оператор, перед которым остановлены вычисления. В Command Window вы увидите приглашение
K>>
к вводу дальнейших указаний. Прежде, чем вы сделаете это, подведите курсор к значениям переменных, вычисленных до прерывания. Система покажет эти значения. Но значений переменных и массивов после прерывания вы не увидите, поскольку на момент прерывания они не определены.
Нажмите на иконку Step на панели инструментов. Зеленая стрелка переместится на одну строку вниз. Программа выполнила один оператор и снова остановилась. Таким образом, можно выполнять программу по шагам, контролируя как последовательность вычислений, так и значения вычисленных переменных и массивов. Доведите до конца выполнение программы, используя пошаговое вычисление. Наблюдайте изменение и появление новой информации.
Снова запустите программу на счет (нажмите DebugRun). Для того, чтобы после прерывания выполнить программу до конца, нажмите на панели инструментов кнопку Continue. Результаты вычислений вы увидите в Command Window .
При помощи кнопки Set/clear breakpoint можно снять указанную курсором точку прерывания. Кнопкой Clear all breakpoints можно снять все точки прерывания в программе.
Для отработки пошаговой отладки с заходом в подпрограмму вызовем из редактора программ М-файл Circuit 3. Сохраним его в той же директории как Circuit 3_debug. С целью экономии времени заменим операторы диалогового ввода на операторы ввода данных методом присваивания ( используйте для этой цели операторы ввода М-файла Circuit 1 ).
Программа должна выглядеть следующим образом:
%ПРИМЕР РАСЧЕТА ЦЕПИ СИНУСОИДАЛЬНОГО ТОКА
%Circuit 3_debug
f=50;
R1=1;
R2=2;
R3=3;
L2=1e-3;
C3=1e-4;
ph1=30;
ph2=60;
XL=2*pi*f*L2;
XC=1/(2*pi*f*C3);
E1=100/sqrt(2)*exp(ph1*pi/180*i);
E2=200/sqrt(2)*exp(ph2*pi/180*i);
Z1=R1; Z2=R2+i*XL; Z3=R3-i*XC;
M=[1 -1 -1;
Z1 0 Z3;
0 Z2 -Z3];
F=[0; E1; -E2];
I=M\F;
disp(['I1=',num2str(I(1,1))]);
disp(['I2=',num2str(I(2,1))]);
disp(['I3=',num2str(I(3,1))]);
%ПРОВЕРКА ПО 2 ЗАКОНУ КИРХГОФА
eps=E1-E2-Z1*I(1,1)-Z2*I(2,1);
disp([' error calculation eps=',num2str(eps)]);
%ВЫЧИСЛЕНИЕ МОДУЛЕЙ И АРГУМЕНТОВ (В РАДИАНАХ) ВЫЧИСЛЕННЫХ ТОКОВ
I1M=abs(I(1,1));
I2M=abs(I(2,1));
I3M=abs(I(3,1));
phI1=angle(I(1,1));
phI2=angle(I(2,1));
phI3=angle(I(3,1));
disp(['I1M=',num2str(I1M),' phI1=',num2str(phI1/pi*180)]);
disp(['I2M=',num2str(I2M),' phI2=',num2str(phI2/pi*180)]);
disp(['I3M=',num2str(I3M),' phI3=',num2str(phI3/pi*180)]);
% GRAPH
h=0.04/200;
t(1)=0;
i1(1)=current(I1M,f,phI1,t(1));
i2(1)=current(I2M,f,phI2,t(1));
i3(1)=current(I3M,f,phI3,t(1));
for k=2:201
t(k)=t(k-1)+h;
i1(k)=current(I1M,f,phI1,t(k));
i2(k)=current(I2M,f,phI2,t(k));
i3(k)=current(I3M,f,phI3,t(k));
end
plot(t,i1,t,i2,t,i3);
Для того, чтобы исследовать работу программы в цикле, как правило, достаточно сделать 2 – 3 захода в него. Поэтому заменим верхний предел оператора цикла следующим образом
for k=2:5
t(k)=t(k-1)+h;
i1(k)=current(I1M,f,phI1,t(k));
i2(k)=current(I2M,f,phI2,t(k));
i3(k)=current(I3M,f,phI3,t(k));
end
Сохраните измененную программу.
Установите курсор перед оператором определения шага задания значений функциям токов в ветвях
h=0.04/200;
и установите точку прерывания.
Для контроля выполнения подпрограмм воспользуемся опцией Step in на панели инструментов, которая дает возможность проследить пошаговое выполнение операторов подпрограммы. Выполните программу до конца с помощью этой опции.
Опция Step out позволяет выйти из подпрограммы на любом этапе ее выполнения.
Опция Exit Debug Mode реализует выход из режима отладки.
Из Main menu Breakpoints menu можно вызвать дополнительные опции отладки:
Stop If Error – останов программы в случае ошибки;
Stop If Warning – останов программы в случае предупреждения системы о возможной ошибке;
Stop If NaN Or Inf – останов в случае не числового или бесконечного значения вычисляемой величины.
Применение тех или иных способов и опций отладки программ определяется самим программистом в зависимости от его опыта, квалификации, степени сложности решаемой задачи и индивидуального стиля программирования.
