Учебная работа. Курсовая работа: Программирование и основы алгоритмизации

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Курсовая работа: Программирование и основы алгоритмизации

Федеральное агентство образования Русской Федерации

Тульский муниципальный институт

Кафедра «Системы автоматического управления»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе по дисциплине

«Программирование и базы алгоритмизации».

Разработал студент группы 120161

Матях Р.И.

Проверил доцент кафедры САУ:

Тула 2007 г.


ЗАДАНИЕ

По данной структурной схеме САУ составить систему ДУ, описывающих её функционирование.

Создать программку на языке Pascal для решения данной нам системы способом Эйлера.

Создать программку на языке Pascal для построения графиков переходных действий.

Провести исследование воздействия конструктивных характеристик на величину времени регулирования при подаче на вход системы единичного ступенчатого сигнала.


Вид многофункциональной схемы САУ


z






Обозначения:

СУ – суммирующее устройство;

УУП – устройство усиления и преобразования;

ИУ – исполнительное устройство;

ОУ – объект управления;

УОС – устройство оборотной связи;


– управляющее действие;




сигналрассогласования;



сигнал на выходе УУП;



координата исполнительного органа исполнительного устройства;



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



сигнал оборотной связи.

Варианты УУП:

1. Пропорциональный регулятор

2. Пропорциональный интегральный регулятор

3. Пропорциональный дифференциальный регулятор

4.Интегрально-дифференциальный регулятор

5. Пропорциональный интегрально-дифференциальный регулятор

Варианты схем исполнительных устройств:

1. движок неизменной скорости

2. Автоматический привод

3. Автоматический привод

Варианты объектов управления:

W(p)=K4/((T4*p+1)*(T5*p+1)*(T6*p+1))

W(p)=K4/(T42
*p2
+2*η*T4*p+1)

W(p)=K4/(p*(T4*p+1)*(T5*p+1))

W(p)=K4/(p*(T42
*p2
+2*η*T4*p+1))

W(p)=K4/((T4*p+1) (T52
*p2
+2*η*T5*p+1))

W(p)=K4/((T4*p+1)*(T5*p+1))

W(p)=K4/(p*(T4*p+1))

Передаточная функция:

W(p)=K6

1. Решение дифференциальных уравнений способом Эйлера

1.1 Описание способа

Уравнения, содержащие производные от функции, появляются при решении почти всех научно-технических задач, при этом существует огромное обилие классов схожих уравнений. Для решения неких из их могут быть применены аналитические способы, рассматриваемые в курсах арифметики, но почти всегда приходится использовать численные способы.

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

Пусть задано дифференциальное уравнение первого порядка с исходным условием (задачка Коши)





















(1)

У(x0
) = Уо


(2)

где











– данная функция 2-ух переменных

и

, x0


, у0


– известные числа. Требуется найти функцию

при



0



Уравнение
можно разглядывать как задание кривой через ее производную в координатной плоскости

, так как понятно как вычислить производную в каждой точке данной нам кривой через ее координаты. В общем случае уравнению
удовлетворяет целое семейство кривых; изначальное условие
дозволяет избрать из этого семейства одну определенную кривую, которая проходит через заданную точку

0






0



Для численного решения
,
заменим область непрерывного конфигурации аргумента

дискретным обилием точек, т.е. введем сетку. Положим, что величина

меняется от значения



0


до значения




Тогда, рассматривая равномерную сетку, получаем узловые точки x0
,




1




xk







находящиеся на расстоянии

друг от друга, т.е.

xk


+1




xk












(3)

где

шаг сетки. Надлежащие значения функции будем обозначать уk


, т.е.

yk








xk



Тут


функция, которая является приближенным решением

Для получения численного решения, дифференциальное уравнение
заменяется уравнениями относительно значений функций

в узловых точках. Эти уравнения именуются разностными. Простейшее разностное уравнение для
имеет вид



yk


+1




yk












xk




yk












(4)

Уравнение
следует из
если производную



приближенно представить через значения функции

в примыкающих узлах.

Соотношения (2.12.4) можно записать в виде

Yk


+1




yk












xk




yk




(5)

Тогда, беря во внимание
при помощи формулы
можно поочередно найти значения у1
,y2



.… Этот способ приближенного решения
именуется способом Эйлера.
Геометрическая интерпретация данной нам схемы дана на
, где изображено поле интегральных кривых. Внедрение лишь первого члена формулы Тейлора значит движение не по интегральной кривой, а по касательной к ней. На любом шаге мы поновой находим касательную; как следует, линия движения движения будет ломаной линией. Из-за этого способ Эйлера время от времени именуют способом ломаных.

Рис.1

Доказывается, что если шаг сетки

стремится к нулю, то приближенное решение, определяемое
стремится к четкому решению
т.е. имеется факт сходимости приближенного решения к четкому при

®0. Но в критериях настоящих вычислений на компе при конечном шаге целенаправлено знать как приобретенное приближенное решение близко к четкому. В качестве меры отличия (нормы ошибки) нередко употребляют величину















xk




yk




(6)

тут


серьезное решение
, yk



приближенное xk



приобретенное методом решения разностных уравнений, к примеру

Для разностных уравнений величина



оценивается формулой







Chm


(7)

тут




зависящая от длины отрезка, на котором ищется решение, и метода дискретизации
,



параметр, который именуется порядком точности решения. порядок точности способа Эйлера — малый, т.е.

= 1, что соединено с достаточно грубым методом аппроксимации дифференциального уравнения разностным. Как правило, чем выше порядок точности, тем наиболее желаемым является численный способ.

Можно утверждать, что хоть какое верно составленное разностное уравнение аппроксимирует начальное дифференциальное с той либо другой точностью. Свойство аппроксимации обычно оценивают по точности, с которой решение начальной задачки удовлетворяет разностному уравнению, т.е. по формуле









xk


+1








xk












xk








xk




Chm

где

— const, т

порядок аппроксимации разностного уравнения.

Сопоставление (1) и (4) указывает, что способ Эйлера имеет 1-ый порядок аппроксимации, так же как и точность решения. Но в общем случае утверждение о равенстве порядков точности решения и аппроксимации разностного уравнения не является естественным и просит подтверждения. способ Эйлера является одним из самых старенькых и обширно узнаваемых способов численного решения дифференциальных уравнений. К огорчению, этот способ может приводить к неприемлимо огромным ошибкам, а не считая того, он нередко оказывается неуравновешенным — малая ошибка (происходящая при округлении либо из-за некорректности начальных данных) значительно возрастает с ростом

1.2

программка для решения дифференциальных уравнений состоит из 3-х частей:

Основная программка.

Процедуры, реализующие способ Эйлера.

Процедуры вычисления правых частей.

Процедура вычисления правых частей

имеет вид:

procedure R( var y0,F: mass);

begin

F[1]:=y0[2];

F[2]:=(ft-k2*y0[2]-k1*y0[1])/Mm

end;

где:

F – массив значений правых частей системы, приведенной к обычной форме Коши;

y0 – массив значений исходных критерий системы;

k1,k2 … kn – коэффициенты;

ft – f(t), т.е. сигнал (действие), подаваемый на вход системы;

Процедура, реализующая способ Эйлера:

procedureEu(vart0,t,h: real; varm:integer; vary0,y:mass);

var i: integer;

begin

R(y0,F);

for i:=1 to m do

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

t:=t+h;

end;

где:

t0,tk – изначальное и конечное

m – порядок системы;

h – шаг сетки;

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

while t0<=tk do

begin

Eu(t0,t,h,g,y0,y);

writeln(t,y[1],y[2]);

for i:=1 to g do

y0[i]:=y[i];

end;

readln;

end.

Для приведённой выше схемы составим систему дифференциальных уравнений:

Выразим неведомые величины через данные исходных критерий

1. Но

Итак,

2. Аналогично

3.

4.

5. Пусть

тогда

Таковым образом имеем систему из 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. Основная программка

programEler;

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
{описание структуры программки}

usesgraph;

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];


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


(var t0,t: real; var y0,y: mass);
(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 y0, F: mass; g,k1,k2,k3,k4,k6,t1,t2,t3,t4,n: real);


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


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


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


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


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


(t: real; y: mass);

implementation


(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;


(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;



(varg,k1, k2,k3,k4,t1,t2,t3, u4, k, d, t, h: real; m:integer; vary0, F, y: mass; varGr: 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;


(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;



(varGr: 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;

begin

grdriver:=detect;

initgraph(grdriver, grmode, ‘d:bpbgi’);

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;


(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;


(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;


(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;


(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;

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;



(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. Графики переходных действий

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

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

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

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

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

Вид решения

]]>