Курсовые / Курсовые ЭТМО / 03 / Введение
.docМОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ ЭЛЕКТРОННОЙ ТЕХНИКИ
(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
Курсовая работа
по курсу "Объектно ориентированное программирование"
на тему "ЛФЧХ"
Выполнил:
студент 2-го курса
гр.ЭТМО-21
Серов И.В.
Зачетная книжка № 203144
________________
Проверил:
________________
________________
Оценка:__________
Москва 2002г.
Введение.
Целью данной программы является построение семейства логарифмических фазово-частотных характеристик (ЛФЧХ). ЛФЧХ – это график зависимости фазовой частотной функции φ(ω) от логарифма частоты lg ω. При его построении по оси абсцисс на отметке соответствующей значению lg ω, пишут значение ω.
З
венья,
передаточные функции которых имеют вид
простых множителей или простых дробей,
называют типовыми или элементарными
звеньями.
Нам задана функция .
К
ак
видно, это является частью колебательного
звена.
К
олебательное
звено . Частотная передаточная
функция
Умножив числитель и знаменатель на комплексно-сопряжённое знаменателю выражение, получим вещественную и мнимую частотные функции:
Фазовая частотная функция изменяется монотонно от 0 до и выражается формулой:
![]()
![]()
при
![]()
при
Л
![]()
огарифмическая
фазовая частотная характеристика при
асимптотически стремится к оси
частот, а при - к прямой
.
А
мплитудная
частотная функция:
логарифмическая амплитудная функция
У
равнение
Асимптотической ЛАЧХ имеет вид:
В![]()
![]()
![]()
![]()
нашем случае при и
а
симптотически
стремится к оси частот,а в точке
мы имеем точку разрыва первого рода.
П
ри
стремлении к 100 слева то принимает
значение –900
, а если справа то принимает значение
900
.
Инструкция пользователю:
Для запуска программы необходимо:
-
Необходимо запустить файл H:\Druid\kursovik.exe (В этой же директории должен находиться файл Egavga.bgi)
-
Н
а
запрос о вводе значения b
“Specify value b ”: <b=>,
ввести необходимое значение , в случае
некорректного ввода b,
программа сообщит об этом “Incorrect
value”
и опять выдаст запрос о вводе значения
b:
<b=>. -
Для завершения работы необходимо ввести значение b=0.
-
Для корректной работы необходимо:
-
Интервал допустимых значений b-<0.1..1>,
-
Количество построенных графиков не более 10.
-
Количество значащих цифр в чиисле b не более 5.
Исходный текст программы.
#include "conIO.h"
#include "graphmod.h"
#include "string.h"
int main(void)
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
int dx=200,dy=280;
double j=0;int i=1;
double a1=0.1,a2=1;
decart XoY(dx,dy);
XoY.Sysxy();
setcolor(8);outtextxy(280,50,"Term Project: Drawing a family of LPFC ");
outtextxy(280,60,"Subject: Object Oriented Programming");
outtextxy(280,70,"Coded & designed by Serov I.V.");
setcolor(8);outtextxy(370,470,"Copyright (c) 2002 by Druid");
cout<<"Specify value b>0..............//(For exit specify value b=0.) \n";
do {_new:
cout<<"b="; cin>>j; setcolor(i); if((j>=a1)&&(j<=a2)) outtextxy(70,i*16+5,"І");
if(i==16) i=17; if(i>=20) break; if(j==0) break;
if(j<a1){ cout<<"Incorrect value.\n";i+=2;goto _new;};
if(j>a2){ cout<<"Incorrect value.\n";i+=2;goto _new;};
XoY.Graph(dx,dy,j,i);
i++;}while(i<20);
cout<<"Goodbye!!! \nPress any key.";
getch();
closegraph();
return 0;
}
Текст используемого модуля<Graphmod.h>
#include "graphics.h"
#include "iostream.h"
#include "bios.h"
#include "STDLIB.H"
#include "conio.h"
#include "stdio.h"
#include "math.h"
#include "dos.h"
class decart
{
private: int dx,dy;
public:
decart(int xd=100, int yd=100);
void Sysxy(void);
void Putpixel(int x,int y,int color);
void Line(int x1, int y1, int x2, int y2,int color);
void Bar(int x1, int y1, int x2, int y2,int color);
void Circle(int x,int y,int radius);
void Ellipse(int x,int y,int xrad,int yrad,int color);
void Graph(int dx,int dy,double j,int color);
};
decart::decart(int xd, int yd) {dx=xd;dy=yd;}
void decart::Sysxy(void)
{
setcolor(1);
rectangle(dx-35,dy-160,dx+420,dy+160);
setcolor(15);
line(dx,dy-140,dx,dy+135); // os Y
line(dx,dy-140,dx+2,dy-135);
line(dx,dy-140,dx-2,dy-135);
for(int i=-1;i<2;i++)
{ setlinestyle(SOLID_LINE,1, 1);
line(dx-2,dy+i*98,dx+2,dy+i*98);
setlinestyle(DOTTED_LINE,1, 1);
line(dx+3,dy+i*98,dx+390,dy+i*98);
}
setlinestyle(SOLID_LINE,1, 1);
line(dx-15,dy,dx+400,dy); // os X
line(dx+400,dy,dx+395,dy+2);
line(dx+400,dy,dx+395,dy-2);
for(i=0;i<6;i++)
{ setlinestyle(SOLID_LINE,1, 1);
line(dx+65+i*65,dy-2,dx+65+i*65,dy+2);
setlinestyle(USERBIT_LINE,1, 1);
line(dx+65+i*65,dy-80,dx+65+i*65,dy+85+50);
}
setlinestyle(SOLID_LINE,1, 1);
setcolor(2);
outtextxy(dx+395,dy+5,"X");
setcolor(1);
outtextxy(dx-12,dy+7,"0");
outtextxy(dx+5,dy-140,"Y");
setcolor(2);
outtextxy(dx-5,dy+140,"0.1");
outtextxy(dx+63,dy+140,"1");
outtextxy(dx+125,dy+140,"10");
outtextxy(dx+187,dy+140,"100");
outtextxy(dx+250,dy+140,"1000");
outtextxy(dx+312,dy+140,"10000");
outtextxy(dx+370,dy+140,"100000");
setcolor(1);
outtextxy(dx-28,dy+95,"-90");
outtextxy(dx-20,dy-100,"90");
}
void decart::Putpixel(int x,int y,int color)
{ putpixel(x+dx,-y+dy,color); }
void decart::Line(int x1, int y1, int x2, int y2,int color)
{ setcolor(color);
line(x1+dx,-y1+dy,x2+dx,-y2+dy);
}
void decart::Bar(int x1, int y1, int x2, int y2,int color)
{ setfillstyle(1,color);
bar(x1+dx,-y1+dy,x2+dx,-y2+dy);
}
void decart::Circle(int x,int y,int radius)
{ circle(x+dx,-y+dy,radius); }
void decart::Ellipse(int x, int y,int xrad,int yrad,int color)
{ setfillstyle(1,color);fillellipse(x+dx,-y+dy,xrad,yrad);
setcolor(color); ellipse(x+dx,-y+dy,0,360,xrad, yrad);}
void decart::Graph(int dx,int dy,double j,int color)
{decart XoY(dx,dy);
double t=0.01,ddx=0.01;
double x=-65,y=0;
for(long int i=1;i<39500;i++)
{ x=x+ddx;
x=x/65;
y=-63*atan( (j*2*t*pow(10,x))/
(1-pow(10,x)*pow(10,x)*t*t) );
x=x*65;
if((x<=130-((j+1)*10)*ddx)||(x>=130+((j+1)*10)*ddx)) XoY.Putpixel(x+65,y,color);
if((x>=130)&&(x<=130+ddx)) { setcolor(color); XoY.Circle(x+65,y,2);}
if((x>=130-ddx)&&(x<=130)) { XoY.Ellipse(x+65,y,2,2,color); }
}
}
Запущенная программа выглядит так:
П
остроение
ЛФЧХ с помощью Mathcad Professional
