на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Программирование и основы алгоритмизации
p align="left">2. Аналогично

3.

4.

5. Пусть

тогда

Таким образом имеем систему из пяти дифференциальных уравнений:

Итак, составим программу для решения дифференциальных уравнений и построения графиков переходных процессов.

Сначала сделаем некоторые переобозначения:

F -- массив значений правых частей

F[1]=dZ1/dt

F[2]=X6

F[3]=dб/dt

F[4]=dX4/dt

F[5]=dX6/dt

Y0 -- начальные значения переменных системы уравнений

Y -- массив переменных системы уравнений

Y[1]=Z1

Y[2]=X5

Y[3]= б

Y[4]=X4

Y[5]=X6

2. Листинг программы

Входные параметры:

* T0 * 0

* TK * 30

* h * 0.01

* Y0 * 0 0 0 0 0

* T * 1 2 1 1 1

* k * 1 1 1 1 1

* g * 1

* n * 0.5

********

2.1. Главная программа

program Eler;

uses mdd, graph;

begin

start(ymin,ymax,t0,tk,t,k1,k2,k3,k4,t1,t2,t3,h,g,y0,y);

output1;

while t<=tk do

begin

Eu(g,k1,k2,k3,k4,k6,t1,t2,t3,t4,d,t,h,m,y0,F,y,Gr);

abc (Gr, ymin, ymax);

output(t,y)

end;

readln;

begline;

start2(t0,t,y0,y);

top(ymin,ymax,t0,tk,shg,hi,bx,by);

while t<=tk do

begin

Eu(g,k1,k2,k3,k4,k6,t1,t2,t3,t4,d,t,h,m,y0,F,y,Gr);

draw(Gr,t,shg,hi,bx,by,h);

end;

finish(t0,tk,ymin,ymax,shg,hi,bx,by);

readln

end.

2.2. Модуль

unit MDD;

interface {описание структуры программы}

uses graph;

const m=5;

m2=5;

type mass=array [1..m] of real; {массив дифференциалов}

mass2=array [1..m2] of real; {массив переходных процессов}

var

y0, y, F: Mass;

Gr: Mass2;

f1,e: text;

i,grdriver,grmode:integer;

g,n,u4,k3,k4,t1,t2,t3,T4,T5,d,k6,k1,k2,h,ymin,ymax,t0,tk,t, shg,hi,bx,by,i1:real;

s:string[8];

procedure start(var ymin, ymax,t0, tk, t,k1,k2,k3,k4,t1,t2, t3,h,g:real;var y0,y:mass);

procedure start2(var t0,t: real; var y0,y: mass);Procedure Eu (var g,k1, k2,k3,k4,t1,t2,t3, u4, k, d, t, h: real; m:integer; var y0, F, y: mass; var Gr: mass2);

Procedure R (var y0, F: mass; g,k1,k2,k3,k4,k6,t1,t2,t3,t4,n: real);

procedure graphiks(var Gr: mass2; y, y0: mass; g,k1,k2,k3,k4,k6,T1,T2,T3,T4,n: real);

procedure begline;

procedure abc (Gr: mass2; var ymin,ymax:real);

procedure top(ymin,ymax,t0,tk: real; var shg,hi,bx,by: real);

procedure draw(Gr: mass2; t,shg,hi,bx,by,h: real);

procedure finish(t0,tk,ymin,ymax,shg,hi,bx,by: real);

procedure output1;

procedure output(t: real; y: mass);

implementation

procedure start(var ymin,ymax,t0,tk,t,k1,k2,k3,k4,t1,t2,t3,h,g:real;var y0,y:mass); {начальные присвоения}

begin

assign (f1, 'C:\nu.txt');

assign (e, 'C:\Result.txt');

reset (f1);

readln(f1);

readln(f1);

readln(f1,s, T0);

readln(f1,s, TK);

readln(f1,s, h);

read(f1,s);

for i:=1 to m do begin

read(f1, y0[i]);

y[i]:=y0[i];

end;

readln(f1);

readln(f1, s, t1, t2, t3, t4, t5);

readln(f1,s, k1, k2, k3, k4, k6);

readln(f1,s, g);

readln(f1,s, n);

ymin:=y0[1];

ymax:=y0[1];

T:=t0;

close(f1);

end;

procedure start2(var t0,t: real; var y0,y: mass);
{начальные присвоения2}

begin

reset (f1);

readln(f1);

readln(f1);

readln(f1);

readln(f1);

readln(f1);

read(f1,s);

for i:=1 to m do begin

read(f1, y0[i]);

y[i]:=y0[i];

end;

close(f1);

T:=t0;

end;

Procedure Eu (var g,k1, k2,k3,k4,t1,t2,t3, u4, k, d, t, h: real; m:integer; var y0, F, y: mass; var Gr: mass2);

var i: integer;

begin

R (y0,F,g,k1,k2,k3,k4,k6,T1,T2,T3,T4,n);

for i:=1 to m do for i:=1 to m do

y[i]:=y0[i]+h*F[i];

graphiks(Gr,y,y0,g,k1,k2,k3,k4,k6,T1,T2,T3,T4,n);

t:=t+h;

for i:=1 to m do

y0[i]:=y[i];

end;

Procedure R (var y0, F: mass; g,k1,k2,k3,k4,k6,T1,T2,T3,T4,n: real);

begin

F[1]:=((g-y0[2]*k6-y0[1])*k2)/T2;

F[2]:=y0[5];

F[3]:=(k3*(y0[1]+y0[2])-y0[3])/T3;

F[4]:=(k4*y0[1]-y0[4])/T4;

F[5]:=(y0[4]-2*n*T5*y0[5]-y0[2])/(T5*T5);

end;

procedure graphiks(var Gr: mass2; y, y0: mass; g,k1,k2,k3,k4,k6,T1,T2,T3,T4,n: real);

begin

Gr[1]:=g-k6*y[2];

Gr[2]:=(g-y[2]*k6y[1])*k2+k1*(g-y[2]*k6);

Gr[3]:=y[3];

Gr[4]:=y[2];

Gr[5]:=y[2]*k6;

end;

procedure begline;

begin

grdriver:=detect;

initgraph(grdriver, grmode, 'd:\bp\bgi');

setfillstyle(1,11);

bar(0,0,640,480);

setcolor(15);

rectangle(40,460,600,40);

i:=40;

while i<600 do

begin

setcolor(15);

line(i,40,i,460);

i:=i+56;

end;

i:=40;

while i<460 do

begin

line(40,i,600,i);

i:=i+42

end;

end;

procedure abc (Gr: mass2; var ymin,ymax: real);

begin

for i:=1 to m2 do begin

if ymin>Gr[i] then ymin:=Gr[i];

if ymax<Gr[i] then ymax:=Gr[i];

end;

end;

procedure top(ymin,ymax,t0,tk: real; var shg,hi,bx,by: real);

begin

shg:=560/(tk-t0);

hi:=420/(ymax-ymin);

bx:=600-tk*shg;

by:=440-ymax*hi;

end;

procedure draw(Gr: mass2; t,shg,hi,bx,by,h: real);

{процедура построения графиков}

begin

for i:=1 to m2 do begin

moveto(round((t-h)*shg+bx),round(GetMaxY-Gr[i]*hi-by));

SetColor(11+i);

SetLineStyle(0,1,3);

lineto(trunc(t*shg+bx),trunc(GetMaxY-Gr[i]*hi-by));

end;

end;

procedure finish(t0,tk,ymin,ymax,shg,hi,bx,by: real);

begin

setfillstyle(1,11);

bar(40,475,600,461);

setfillstyle(1,11);

bar(40,5,635,39);

setfillstyle(1,15);

setcolor(12);

SetLineStyle(0,1,3);

setcolor(5);

i1:=t0;

while i1<=tk do

begin

str(i1:5:2,s);

settextstyle(0,0,1);

outtextxy(round(i1*shg+bx)-10,GetMaxY-30,s);

i1:=i1+(tk-t0)/10;

end;

setcolor(12);

line(50,30,60,30);

settextstyle(0,0,2);

outtextxy(70,20,'E');

setcolor(13);

line(170,30,180,30);

outtextxy(190,20,'U');

setcolor(14);

line(280,30,290,30);

outtextxy(300,20,'A');

setcolor(15);

line(390,30,400,30);

outtextxy(410,20,'Y');

setcolor(16);

line(500,30,510,30);

outtextxy(520,20,'Z');

setcolor(4);

settextstyle(1,0,2);

outtextxy(round(i1*shg+10),getMaxY-40,'T(c)');

setcolor(5);

i1:=ymin;

while i1<=ymax do

begin

str(i1:5:3,s);

settextstyle(0,0,1);

outtextxy(10,round(GetMaxY-i1*hi-by),s);

i1:=i1+(ymax-ymin)/10;

end;

setfillstyle(1,1);

bar(0,0,5,480);

bar(0,0,640,5);

bar(640,0,635,480);

bar(640,480,5,475);

end;

Procedure output1;

begin

rewrite(e);

writeln(e,' Результаты решение системы ДУ');

writeln(e,'****************************************************');

writeln(e,'* T (c) * D(z1) * D(x5) * D(A) * D(x4) * D(x6) *');

writeln(e,'***************************************************');

writeln(' Результаты решение системы ДУ');

writeln('*****************************************************');

writeln('* T (c) * D(z1) * D(x5) * D(A) * D(x4) * D(x6) *');

writeln('*****************************************************');

end;

procedure output(t: real; y: mass); {Вывод на экран результатов решения системы уравнений и их запись во внешний файл}

begin

write (e, t:3:2,' ');

write (t:3:2,' ');

for i:=1 to m do begin write (e, y[i]:5:4,' ');

write (y[i]:5:4,' '); end;

writeln(e);

writeln

end;

END.

3. Графики переходных процессов

Зависимость сигнала на выходе УУП от времени

Зависимость сигнала рассогласования от времени

Зависимость от времени координаты исполнительного органа ИУ

Регулируемая величина

График сигнала обратной связи

Общий вид решения

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.