Курсак.Програмирование.Минев№13 / Додаток А
.docx
ДОДАТОК А
Вихідний текст програми проведення розрахунку АЧХ та ФЧХ
/**********************************************************************/
/* Программа расчета АЧХ и ФЧХ */
/* Выполнил студент гр. РТ-103 Поселюжный В.С. */
/*******************************************************************/
/* Подключениенеобходимыхфайлов */
#include <stdio.h>
#include <math.h>
#include <conio.h>
/*********************************************************************/
/* Объявление функций пользователя */
/********************************************************************/
float ACH(floatKsi, float X); /* Расчет АЧХ */
float FCH(floatKsi, float X); /* Расчет ФЧХ */
void Tabl2(float Ksi, float ACH, float FCH,float W); /* Выводтаблицы */
float Omega(float Ksi, float Q, float W0); /* Определениечастоты */
void Tabl1(void); /* Выводшапкитаблицы */
void Tabl3(void); /* Вывод последней строки таблицы */
/*******************************************************************/
/* Главная функция */
/*******************************************************************/
voidmain(void)
{
/*******************************************************************/
/* Объявление переменных */
/*******************************************************************/
float C, /* Емкость контура */
L, /* Индуктивность контура */
LS, /* Индуктивность связи контура */
R, /* Сопротивление контура */
Q, /* Добротность контура */
K, /* Коэффициент связи */
X, /* Фактор связи */
Ksi, /* Обобщенная расстройка */
A, /* Значение АЧХ */
F, /* Значение ФЧХ */
Om, /* Значение частоты */
W0; /* Резонансяная частота контура */
/*******************************************************************/
/* Присвоение начальных значений переменным */
/*******************************************************************/
C = 10 * pow(10,-9);
L = 240 * pow(10,-6);
LS = 50 * pow(10,-6);
R = 16;
clrscr(); /* Очищаем экран */
W0 = 1 / sqrt(L * C); /* Определяем резонансную частоту */
Q = sqrt(L / C) / R; /* Определяем добротность */
K = LS / (LS + L); /* Определяем коэффициент связи */
X = K * Q; /* Определяем фактор связи */
Tabl1(); /* Вызываем функцию пользователя Tabl1() */
/*******************************************************************/
/* Создаем цикл */
/*******************************************************************/
for(Ksi = -4.0; Ksi<= 4; Ksi = Ksi + 0.5)
{
A = ACH(Ksi, X); /* Определяем значения АЧХ */
F = FCH(Ksi, X); /* Определеляем значения ФЧХ */
Om = Omega(Ksi, Q, W0); /* Определяем значения частоты */
Tabl2(Ksi, A, F, Om); /* Выводим на экран строки таблицы */
}
Tabl3(); /* Вызываем функцию пользователя Tabl3() */
getch(); /* Ожидаем нажатие клавиши */
}
/*******************************************************************/
/* Функции пользователя */
/*******************************************************************/
/*******************************************************************/
/* Расчет значения АЧХ */
/*******************************************************************/
float ACH(floatKsi, float X)
{
float ACH; /* Объявляем переменную ACH */
ACH = 2 * X / sqrt((1 + X * X - Ksi * Ksi) * (1 + X * X - Ksi * Ksi)+4 * Ksi * Ksi); /* Вычисляем АЧХ */
return ACH; /* Возвращаем значения */
}
/*******************************************************************/
/* Расчет значения ФЧХ */
/*******************************************************************/
float FCH(float Ksi, float X)
{
float FCH; /* Объявляем переменную FCH */
FCH = (3.14 / 2) - atan(2 * Ksi / (1 + X * X - Ksi * Ksi)); /* Вычисляем ФЧХ */
return FCH; /* Возвращаем значения */
}
/*******************************************************************/
/* Вывод на экран строки таблицы */
/*******************************************************************/
void Tabl2(float Ksi, float ACH, float FCH, float W)
{
printf (" ║ %4.1f ║ %4.3f ║ %4.3f ║ %4.3f ║\n", Ksi, W, ACH, FCH);
}
/*******************************************************************/
/* Расчет omega */
/*******************************************************************/
float Omega(float Ksi, float Q, float W0)
{
float W, /* Значение частоты */
W1; /* Нормированное значение частоты */
W1 = ((Ksi / Q) * W0 + W0 * sqrt((Ksi * Ksi) / (Q * Q) + 4.0)) / 2.0; /* Расчитываем частоты */
W = W1/pow(10,6); /* Нормируем значения частоты */
return W; /* Возвращаем значения */
}
/*******************************************************************/
/* Вывод на экран названия и "шапки" таблицы */
/*******************************************************************/
void Tabl1(void)
{
printf(" Таблица значений АЧХ и ФЧХ \n");
printf(" ╔═══════╦═════════╦═══════════╦═══════════╗\n");
printf(" ║ Ksi ║ Omega ║ АЧХ ║ ФЧХ ║\n");
printf(" ║ ║ *10^6 ║ ║ ║\n");
printf(" ╠═══════╬═════════╬═══════════╬═══════════╣\n");
}
/*******************************************************************/
/* Выводим на экран последней строки таблицы */
/*******************************************************************/
void Tabl3(void)
{
printf(" ╚═══════╨═════════╨═══════════╨═══════════╝\n");
}