- •Курсовой проект (робота)
- •1 Идентификация обыкновенного линейного дифференциального уравнения 1го порядка
- •1.1 Постановка задачи
- •1.2 Описание используемых методов
- •1.2.1 Аппроксимация на смежных отрезках
- •1.2.1 Аппроксимация на скользящих интервалах
- •1.3 . Результаты решения задачи идентификации. Проведение идентификации в среде Excel
- •1.4 Заключение
- •2 Исследование динамики системы
- •2.1 Постановка задачи
- •2.2 Запись конечно-разностных аналогов дифференциальных уравнений
- •2.3 Запись конечно-разностных аналогов дифференциальных уравнений
- •2.4 Решение в среде Excel
- •2.4 Решение в среде Delphi
- •2.5 Заключение
- •Литература
- •Приложение
2.5 Заключение
В этой части курсовой работы было проведено численное моделирования динамических процессов в системе автоматического регулирования с помощью двух программных сред - Excel и Delphi.
Результаты, полученные при использовании этих двух пакетов, показали идентичные решения.
Литература
1. Бронштейн И.Н., Семендяев К.А. Справочник по математике для инженеров и учащихся втузовю -13-е изд., исправленное.-М.: Наука, Гл.Ред. физ.-мат. лит., 1986. -544 с.
2. Вычислительная техника и программирование. Часть 3 «Основы алгоритмизации, про-граммирования и решения инженерных и экономических задач на ЭВМ». Учебное посо-бие / Под общей редакцией проф. Меркта Р.В. – Одесса: ОГМУ,2000. –97 с.
3. Электронные учебно-методические материалы кафедры «Техническая кибернетика».
4. Меркт, «Вычислительная техника и программирование. Часть 3», ОНМУ,
Одесса – 2004.
5. Г.В. Галисеев, «Программирование в среде Delphi», Москва – Санкт-Петербург – Киев, 2004.
Приложение
Текст программы численного моделирования динамических процессов в системе автоматического регулирования
program Ustich;
{$APPTYPE CONSOLE}
uses
Math,
sysutils,
classes,
Dialogs,
MyType,
MyPr;
var
i,N,Gk,Iter : Ir;
A,B,k1,k2,Y0,YY0,C,k3,k4,Z0,E,DT : Db;
a0,a1,a2,a3,a4,b0,b1,b2: Db;
FF,YY,ZZ : Db;
D1,D2,D3,D4,D5,D6,D7,D8,D9,D10 : Db;
T,X,G,Y,F,Z : Vec;
F1,F2 : TextFile;
Begin
AssignFile(F1,'Input_Ustich.txt');
AssignFile(F2,'Output_Ustich.txt');
Reset(F1);
ReWrite(F2);
Readln(F1,A,B,k1,k2,Y0,YY0);
Readln(F1,C,k3,k4,Z0);
Readln(F1,a0, a1, a2, a3, a4);
Readln(F1,b0,b1,b2);
Readln(F1,DT,N,E);
Writeln(' A=',A:8:5,' B=',B:8:5,' k1=',k1:8:5,' k2=',k2:8:5,
' Y0=',Y0:8:5,' YY0=',YY0:8:5);
Writeln(' C=',C:8:5,' k3=',k3:8:5,' k4=',k4:8:5,' Z0=',Z0:8:5);
Writeln(' a0=',a0:8:5,' a1=',a1:8:5,' a2=',a2:8:5,' a3=',a3:8:5, ' a4=',a4:8:5);
Writeln(' b0=',b0:8:5,' b1=',b1:8:5,' b2=',b2:8:5);
Writeln(' DT=',DT:8:5,' N=',N:3,' E=',E:10:7);
Writeln(F2,' A=',A:8:5,' B=',B:8:5,' k1=',k1:8:5,' k2=',k2:8:5,
' Y0=',Y0:8:5,' YY0=',YY0:8:5);
Writeln(F2,' C=',C:8:5,' k3=',k3:8:5,' k4=',k4:8:5,' Z0=',Z0:8:5);
Writeln(F2,' a0=',a0:8:5,' a1=',a1:8:5,' a2=',a2:8:5,' a3=',a3:8:5,' a4=',a4:8:5);
Writeln(F2,' b0=',b0:8:5,' b1=',b1:8:5,' b2=',b2:8:5);
Writeln(F2,' DT=',DT:8:5,' N=',N:3,' E=',E:10:7);
Readln;
D1:=1-(B*DT/A);
D2:=(-DT/A);
D3:=(k1*DT/A);
D4:=(k2*DT/A);
D5:=DT;
D6:=1-(DT/C);
D7:=(DT*k3/C)-(k4/C);
D8:=(k4/C);
D9:=(k4/C)-(DT*k3/C);
D10:=-(k4/C);
Writeln('D1=',D1:8:5,' D2=',D2:8:5,' D3=',D3:8:5,' D4=',D4:8:5,' D5=',D5:8:5);
Writeln('D6=',D6:8:5,' D7=',D7:8:5,' D8=',D8:8:5,' D9=',D9:8:5,' D10=',D10:8:5);
for i:=0 to N do
begin
T[i]:=DT*i;
X[i]:=a0+a1*sin(a2*T[i]+a3)*exp(a4*T[i]);
G[i]:=b0+b1*T[i]+b2*sqr(T[i]);
end;
i:=0; Y[i]:=Y0; F[i]:=YY0; Z[i]:=Z0;
for i:=1 to N do
begin
Y[i]:=Y[i-1]; F[i]:=F[i-1]; Z[i]:=Z[i-1];
Iter:=0;
Repeat
Iter:=Iter+1;
Gk:=0;
FF:=D1*F[i-1]+D2*(Y[i-1])+D3*(X[i-1])+D4*(Z[i-1]);
YY:=Y[i-1]+D5*(F[i-1]);
ZZ:=D6*Z[i-1]+D7*Y[i-1]+D8*Y[i]+D9*G[i-1]+D10*G[i];
if abs(F[i]-FF)>E then Gk:=Gk+1;
if abs(Y[i]-YY)>E then Gk:=Gk+1;
if abs(Z[i]-ZZ)>E then Gk:=Gk+1;
Y[i]:=YY; F[i]:=FF; Z[i]:=ZZ;
Until Gk=0;
end;
Writeln(' ');
Writeln(' i T X G Y F Z Iter');
Writeln(F2,' ');
Writeln(F2,' i T X G Y F Z Iter');
for i:=0 to N do
begin
Writeln(F2,i:2,' ',T[i]:8:4,' ',X[i]:8:4,' ',G[i]:8:4,' ',Y[i]:8:4,' ',F[i]:8:4,' ',Z[i]:8:4,' ',Iter:4);
Writeln(i:2,' ',T[i]:8:4,' ',X[i]:8:4,' ',G[i]:8:4,' ',Y[i]:8:4,' ',F[i]:8:4,' ',Z[i]:8:4,' ',Iter:4);
end;
Readln;
Close(F1);
Close(F2);
END.