Uploaded by roman sergeev

ЛР1

advertisement
Лабораторная работа №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
Download