У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


графіка

Блок 1. Входимо в підпрограму.

Блок 2.Оголошення допоміжних параметрів.

Блок 3. Вивід на екран тексту S1= Графiк %s процесу, де %s вхідний параметр.

Блок 4. Зациклення програми за допомогою оператора циклу.

Блок 5. Побудова графіка.

Блоки 6-9. Нанесення координатних осей.

Блоки 10-12. Розмітка координатних осей.

Блок 13. Завершення підпрограм

7. Аналіз результатів виконання програми

В процесі виконання роботи було досліджено коливний процес системи автоматизованого регулювання (САР). За допомогою програми на мові програмування Turbo C було розв’язано систему диференціальних рівнянь, яка описує коливний процес даної системи. Також було розв’язано коливний процес САР, коли змінний коефіцієнт настройки С0 рівний коефіцієнту, який відповідає коливній границі стійкості САР. Ці розв’язки не задовільняють постановку задачі про свою стійкість. Одже було зроблено оптимізацію коефіцієнта настройки і було отримано стійкі розв’язки коливної системи при С0=С0опт.

Стійкість системи забезбечена підбором коефіцієнта настройки, а тому умову постановки задачі виконано.

Додаток А. Текст головної програми і підпрограм

# include<stdio.h>

# include<bios.h>

# include<graphics.h>

float yb[101],y[3],z[3],f[3];

float a[3],b[3],c[3],d[3];

float b0,a0,a1,a2,a3,c0k,c0o;

float k1=3,k2=5,twst=2,t1=0.1,t2=0.01,t3=0.2;

float h,in;

int i,j,m=3,n=100;

void grafik(char *),systema(void),RunKut(float);

float Prkut(float),ZolPer(void);

/******************************************************/

/* Головна програма */

/******************************************************/

main()

{

char mas[15],*c=mas;

clrscr();

h=twst/n;

a1=t1+t3; a2=t2+t1*t3; a3=t1*t2;

c0k=a1*a2/(k1*k2*a3)-1/(k1*k2);

fprintf(stdout,"Результати розрахункiв:\n");

fprintf(stdout,"Коливне c0=%f\n",c0k);

RunKut(c0k);

fprintf(stdout,"Коливний перехiдний процес,");

fprintf(stdout," масив значень вихiдної величини\n\n");

for(i=1;i<=n;i+=5)

fprintf(stdout,"%f\t%f\t%f\t%f\t%f\n",

yb[i],yb[i+1],yb[i+2],yb[i+3],yb[i+4]);

bioskey(0);

c="коливного";

grafik(c);

c0o=ZolPer();

fprintf(stdout,"Результати розрахункiв:\n");

fprintf(stdout,"Коливне c0=%f\n",c0o);

RunKut(c0o);

fprintf(stdout,"Коливний перехiдний процес,");

fprintf(stdout," масив значень вихiдної величини\n\n");

for(i=1;i<=n;i+=5)

fprintf(stdout,"%f\t%f\t%f\t%f\t%f\n",

yb[i],yb[i+1],yb[i+2],yb[i+3],yb[i+4]);

bioskey(0);

c="оптимального";

grafik(c);

}

/*****************************************************/

/* Система алгебро-дифрiвнянь */

/*****************************************************/

void systema(void)

{

f[0]=(b0-a0*y[2]-a1*y[1]-a2*y[0])/a3;

f[1]=y[0];

f[2]=y[1];

return;

}

/*****************************************************/

/* Побудова графiка */

/*****************************************************/

void grafik(char *c)

{

int j,i,gmode,gdriver=DETECT;

initgraph(&gdriver,&gmode,"\BGI");

fprintf(stdout,"\n\tГрафiк %s процесу\n",c);

for(i=0;i<100;i++)

line(4*i+100,300-100*yb[i],4*(i+1)+100,300-100*yb[i+1]);

line(100,200,500,200); line(100,100,500,100);

line(100,300,500,300);line(100,100,100,500);

outtextxy(80,100,"2");

outtextxy(80,200,"1");

outtextxy(80,300,"0");

bioskey(0);

closegraph();

return;

}

/*****************************************************/

/* Метод розв'язування системи дифрiвнянь:Рунге-Кута */

/*****************************************************/

void RunKut(float c0)

{

y[0]=y[1]=y[2]=0; yb[0]=0;

b0=c0*k1*k2; a0=1+b0;

for(i=1;i<=n;i++)

{

for(j=0;j<m;j++)z[j]=y[j];

systema();

for(j=0;j<m;j++){a[j]=f[j]*h;y[j]=z[j]+a[j]/2;}

systema();

for(j=0;j<m;j++){b[j]=f[j]*h;y[j]=z[j]+b[j]/2;}

systema();

for(j=0;j<m;j++){c[j]=f[j]*h;y[j]=z[j]+c[j];}

systema();

for(j=0;j<m;j++){d[j]=f[j]*h;y[j]=z[j]+(a[j]+2*(b[j]+c[j])+d[j])/6;}

yb[i]=y[2];

}

return;

}

/************************************************/

/* Метод оптимiзацiї функцiї: золотого перерiзу */

/************************************************/

float ZolPer(void)

{

float a=0,b=c0k,c,d,y1,y2,eps=1e-1,u;

c=a+0.38*b;y1=Prkut(c);

d=b-0.38*b;y2=Prkut(d);

while(b-a>eps)

if(y1<y2){b=d;d=c;c=a+0.38*(b-a);y2=y1;y1=Prkut(c);u=c;}

else {a=c;c=d;d=b-0.38*(b-a);y1=y2;y2=Prkut(d);u=d;}

return u;

}

/*************************************************************/

/* Метод обчислення означеного iнтегралу:лiвих прямокутникiв */

/*************************************************************/

float Prkut(float c0)

{

RunKut(c0);

in=0;

for(i=0;i<n;i++)

in+=(1-yb[i])*(1-yb[i]);

return(in*h);

Додаток Б. Таблиця ідентифікаторів

Ім’я

змінної | Ідентифікатор у програмі мовою

Сі |

Значення

y | yb[101] | Масив значень величини у (для графіка)

y[3] | Масив правих частин системи дифрівнянь

z[3] | Допоміжний масив правих частин системи дифрівнянь

f[3] | Масив правих частин системи дифрівнянь у підпрограмі

k1 | k1 | =3 – заданий коефіцієнт дифрівняння

k2 | k2 | =5 – заданий коефіцієнт дифрівняння

а0 | a0 | = 1+b0

а1 | a1 | =T1 + T3

а2 | a2 | =T2+T1T3

а3 | a3 | =T1T2

b0 | b0 | =C0k1k2

h | h | h=tвст/n – крок інтегрування

min | Мінімальне значення інтегралу функції

in | Значення інтегралу функції y=f(t)

Cок | c0k | Коливна межа стійкості рішення

Сопт | c0o | Оптимальне значення C0

С0 | c0 | Коефіцієнт дифрівняння

С1 | c1 | =0.2 – заданий коефіцієнт дифрівняння

tвст | twst | =2.0 час припинення коливань системи

Т1 | t1 | =0.1 – заданий коефіцієнт дифрівняння

Т2 | t2 | =0.01 – заданий коефіцієнт дифрівняння

Т3 | t3 | =0.2 – заданий коефіцієнт дифрівняння

i,j | Цілі змінні, параметри циклів

m | =3 – кількість дифрівнянь системи

n | =100 – число відрізків при інтегруванні

c | Адреса типу сhar (для графіка)

a[3],b[3],c[3], d[3] | Коефіцієнти формули Руннге-Кута

Mas[15] | Текстове повідомлення

Додаток В. Результати виконання програми та їх пояснення

Додаток В. Результати розрахункiв:

Коливне c0=0.533333

Коливний перехiдний процес, масив значень вихiдної величини

0.009067 0.063016 0.182304 0.367519 0.604769

0.870329 1.135103 1.368986 1.544939 1.642470

1.650219 1.567390 1.403892 1.179181 0.919972

0.657063 0.421688 0.241808 0.138787 0.124861

0.201684 0.360128 0.581373 0.839138 1.102806

1.341059 1.525600 1.634510 1.654855 1.584221

1.431000 1.213393 0.957247 0.692988 0.452004

0.262917 0.148185 0.121434 0.185839 0.333748

0.547592 0.801968 1.066663 1.310236 1.503757

1.624242 1.657381 1.599241 1.456729 1.246775

0.994317 0.729343 0.483325 0.285485 0.159319

0.119812 0.171654 0.308686 0.514628 0.765019

1.030117 1.278434 1.480476 1.612247 1.658098

1.612583 1.481111 1.279301 1.031124 0.766058

0.515588 0.309464 0.172166 0.120001 0.159163

0.284999 0.482559 0.728377 0.993254 1.245729

1.455814 1.598556 1.657004 1.624216 1.504089

1.310894 1.067580 0.803047 0.548716 0.334795

0.186693 0.121999 0.148395 0.262743 0.451460

0.692128 0.956162 1.212198 1.429828 1.583201

Коливне c0=0.300510

Коливний перехідний процес, масив значень вихідної величини

0.005109 0.035562 0.103319 0.209946 0.349910

0.513098 0.686878 0.857828 1.013185 1.142012

1.236060 1.290309 1.303193 1.276515 1.215088

1.126160 1.018676 0.902455 0.787348 0.682456

0.595450 0.532063 0.495757 0.487605 0.506364

0.548729 0.609737 0.683273 0.762635 0.841107

0.912496 0.971589 1.014504 1.038910 1.044106

1.030969 1.001780 0.959943 0.909643 0.855457

0.801965 0.753381 0.713249 0.684196 0.667795

0.664500 0.673693 0.693801 0.722490 0.756894

0.793890 0.830353 0.863415 0.890669 0.910335

0.921355 0.923433 0.917004 0.903153 0.883482

0.859950 0.834693 0.809838 0.787340 0.768832

0.755521 0.748119 0.746817 0.751310 0.760850

0.774337 0.790431 0.807674 0.824616 0.839925

0.852493 0.861502 0.866473 0.867281 0.864143

0.857574 0.848327 0.837320 0.825549 0.814001

0.803584 0.795050 0.788954 0.785617 0.785119

0.787309 0.791833 0.798172 0.805699 0.813735

0.821605 0.828694 0.834488 0.838613 0.840853

Список використаної літератури

1.

Юрчишин В.М., Клим Б.В., Горбаль М.Б. Програмування мовою Сі.

Навчальний посібник – Івано-Франківськ: “Факел”, 2009 – 128 с.

2.

Данилина Н.И. и др. Вычислительная математика. - М.: Высшая школа, 1985

3.

Калиткин Н.Н. Численные методы. - М.: Наука, 1976.

4.

Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. - М.: Наука, 1987

5.

Гаврилюк І.П., Макаров В.Л. Методи обчислень. — К.:Вища школа, 1995 — т.1,2

6.

Ляшенко М.Я., Головань М.С. Чисельні методи. — К.: Либідь, 1996

7.

Турчак Л.І. Основы численных методов. — М.: Наука, 1987

8.

Бочков С.О., Субботин Д.М. Язык программирования Си для персо---нального компютера. - М.: Радио и связь, 1990

9.

Трой Д. Программирование на языке Си для персонального компютера IBM PC. - М.: Радио и связь, 1991

10.

Лабораторний практикум з програмування мовою Сі для студентів спеціальності 7.091401 – АУ. ІФНТУНГ, ДОП. –Івано-Франківськ, 1996

11.

Алексеев В.Е. и др. Вычислительная техника и программирование. Практикум по программированию: Практич. пособие. — М.: Высшая школа, 1991
Сторінки: 1 2 3