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

Функции формирования массива времени. Формирование массива входного напряжения, массива выходного напряжения. Функция вывода таблицы, расчета заданной точности, вывода титульного листа. Запись в файл массива времени. Блок–схема и текст программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 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)

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

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

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

назначение

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 <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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.