Лабораторная работа №1 по дисциплине «Идентификация и диагностика систем» по теме «ОСНОВЫ ПРОГРАММИРОВАНИЯ В СРЕДЕ MATLAB.» 1. Построить графики 2-х функций для произвольного диапазона x. Графики отобразить в отдельных окнах, с разными цветами, типом и толщиной линии. Добавить подписи по осям (разного шрифта, размера и цвета). Задать максимум для оси-ординат (y) в два раза большим, чем максимальное значение функции. y sin( x) y e x 2e2 x Создадим файл-скрипт Matlab под именем lab_1.m Добавим в файл код реализующий задание 1, определим два массива x1 и x2 с диапазонами аргументов двух функций. Через вызов встроенной функции zeros создадим два массива y1 и y2 и заполним их нулями, размерность массивов по строкам равна длинам векторов x1 и x2 см. Приложение A. В двух циклах определим две функции в синтаксисе Matlab и методом итерации заполним массивы y1 и y2 значениями заданных функций. Для первой функции экспоненту определим через встроенную функцию exp, Для второй функции синус соответствует встроенной функции sin Matlab. Вывод графиков осуществляться через встроенную функцию plot, где в первом параметре указывается массив для координаты X, во втором массив для координаты Y. В дополнительных параметрах этой функции задаться цвет линии, толщина и тип линии. Функция figure позволяет одновременно выводит несколько окон при запуске файл-скрипта. 2 Для определения максимального и минимального значения функций (вектора y) воспользуемся встроенными фикциями установки ограничения координатной сетки min и max. Для Y графика, воспользуемся встроенной функцией ylim, где в двумерном векторе укажем ограничения на вывод оси по Y - [мин и мах]. Остальные определения и назначения функции для графики можно прочесть в комментариях к скрипту, которые начинаются на % и информируют интерпретатор о том, что за этим знаком стоит не исполняемый код. Запустим файл-скрипт на выполнение, введя его имя в командном окне и нажав Enter. Результат выполнения первой задачи см. Рисунках 1 и 2. Рисунок 1. График функции y e x 2e2 x 3 Рисунок 2. График функции y sin( x) 2. Реализовать численную схему Эйлера для системы ЛОДУ 3-го порядка: x1 (k ) для вектора состояния x (k ) x2 (k ) , произвольными значениями матрицы A , x3 (k ) шага по времени t , количеством точек k m и произвольными (ненулевыми) x1 (0) начальными условиями x (0) x2 (0) . x3 (0) Построить графики переходных процессов переменных состояния (по времени): x1 (k t ) , x2 (k t ) , x3 (k t ) . Решим систему обыкновенных линейных однородных дифференциальных уравнений (ЛОДУ) 3-го порядка заданную в форме Коши: x1 (t ) a1 x1 (t ) a2 x2 (t ) a3 x3 (t ) x2 (t ) a4 x1 (t ) a5 x2 (t ) a6 x3 (t ) (1) x (t ) a x (t ) a x (t ) a x (t ) 7 1 8 2 9 3 3 4 x1 (0) 20 с начальными условиями x(0) x2 (0) 10 (2) x3 (0) 0 a1 и коэффициентами A a4 a7 a2 a5 a8 a3 1 31 2 a6 2 0.001 6 a9 9 50 8 1 0 0 Определим единичную матрицу I 0 1 0 0 0 1 (3) (4) Запишем систему уравнений (1) в матричном виде: x1 ( k ) x1 ( k ) x ( k 1) ta ta ta x (k ) 1 0 0 x ( k ) 1 2 3 1 2 2 x ( k ) 3 x3 ( k ) x1 ( k ) x1 ( k ) x2 ( k 1) ta4 ta5 ta6 x2 ( k ) 0 1 0 x2 ( k ) x3 ( k ) x3 ( k ) x1 ( k ) x1 ( k ) x3 ( k 1) ta7 ta8 ta9 x2 ( k ) 0 0 1 x2 ( k ) x3 ( k ) x3 ( k ) и окончательно (5) x(k 1) t A I x(k ) (6) с учетом (2)-(4). Добавим в файл-скрипт код реализующий определение массивов (24), шага t 0.0001 и конечного интервала интегрирования kend 3000 . Интегрирование по (6) произведем в цикле см. Листинг в Приложении A. После итераций выведем массивы полученных решений для x1 (k t ) , x2 (k t ) , x3 (k t ) в одном графическом окне. См. Рисунок 3. 5 Рисунок 3. Графики функции - решения системы дифференциальных уравнений третьего порядка, методом Эйлера, в форме Коши с начальными значениями. Вывод В выполненной работе нами получены навыки работы в пакете Matlab, изучены способы задания массивов, определения заданных функций и констант. Выполнено заполнение в цикле массивов по алгоритму заданных функций. Освоен графический вывод полученных значений функций, в виде графиков в декартовой системе координат с заданными параметрами линий подписей и цветом. Во второй части задания было получено численное решение дифференциального уравнения 3 порядка, методом Эйлера и построены графики решения. 6 Приложение A. файл-скрипт lab_1.m % файл lab_1.m % Задание 1 clear;clc; x1 = 0:0.01:1; %массив переменной x, шаг 0.01; x2 = 0:0.01:8*pi; %массив переменной x, шаг 0.01; y1 = zeros(1,length(x1)); %инициализация матрицы для значений 1 функций y2 = zeros(1,length(x2)); %инициализация матрицы для значений 2 функций %цикл перебора переменной x for i=1:1:length(x1) y1(i)=exp(x1(i))+ 2*exp(2*x1(i)); % значения первой функции end for i=1:1:length(x2) y2(i) = sin(x2(i)); %значения второй функции end figure; plot(x1,y1','-r','LineWidth',2); %вывод графика первой функции legend('e^x + 2e^{2x}'); %вывод легенды графика % вывод сетки графика и диапазона для координатных осей grid on; ylim([min(y1), max(y1)*2]); % вывод названий координатных осей xlabel('x','fontname','Algerian','fontsize',14,'color',[1,0,1]); ylabel('y','fontname','Agency FB','fontsize',34,'color',[0.1,0.9,0.5]); %вывод графика второй функции figure;plot(x2,y2,'-. ','LineWidth',1.5,'color',[0.7,0,1]); legend('sin(x)','Location','Best'); %вывод легенды графика % вывод сетки графика и диапазона для координатных осей grid on;ylim([min(y2)*2, max(y2)*2]);xlim([0 8*pi]) % вывод названий координатных осей xlabel('x','fontname','arial','fontsize',33,'color',[0,1,1]); ylabel('y','fontname','Algerian','fontsize',17,'color',[0,0,1]); % Задание 2 % Определение коэффициентов a1=1; a2=-31; a3=2; a4=2; a5=0.001; a6=6; a7=-9; a8=-50; a9=8; % Определение матрицы параметров A = [a1 a2 a3; a4 a5 a6; a7 a8 a9]; dt=0.0001; % определение шага интегрирования kend=3000; % определение конечного значения интегрирования 7 x=zeros(3,kend); %инициализация массива состояний х % Определение начальных условий x(1,1)= 20; x(2,1)=-10; x(3,1)=0; % Определение единичной матрицы 3х3 I = diag([1 1 1]); %цикл для решения системы дифф. уравнений по алгоритму Эйлера for k=1:kend-1 x(:,k+1)=(dt*A+I)*x(:,k); end % определения вектора времени для графиков t = (0:1:kend -1)*dt; % вывод массивов графиков трех функций в одном графическом окне; figure; plot(t,x(1,:),'--','LineWidth',1.5) %1 график x1(t) hold on % добавляем еще два графика plot(t,x(2,:)) %график x2(t) plot(t,x(3,:),'-.k','LineWidth',1.5) %график x3(t) %вывод легенды; legend('x1(t)','x2(t)','x3(t)','Location','Best'); grid on; %включение сетки графика; % вывод названий координатных осей xlabel('t'); ylabel('Значение функций'); 8