Расчет на ЭВМ характеристик выходных сигналов электрический цепей
Функции формирования массива времени. Формирование массива входного напряжения, массива выходного напряжения. Функция вывода таблицы, расчета заданной точности, вывода титульного листа. Запись в файл массива времени. Блок–схема и текст программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.04.2012 |
Размер файла | 155,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Санкт - Петербургский Государственный Университет Телекоммуникаций
им. проф. М. А. Бонч-Бруевича
Курсовая работа по дисциплине
«Программирование на языке высшего уровня»
Расчет на ЭВМ характеристик выходных сигналов электрический цепей
выполнила Севастьянова Елена,
студентка группы Р-01
Санкт-Петербург
2011
Оглавление
Постановка задачи
Таблица идентификаторов
Список основных функций
Блок - схема программы
Блок - схема U входа
Текст программы
Расчёт на Maxima
Результат вычисление параметра с заданной точностью
Заключение
массив файл программа
Постановка задачи
Данная курсовая работа посвящена решению задач машинного анализа электрических цепей.
В данной работе сигнал на входе электрической цепи Uвх и сигнал на выходе электрической цепи Uвых заданы функцией, графиком и условиями. Так же дан рабочий набор, с помощью которого необходимо для заданной электрической цепи вывести формулы зависимости входного сигнала Uвхот времени и выходного сигнала Uвых от времени. Затем нужно рассчитать значение параметров Uвх и Uвых. Вычислить точность, провести запись в файл и построить графики.
Создание входного сигнала:
Входной сигнал
Uвх(t)=
Рабочий набор
U = 6B
tn = 0 сек
tк = 2? сек
Передаточная характеристика.
Рабочий набор
U1 = 3 В
U2 = 15 В
Передаточная характеристика
Uвых (t)
Таблица идентификаторов
Обозначение в задаче |
идентификатор |
назначение |
|
tн |
tn |
начальный момент времени наблюдения входного напряжения. |
|
tк |
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 <stdio.h>
#include <stdlib.h>
#include <math.h>
#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
Размещено на Allbest.ru
Подобные документы
Понятие двумерного массива целых чисел. Создание динамического массива из элементов, расположенных в четырех столбах данного массива и имеющих нечетное значение. Сохранение результатов в файл и выведение их на экран. Использование ввода с файла.
курсовая работа [44,0 K], добавлен 09.11.2014Процедура формирования массивов отсчетов входного и выходного сигналов и времени; вычисление величины заданной характеристики выходного сигнала: функция нахождения длительности импульса; организация текстовых файлов; построение графиков в системе MathCad.
курсовая работа [75,9 K], добавлен 28.09.2012Запись в массив листа Excel c именем "Эксперимент". Среднее арифметическое значение элементов массива. Вывод диалогового окна. Фрагмент программы, организующий считывание исходного массива в программу для обработки. Адрес ячейки электронной таблицы.
контрольная работа [1,1 M], добавлен 16.08.2011Составление математической модели для определения местоположения точки относительно многоугольника. Оформление процедуры расчета расстояния, выбора точек из массива, сортировки массива и вывода результатов в программе в форме функций пользователя.
курсовая работа [16,6 K], добавлен 06.08.2013Изучение определения, описания и вызова функций, указателей и ссылок на них. Написание функции умножения произвольного столбца двумерного массива на const. Умножение 2 столбцов массива на константы. Составление блок-схемы алгоритма и текста программы.
лабораторная работа [182,3 K], добавлен 09.01.2012Общая характеристика организации массива в виде двоичного дерева. Особенности линейного и двоичного поиска заданного элемента массива. Методика упорядочения массива методом сортировки деревом. Инструкции и текст программы для нечисленной обработки данных.
курсовая работа [242,3 K], добавлен 12.11.2010Выведение значения элементов массива, которые удовлетворяют неравенству. Подсчет количества отрицательных элементов массива. Изменение исходного массива. Тестирование программы. Проверка её работоспособности. Реакция программы на сообщение об ошибке.
лабораторная работа [1,3 M], добавлен 23.11.2014Подготовка презентации по теме "Excel – фильтрация данных". Сличительная ведомость по материальным ценностям, форма разработки документа. Построение сводной таблицы расчета суммарного и среднего значений поля. Характеристика формирования массива.
курсовая работа [2,6 M], добавлен 23.01.2011Разработка и реализация типовых алгоритмов обработки одномерных массивов на языке Delphi. Максимальный и минимальный элемент массива. Значение и расположение элементов массива. Элементы массива, находящиеся перед максимальным или минимальным элементом.
лабораторная работа [12,8 K], добавлен 02.12.2014Одномерные числовые массивы, образование элементами целочисленного массива невозрастающей последовательности. Программное нахождение суммы элементов каждой возможной строки матрицы и формирование массива из найденных сумм, вывод массива-результата.
лабораторная работа [12,8 K], добавлен 09.01.2011