Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
v1.1.docx
Скачиваний:
4
Добавлен:
15.09.2019
Размер:
872.07 Кб
Скачать

3.Схема та опис алгоритму розв’язання задачі

Рис.6 Алгоритм основної програми

Рис.7 Алгоритм виведення на екран першого графіка( Z(t) )

Рис.8 Алгоритм виведення на екран другого графіка (minF(t))

  1. Опис змінних

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]