- •2. Математична постановка задачі . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
- •3. Схема та опис алгоритму розв’язання задачі . . . . . . . . . . . . . . . . . . . . . . . . . 8
- •1.1 Структурна схема об’єкта керування
- •2.Математична постановка задачі
- •3.Схема та опис алгоритму розв’язання задачі
3.Схема та опис алгоритму розв’язання задачі
Рис.6 Алгоритм основної програми
Рис.7 Алгоритм виведення на екран першого графіка( Z(t) )
Рис.8 Алгоритм виведення на екран другого графіка (minF(t))
Опис змінних
F(10х10)- матриця із значень передаточної функції;
minF(10)-масив мінімальних значень в матриці F(10х10);
Х1(10),Х2(10)-масиви вихідних елементів системи;
Z, Z1,Z2-функція збурення;
і, o, p - лічильники кількості повторень;
t-час; dt-крок часу;
tp, tk-початкове і кінцеве значення часу;
xp1, xp2, xk1, xk2- початкове і кінцеве значення х1, х2;
mixY-мінімальне значення в матриці F(10,10);
mixX1, mixX2-оптимальні значення х1 та х2 при яких досягається максимум в матриці F(10x10);
grDriver, grMode-графічний драйвер і модуль;
х, хх, y,yy-використовується для побудови штрихів на осях;
q- функція збурення ;
h-функція розрахунку передаточної функції;
miF- процедура для визначення максимального елемента в матриці F(10х10) та відповідних значення X1,X2;
l- використовується для виведення тексту в графіках;
px, py- координати точок виведення графіка;
mx, my- регулювання маштабу графіка.
5. Результати реалізації на ПК
Табл.1 Таблиця результатів
6.Перелік графічного матеріалу
Рис 9 Перший графік(Z(t))
Рис.10 Другий графік(minF(t))
7.Аналіз отриманих результатів
Аналізуючи перший графік, можна зробити висновок, що функція збурення z(t) спадаюча, вона досягає свого мінімуму при t=1.9.
Аналізуючи другий графік,можна зробити висновок, що значення функції F майже не залежить від функції збурення Z та від часу.
З таблиці результатів можна зробити висновок про те, що оптимальні значення X1min та X2min не змінюються.
.
8. Список використаної літератури
Wikipedia
«Pascal за одну ночь», кол. Авторів, вид. «Москва» 2012 р.
Методичні матеріали № 6552
Додаток 1 Текст програми
program marushkevich;
uses Graph,crt;
Type masiv=array[1..10,1..10] of real;
Type masiv1=array[1..10] of real;
var F:masiv;
X1,X2,minF,Z:masiv1;
xp1,xp2,xk1,xk2,dx1,dx2,t,dt,tk,tp,t1,z2,z1,minY,minY1,mx,my,minX1,minX2:real;
i,o,p,grDriver,grMode,y,yy,x,xx,px,py,px1,py1:integer;
grPath,l,l1,s:string;
procedure sozd(var XN:masiv1;xp,xk:real);
var dx,x:real;
begin
dx:=(xk-xp)/(10-1);
x:=xp;
for i:=1 to 10 do begin
XN[i]:=x;
x:=x+dx;
end;
end;
function q(r:real):real;
begin
q:=(1/sqr(r))-1;
end;
function h(h1,q1,h2:real):real;
begin
h:= ((h1-h2)+(3*h1)*h2)+-sin(h2)-(h2*h2*h2)-q1;
end;
procedure miF(x:masiv;v1,v2:masiv1; var miY:real;var miX1,miX2:real);
begin
miY:=x[1,1];
miX1:=v1[1];
miX2:=v2[1];
for p:=1 to 10 do begin
for o:=1 to 10 do begin
if x[p,o]<miY then begin
miY:=x[p,o];
miX1:=v1[p];
miX2:=v2[o];
end;
end;
end;
end;
begin
clrscr;
xp1:=3;
xp2:=-1;
xk1:=6;
xk2:=2;
tp:=1;
tk:=2.6;
dt:=(tk-tp)/(10-1);
sozd(X1,xp1,xk1);
sozd(X2,xp2,xk2);
t:=tp;
writeln;
writeln(' Таблиця');
writeln(' -------------------------------------------------');
writeln(' | n | T | Z | minF | X1min | X2min |');
write(' -------------------------------------------------');
for i:=1 to 10 do begin
Z[i]:=q(t);
writeln;
for p:=1 to 10 do begin
for o:=1 to 10 do begin
F[p,o]:=h(x1[p],z[i],x2[o]);
end;
end;
miF(F,X1,X2,minY,minX1,minX2);
minF[i]:=minY;
if ((i>=1)and(i<10)) then begin
writeln(' | ',i:2,' | ',T:6:2,' |',z[i]:4:2,' | ',minY:4:2,' | ',minX1:4:2,' | ',minX2:4:2,' |');
write(' --------------------------------------------------');
end;
if i=10 then begin
writeln(' |',i:3,' | ',T:6:2,' |',z[i]:4:2,' | ',minY:4:2,' | ',minX1:4:2,' | ',minX2:4:2,' |');
write(' -------------------------------------------------');
end;
t:=t+dt;
end;
readln;
readln;
grDriver:=Detect;
grPath:='C:/tp7/bgi';
InitGraph(grDriver,grMode,grPath);
setbkcolor(15);
setcolor(12);
line(getmaxX div 2,40,getmaxX div 2,440);
line(20,getmaxY div 2,620,getmaxY div 2);
line(getmaxX div 2,40,326,50);
line(getmaxX div 2,40,313,50);
line(620,getmaxY div 2,610,246);
line(620,getmaxY div 2,610,233);
setcolor(1);
outtextxy(332,35,'Z');
outtextxy(620,252,'T');
settextstyle(2,0,5);
t:=0;
x:=(getmaxX div 2)+28;
xx:=(getmaxX div 2)-28;
while ((x<=630)and(xx>=30)) do begin
setcolor(4);
line(x,241,x,237);
line(xx,241,xx,237);
setcolor(2);
t:=t+0.3;
if t<=3 then begin
str(t:1:1,l);
outTextXY(x-7,247,l);
end;
x:=x+28;
xx:=xx-28;
end;
t:=0;
y:=(getmaxY div 2)-25;
yy:=(getmaxY div 2)+25;
while ((y>=50)and(yy<=640)) do begin
setcolor(4);
line(317,y,321,y);
line(317,yy,321,yy);
setcolor(2);
t:=t+0.125;
if t<=2.6 then begin
str(-t:1:1,l);
settextjustify(2,0);
outTextXY(310,yy+5,l);
end;
y:=y-25;
yy:=yy+25;
end;
settextstyle(0,0,0);
setcolor(12);
outtextXY(500,375,'Z(t)');
t:=tp;
t1:=tp+dt;
mx:=70;
my:=205;
setcolor(4);
for i:=1 to 9 do
begin
Z1:=q(t);
Z2:=q(t1);
px:=318+round(t*mx);
py:=237-round(Z1*my);
px1:=318+round(t1*mx);
py1:=237-round(Z2*my);
line(px,py,px1,py1);
t:=t+dt;
t1:=t1+dt;
end;
t:=tp;
for i:=1 to 10 do begin
Z1:=q(t);
px:=318+round(t*mx);
py:=237-round(Z1*my);
SetTextStyle(2,0,3);
str(Z1:1:1,l);
setcolor(2);
circle(px,py,2);
outtextxy(px+7,py+12,l);
t:=t+dt;
end;
readln;
closeGraph;
grDriver:=Detect;
grPath:='C:/tp7/bgi';
InitGraph(grDriver,grMode,grPath);
setbkcolor(15);
setcolor(4);
line(getmaxX div 2,40,getmaxX div 2,440);
line(20,getmaxY div 2,620,getmaxY div 2);
line(getmaxX div 2,40,326,50);
line(getmaxX div 2,40,313,50);
line(620,getmaxY div 2,610,246);
line(620,getmaxY div 2,610,233);
setcolor(1);
outtextxy(332,35,'F');
outtextxy(620,220,'T');
settextstyle(2,0,4);
t:=0;
x:=(getmaxX div 2)+28;
xx:=(getmaxX div 2)-28;
while ((x<=630)and(xx>=30)) do begin
setcolor(4);
line(x,241,x,237);
line(xx,241,xx,237);
setcolor(2);
t:=t+0.3;
if t<=9 then begin
str(t:1:1,l);
outTextXY(x-7,247,l);
end;
x:=x+28;
xx:=xx-28;
end;
settextstyle(0,0,0);
t:=0;
y:=(getmaxY div 2)-26;
yy:=(getmaxY div 2)+26;
while ((y>=55)and(yy<=435)) do begin
setcolor(4);
line(317,y,321,y);
line(317,yy,321,yy);
setcolor(2);
t:=t-1.4;
if t>=-9.81 then begin
str(t:1:0,l);
settextjustify(2,0);
outTextXY(310,yy+5,l);
end;
y:=y-26;
yy:=yy+26;
end;
setcolor(12);
outtextXY(540,360,'minF(t)');
t:=tp;
t1:=tp+dt;
mx:=110;
my:=19.5;
setcolor(4);
for i:=1 to 9 do begin
Z1:=minF[i];
Z2:=minF[i+1];
px:=318+round(t*mx);
py:=222-round(Z1*my);
px1:=318+round(t1*mx);
py1:=222-round(Z2*my);
line(px,py,px1,py1);
t:=t+dt;
t1:=t1+dt;
end;
t:=tp;
for i:=1 to 10 do begin
Z1:=minF[i];
px:=318+round(t*mx);
py:=222-round(Z1*my);
SetTextStyle(2,0,3);
str(Z1:2:2,l);
setcolor(2);
outtextxy(px+15,py-5,l);
circle(px,py,2);
t:=t+dt;
end;
readkey;
closeGraph;
end.