Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовые / Курсовые ЭТМО / 03 / Введение

.doc
Скачиваний:
16
Добавлен:
17.04.2013
Размер:
206.85 Кб
Скачать

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ ЭЛЕКТРОННОЙ ТЕХНИКИ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

Курсовая работа

по курсу "Объектно ориентированное программирование"

на тему "ЛФЧХ"

Выполнил:

студент 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.

  • Для корректной работы необходимо:

  1. Интервал допустимых значений b-<0.1..1>,

  2. Количество построенных графиков не более 10.

  3. Количество значащих цифр в чиисле 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

Соседние файлы в папке 03