Помощь в написании студенческих работ
Антистрессовый сервис

Расчет на ЭВМ характеристик выходных сигналов электрический цепей

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

В данной работе сигнал на входе электрической цепи Uвх и сигнал на выходе электрической цепи Uвых заданы функцией, графиком и условиями. Так же дан рабочий набор, с помощью которого необходимо для заданной электрической цепи вывести формулы зависимости входного сигнала Uвхот времени и выходного сигнала Uвых от времени. Затем нужно рассчитать значение параметров Uвх и Uвых. Вычислить точность… Читать ещё >

Расчет на ЭВМ характеристик выходных сигналов электрический цепей (реферат, курсовая, диплом, контрольная)

Санкт — Петербургский Государственный Университет Телекоммуникаций им. проф. М. А. Бонч-Бруевича Курсовая работа по дисциплине

«Программирование на языке высшего уровня»

Расчет на ЭВМ характеристик выходных сигналов электрический цепей выполнила Севастьянова Елена, студентка группы Р-01

Санкт-Петербург

Оглавление Постановка задачи Таблица идентификаторов Список основных функций Блок — схема программы Блок — схема U входа Текст программы Расчёт на Maxima

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

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

Создание входного сигнала:

Входной сигнал

Uвх (t)=

Рабочий набор

U = 6B

tn = 0 сек

tк = 2? сек

Передаточная характеристика.

Рабочий набор

U1 = 3 В

U2 = 15 В Передаточная характеристика

Uвых (t)

Таблица идентификаторов

Обозначение в задаче

идентификатор

назначение

tn

начальный момент времени наблюдения входного напряжения.

tk

конечный момент времени наблюдения входного напряжения

N

N

количество точек разбиения

t

t[n]

массив времени

Uвх

Uin[n]

массив входного напряжения

Uвых

Uout[n]

массив выходного напряжения

;

dt

шаг между точками разбиения

t1

t1

константа времени

U

U

константа входного сигнала

U1

U1

константа выходногосигнала

U2

U2

константа выходногосигнала

U3

U3

константа выходногосигнала

d

d

достигнутая погрешность

;

p

вычисленный параметр

Список основных функций

1. void time (int n, float *t) — функции формирования массива времени

2. void vhod (int n, float *t, float *Uin) — функции формирования массива входного напряжения

3. void vihod (int n, float *t, float *Uin, float *Uout) — функции формирования массива выходного напряжения

4. void tabl (int n, float *t, float *Uin, float *Uout) — функция вывода таблицы

5. float par (int n, float *t, float *Uout) — функция расчета параметра

6. float spend (int n, float *t, float *Uin, float *Uout) — функция расчёта заданной точности

7. char vivod_titylnik (char *str, int n) — функция вывода титульного листа

8. void zapis_time (float n, float *t) — запись в файл массива времени

9. void zapis_mas_Uin (float n, float *t, float *Uin) — запись в файл массива входного напряжения

10. void zapis_mas_Uout (float n, float *t, float *Uin, float *Uout) — запись в файл массива выходного напряжения Блок — схема программы Блок — схема U входа Текст программы

#include

#include

#include

#define N 1000

FILE *fp1;

FILE *fp2;

FILE *fp3;

FILE *fp4;

char vivod_titylnik (char*str, int n);

void time (int n, float *t);

void vhod (int n, float *t, float *Uin);

void vihod (int n, float *Uin, float *Uout);

void tabl (int n, float *t, float *Uin, float *Uout);

float par (int n, float *t, float *Uout);

float spend (int n, float *t, float *Uin, float *Uout);

void zapis_time (float n, float *t);

void zapis_mas_Uin (float n, float *t, float *Uin);

void zapis_mas_Uout (float n, float *t, float *Uin, float *Uout);

int main () {

int n;

char cc;

char str[80];

vivod_titylnik (str, 80);

printf («nn-chislo tochek n»);

printf («Vvedite n n»);

scanf («%d%c», &n, &cc);

float t[N], Uin[N], Uout[N];

int end = 1, command;

while (end) {

printf («nMenu n»);

printf («1-titylniy list n»);

printf («2-tablica n»);

printf («3-parametr n»);

printf («4-zapis_v_fail n»);

printf («5-tochnost n»);

printf («0-vihod iz programmi n»);

printf («Vvedite komandy n»);

scanf («%d», &command);

switch (command) {

case 1:

printf («TITYLNIY LIST n»);

vivod_titylnik (str, 81);

break;

case 2:

printf («nTABLISA n»);

time (n, t);

vhod (n, t, Uin);

vihod (n, Uin, Uout);

tabl (n, t, Uin, Uout);

break;

case 3:

printf («nPARAMETR n»);

time (n, t);

vhod (n, t, Uin);

vihod (n, Uin, Uout);

float p;

p = par (n, t, Uout);

printf («p=%5.2f n», p);

break;

case 4:

time (n, t);

vhod (n, t, Uin);

vihod (n, Uin, Uout);

zapis_time (n, t);

zapis_mas_Uin (n, t, Uin);

zapis_mas_Uout (n, t, Uin, Uout);

printf («zapis'_v_fail_sovershena n»);

break;

case 5:

printf («nTOCHNOST' n»);

spend (n, t, Uin, Uout);

break;

case 0:

end = 0;

}

}

return 0;

}

void time (int n, float *t) {

int i;

float dt, tn = 0, tk = 2*3.14;

dt = (tk — tn) / (n — 1);

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

t[i] = tn + i*dt;

}

}

void vhod (int n, float *t, float *Uin) {

int i, U=6;

for (i = 0; i < N; i++) {

if ((t[i] >= 0) && (t[i] < 3.14 / 2))

Uin[i] = U * (1 — cos (t[i]));

else if (t[i] < 3.14)

Uin[i] = U * (1 + cos (t[i]));

else if (t[i] < (3 * 3.14 / 2))

Uin[i] = U * (1 — cos (3.14 — t[i]));

else

Uin[i] = U * (1 + cos (3.14 — t[i]));

}

}

void vihod (int n, float *Uin, float *Uout) {

float U1 = 3, U2 = 15;

int i;

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

if (Uin[i] < U1)

Uout[i] = U2 / U1 * Uin[i];

else

Uout[i] = U2;

}

}

void tabl (int n, float *t, float *Uin, float *Uout) {

int i;

printf («%3s %6s %5s n», «t», «Uin», «Uout»);

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

printf («%5.2f %5.2f %5.2f n», *(t + i), *(Uin + i), *(Uout + i));

}

}

float par (int n, float *t, float *Uout) {

int Um =10;

float p, t1 = 0, t2;

for (int i = 0; i < (n-1); i++) {

if ((Uout[i] < Um) && (Uout[i + 1] > Um)) t1 = t[i];

if ((Uout[i] > Um) && (Uout[i + 1] < Um)) t2 = t[i];

else p = 2*(t2 — t1);

}

return p;

}

float spend (int n, float *t, float *Uin, float *Uout) {

float p1, p2, d;

time (n, t);

vhod (n, t, Uin);

vihod (n, Uin, Uout);

p1 = par (n, t, Uout);

for (;;) {

n = 2 * n;

if (n > N) {

printf («Neverno n>N n»);

break;

} else {

time (n, t);

vhod (n, t, Uin);

vihod (n, Uin, Uout);

p2 = par (n, t, Uout);

d = fabs ((p2 — p1) / p2);

}

if (d < 0.01) {

printf («nn-kollichestvo tochek, neobhodimih dlya vichisleniy n»);

printf («p2-parametr s tochnostuy n»);

printf («d-dostignytaya pogreshnost' n»);

printf («n=%d p2=%5.2f d=%f n», n, p2, d);

break;

} else p1 = p2;

}

}

void zapis_time (float n, float *t) {

int i;

time (n, t);

fp1 = fopen («t[i]. txt», «w»);

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

fprintf (fp1, «n %f», t[i]);

fclose (fp1);

}

void zapis_mas_Uin (float n, float *t, float *Uin) {

int i;

time (n, t);

vhod (n, t, Uin);

fp2 = fopen («Uin[i]. txt», «w»);

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

fprintf (fp2, «n %f», Uin[i]);

fclose (fp2);

}

void zapis_mas_Uout (float n, float *t, float *Uin, float *Uout) {

int i;

time (n, t);

vhod (n, t, Uin);

vihod (n, Uin, Uout);

fp3 = fopen («Uout[i]. txt», «w»);

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

fprintf (fp3, «n %f», Uout[i]);

fclose (fp3);

}

char vivod_titylnik (char *str, int n) {

fp4 = fopen («titulnik.txt», «r»);

if (fp4 == NULL) {

printf («n file is not open n»);

return 0;

}

while (fgets (str, n, fp4) ≠ NULL) {

puts (str);

}

fclose (fp4);

return 0;

}

Результат вычисления параметра с заданной точностью Параметр, который необходимо найти, задаётся следующими условиями.

Найти период времени когда Uвх>=10 B на временном интервале от 0 с до 2? с.

Заданная точность вычисления параметра d=0,01.

Для получения необходимого значения параметра понадобилось 1000 точек расчёта, при этом значение данного параметра 2,64 с.

Заключение

По заданным начальным данным были получены следующие результаты:

• Расчет для n — равностоящих точек значений времени t, напряжение входного сигнала Uвх (t) и напряжения выходного сигнала Uвых (t).

• Расчет параметров для Uвых (t)

• Расчет точности.

• Сделана запись в файл.

• Построены графики зависимости напряжения входного и выходного сигнала в Maxima и Neoffice Cals

• Сделан контрольный расчёт в Maxima. Результаты вычислений в NetBeans сошлись с результатами в Maxima

Показать весь текст
Заполнить форму текущей работой