Расчет на ЭВМ характеристик выходных сигналов электрический цепей
Санкт
- Петербургский Государственный Университет Телекоммуникаций
им.
проф. М. А. Бонч-Бруевича
Курсовая
работа по дисциплине
«Программирование
на языке высшего уровня»
Расчет
на ЭВМ характеристик выходных сигналов электрический цепей
выполнила Севастьянова Елена,
студентка группы Р-01
Санкт-Петербург
Оглавление
Постановка задачи
Таблица идентификаторов
Список основных функций
Блок - схема программы
Блок - схема U
входа
Текст программы
Расчёт на Maxima
Результат вычисление параметра с
заданной точностью
Заключение
массив файл программа
Постановка задачи
Данная курсовая работа посвящена решению задач
машинного анализа электрических цепей.
В данной работе сигнал на входе электрической
цепи Uвх и сигнал на
выходе электрической цепи Uвых
заданы функцией, графиком и условиями. Так же дан рабочий набор, с помощью
которого необходимо для заданной электрической цепи вывести формулы зависимости
входного сигнала Uвхот времени
и выходного сигнала Uвых от
времени. Затем нужно рассчитать значение параметров Uвх
и Uвых. Вычислить
точность, провести запись в файл и построить графики.
Создание входного сигнала:
Входной сигнал
Uвх(t)=
Рабочий набор
U = 6B
tn = 0 сек
tк = 2π сек
Передаточная характеристика.
Рабочий набор
U1 = 3 В
U2
= 15 В
Передаточная характеристика
вых (t)
Таблица идентификаторов
Обозначение
в задаче
|
идентификатор
|
назначение
|
tн
|
tn
|
начальный
момент времени наблюдения входного напряжения.
|
tк
|
tk
|
конечный
момент времени наблюдения входного напряжения
|
N
|
N
|
количество
точек разбиения
|
t
|
t[n]
|
массив времени
|
Uвх
|
Uin[n]
|
массив входного напряжения
|
Uвых
|
Uout[n]
|
массив выходного напряжения
|
-
|
dt
|
шаг между точками разбиения
|
t1
|
t1
|
константа
времени
|
U
|
U
|
константа
входного сигнала
|
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
<stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 1000*fp1;*fp2;*fp3;*fp4;vivod_titylnik(char*str,
int n);time(int n, float *t);vhod(int n, float *t, float *Uin);vihod(int n,
float *Uin, float *Uout);tabl(int n, float *t, float *Uin, float *Uout);par(int
n, float *t, float *Uout);spend(int n, float *t, float *Uin, float *Uout);zapis_time(float
n, float *t);zapis_mas_Uin(float n, float *t, float *Uin);zapis_mas_Uout(float
n, float *t, float *Uin, float *Uout);main() {n;cc;str[80];_titylnik(str,
80);("\nn-chislo tochek \n");("Vvedite n \n");("%d%c",
&n, &cc);t[N], Uin[N], Uout[N];end = 1, command;(end) {("\nMenu
\n");("1-titylniy list \n");("2-tablica
\n");("3-parametr \n");("4-zapis_v_fail
\n");("5-tochnost \n");("0-vihod iz programmi
\n");("Vvedite komandy \n");("%d",
&command);(command) {1:("TITYLNIY LIST \n");_titylnik(str,
81);;2:("\nTABLISA \n");(n, t);(n, t, Uin);(n, Uin, Uout);(n, t, Uin,
Uout);;3:("\nPARAMETR \n");(n, t);(n, t, Uin);(n, Uin, Uout);p;=
par(n, t, Uout);("p=%5.2f \n", p);;4:(n, t);(n, t, Uin);(n, Uin,
Uout);_time(n, t);_mas_Uin(n, t, Uin);_mas_Uout(n, t, Uin,
Uout);("zapis'_v_fail_sovershena \n");;5:("\nTOCHNOST'
\n");(n, t, Uin, Uout);;0:= 0;
}
}0;
}time(int n, float *t) {i;dt, tn =
0, tk = 2*3.14;= (tk - tn) / (n - 1);(i = 0; i < n; i++) {[i] = tn + i*dt;
}
}vhod(int n, float *t, float *Uin)
{i, U=6;(i = 0; i < N; i++) {((t[i] >= 0) && (t[i] < 3.14 /
2))[i] = U * (1 - cos(t[i]));if (t[i] < 3.14)[i] = U * (1 + cos(t[i]));if
(t[i] < (3 * 3.14 / 2))[i] = U * (1 - cos(3.14 - t[i]));[i] = U * (1 +
cos(3.14 - t[i]));
}
}vihod(int n, float *Uin, float
*Uout) {U1 = 3, U2 = 15;i;(i = 0; i < n; i++) {(Uin[i] < U1)[i] = U2 / U1
* Uin[i];[i] = U2;
}
}tabl(int n, float *t, float *Uin,
float *Uout) {i;("%3s %6s %5s \n", "t", "Uin",
"Uout");(i = 0; i < n; i++) {("%5.2f %5.2f %5.2f \n",
*(t + i), *(Uin + i), *(Uout + i));
}
}par(int n, float *t, float *Uout)
{Um =10;p, t1 = 0,t2;(int i = 0; i < (n-1); i++) {((Uout[i] < Um)
&& (Uout[i + 1] > Um)) t1 = t[i];((Uout[i] > Um) &&
(Uout[i + 1] < Um)) t2 = t[i];p = 2*(t2 - t1);
}p;
}spend(int n, float *t, float *Uin,
float *Uout) {p1, p2, d;(n, t);(n, t, Uin);(n, Uin, Uout);= par(n, t,
Uout);(;;) {= 2 * n;(n > N) {("Neverno n>N \n");;
} else {(n, t);(n, t, Uin);(n, Uin,
Uout);= par(n, t, Uout);= fabs((p2 - p1) / p2);
}(d < 0.01)
{("\nn-kollichestvo tochek, neobhodimih dlya vichisleniy
\n");("p2-parametr s tochnostuy \n");("d-dostignytaya
pogreshnost' \n");("n=%d p2=%5.2f d=%f \n", n, p2, d);;
} else p1 = p2;
}
}zapis_time(float n, float *t)
{i;(n, t);= fopen("t[i].txt", "w");(i = 0; i < n;
i++)(fp1, "\n %f", t[i]);(fp1);
}zapis_mas_Uin(float n, float *t,
float *Uin) {i;(n, t);(n, t, Uin);= fopen("Uin[i].txt",
"w");(i = 0; i < n; i++)(fp2, "\n %f", Uin[i]);(fp2);
}zapis_mas_Uout(float n, float *t,
float *Uin, float *Uout) {i;(n, t);(n, t, Uin);(n, Uin, Uout);=
fopen("Uout[i].txt", "w");(i = 0; i < n; i++)(fp3,
"\n %f", Uout[i]);(fp3);
}vivod_titylnik(char *str, int n) {=
fopen("titulnik.txt", "r");(fp4 == NULL) {("\n file is
not open \n");0;
}(fgets(str, n, fp4) != NULL)
{(str);
}(fp4);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