Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364139
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62791)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21319)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21692)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8692)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3462)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20644)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Курсовая работа: Линейные электрические цепи 2

Название: Линейные электрические цепи 2
Раздел: Рефераты по информатике
Тип: курсовая работа Добавлен 13:04:13 07 декабря 2010 Похожие работы
Просмотров: 10 Комментариев: 21 Оценило: 2 человек Средний балл: 5 Оценка: неизвестно     Скачать

Курсовая работа

"Линейные электрические цепи"


Введение

Для решения поставленной задач используется язык С++. На сегодняшний день он является одним из самых распространенных языков программирования. Его преимуществами являются гибкость, переносимость, универсальность. На этом языке написаны самые распространенные на сегодняшний день операционные системы, такие как Windows и Linux.


1. Постановка задачи

В схеме электрической цепи, приведенной на рисунке 1, определить токи, в ветвях пользуясь законами Кирхгофа. Параметры элементов цепи: R1 =50 Ом, R2 =20 Ом, R3 =50 Ом, R4 =80 Ом, E1 =50 В, E2 =400 В.

В программе не обходимо предусмотреть, откуда будут считываться исходные данные – с диалогового окна или из текстового файла. Результаты вычислений сохранить в текстовом файле result . txt .

Средствами математического пакета или электронных таблиц проверить результаты работы программы, для решения системы уравнений использовать метод Крамера или метод обратной матрицы, также можно использовать функции математического пакета.

Написать программу решения задачи, для решения системы линейных алгебраических уравнений воспользоваться методом Гаусса.

I 1 I 2

R 1 1 R 2

I 3

E 1 E 2

R 3


2 R 4

2. Математическая модель поставленной задачи

Выбираем произвольно положительные направления искомых токов ветвей и обозначаем их на схеме. Составляем уравнения по первому закону Кирхгофа для узла 1. Выбрав направление обходов контуров, составляем уравнения по второму закону Кирхгофа. Получаем систему из трех уравнений:


I1 + I2 – I3 = 0

I 1 R 1 + I 3 R 3 = E 1

I 2 ( R 2 + R 4 ) – I 3 R 3 = – E 2

Преобразуем систему уравнений в матрицу коэффициентов системы – А, столбец ее свободных членов в вектор – b, столбец из неизвестных (искомый вектор) в вектор – х. Тогда система кратко может быть записана в виде матричного уравнения Ах=b. Решим эту систему линейных уравнений с помощью алгоритма последовательного исключения неизвестных – метод Гаусса. Используя этот метод мы преобразовываем не систему уравнений, а расширенную матрицу системы, которую получаем при добавлении к основной матрице А столбца свободных членов b. Прямым ходом метода Гаусса мы приведем расширенную матрицу к треугольному виду, т.е. все элементы матрицы ниже главной диагонали будут равны нулю. Если на главной диагонали встречается элемент равный нулю, заменяем его максимальным по модулю элементом в этом столбце, меняя строки. В результате выполнения прямого хода метода Гаусса система уравнений будет иметь вид:

а00 х001 х102 х2 + … +а0 n -1 хn -1 =b0 ;

a11 х112 х2 + … +а1 n -1 xn -1 =b1 ;

a22 x2 + … +a2n-1 xn-1 =b2 ;

an-1 xn-1 =bn-1.

И эту систему решим обратным ходом метода Гаусса.


3. Блок-схема алгоритма

Рис. 3.1. Блок-сема программы

4. Описание алгоритма

На рис. 3.1 представлена блок-схема программы: блок 1 – считываем из файла данные – R1, R2, R3, R4, E1, E2; блок 2 – формируем матрицу А и вектор свободных членов В; блок 3 – вызов функции SLAU (метод Гаусса); блок 3 – вывод решений – массива х, т.е. значение искомых токов – I.

На рис. 3.2 представлена блок-схема метода Гаусса: блоки 1–6 – ввод данных, n – размерность системы уравнений, система задается в виде матрицы А и вектора свободных коэффициентов b; блоки 6–17 – прямой ход метода Гаусса; блоки 22–26 – обратный ход метода Гаусса;

блоки 18–19 – если результат проверки этих условий положительный, то выводится сообщение, что система имеет бесконечное множество решений (блок 21); если условие 19 выполняется, а 20 – нет, то выводится сообщение – нет решений (блок 21); блоки 22–25 – решения системы уравнений, представлены вектором х; блок 26 – вывод на печать, в случае невыполнения условия.

5. Характеристика данных и их условные обозначения

№ п\п

Наименование данных

Обозначение

в блок-схеме

Обозначение

в программе

Тип переменных

1

Сопротивление

цепи R

R

Ri

double *R

2

Матрица А

Aij

Aij

double **A

3

Вектор свободных членов b

Bi

Bi

double *B

4

Э.Д.С. Е

Е

Ei

double *E

5

Сила тока I

x

x

double *x

6. Текст программы

#include «stdafx.h»

#include <iostream.h>

#include <fstream.h>

#include <math.h>

#include <iomanip.h>

#include <stdlib.h>

#include <malloc.h>

int SLAU (double **matrica_a, int n, double *massiv_b, double *x)

// Функция SLAU возвращает значение типа int: 0, если решение найдено, // -1 если система имеет бесконечное множество решений, -2 если // система не имеет решений. Параметры ф-ии: n-размерность матрицы, //matrica_a – матрица коэффициентов СЛАУ, massiv_b – вектор правых // частей, х – решение СЛАУ.

{

int i, j, k, r;

double c, M, max, s, **a, *b;

// Выделение памяти для а и b.

a=new double *[n];

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

a[i]=new double[n];

b=new double [n];

// В а записываем копию матрицы, в b копию вектора правых частей.

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

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

a[i] [j]=matrica_a[i] [j];

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

b[i]=massiv_b[i];

// Прямой ход метода Гаусса: приводим матрицу к диагональному виду.

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

{

// Поиск максимального по модулю элементов в k-м столбце.

max=fabs (a[k] [k]);

r=k;

for (i=k+1; i<n; i++)

if (fabs (a[i] [k])>max)

{

max=fabs (a[i] [k]);

r=i;

}

// Меняем строки местами k-ю и r-ю.

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

{

c=a[k] [j];

a[k] [j]=a[r] [j];

a[r] [j]=c;

}

c=b[k];

b[k]=b[r];

b[r]=c;

// Приведение матрицы к диагональному виду.

for (i=k+1; i<n; i++)

{

for (M=a[i] [k]/a[k] [k], j=k; j<n; j++)

a[i] [j] – =M*a[k] [j];

b[i] – =M*b[k];

}

}

// Обратный ход метода Гаусса.

if (a [n-1] [n-1]==0)

if (b[n-1]==0)

return -1;

else return -2;

else

{

for (i=n-1; i>=0; i–)

{

for (s=0, j=i+1; j<n; j++)

s+=a[i] [j]*x[j];

x[i]=(b[i] – s)/a[i] [i];

}

return 0;

}

// Освобождение памяти, выделенной под копии матрицы // коэффициентов, вектора правых частей.

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

delete [] a[i];

delete [] a;

delete [] b;

}

int main()

{

int result, i, N, K, L;

double **A, *B, *x, *R, *E;

ifstream f;

// Открытие текстового файла abc.txt в режиме чтения

f.open («A:\\Kurs\\abc.txt», ios:in);

N=3;

K=4;

L=2;

// Выделение памяти для матрицы правых частей и вектора свободных // членов.

A=new double *[N];

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

A[i]=new double[N];

B=new double [N];

x=new double [N];

R=new double [K];

E=new double [L];

for (i=1; i<=K; i++)

// Чтение значении R.

f>>R[i];

// Формирование матрицы правых частей.

A[0] [0]=1;

A[0] [1]=1;

A[0] [2]=-1;

A[1] [0]=R[1];

A[1] [1]=0;

A[1] [2]=R[3];

A[2] [0]=0;

A[2] [1]=-R[2] – R[4];

A[2] [2]=-R[3];

for (i=1; i<=L; i++)

// Чтение значений Е.

f>>E[i];

// Формирование вектора свободных членов.

B[0]=0;

B[1]=E[1];

B[2]=-E[2];

// Вызов функции решения СЛАУ методом Гаусса. Если result=0, то // система имеет единственное решение, result= -1, то система имеет // бесконечное множество решений, result= -2, то система не имеет // решений.

result=SLAU (A, N, B, x);

if (result==0)

{

ofstream ff;

// Открытие текстового файла rezult.txt в режиме записи.

ff.open («A:\\Kurs\\rezult.txt», ios:out);

ff<< «Massiv X\n»;

// Вывод массива решения.

cout<< «Massiv X\n»;

// Запись результатов решения в текстового файла rezult.txt.

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

{

cout<<x[i]<<»\t»;

ff<<x[i]<<»\t»;

}

// Закрытие файла.

ff.close();

}

else if (result==-1)

cout<< «Great number of Solution»;

else if (result==-2)

cout<< «No solution»;

// Освобождение памяти, выделенной под матрицы коэффициентов, // вектора правых частей.

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

delete [] A[i];

delete [] A;

delete [] B;

delete [] x;

return 0;

}

7. Контрольный пример

Проведем контрольный расчет с помощью электронных таблиц Excel.

А

1

1

-1

B

0

50

0

50

50

0

-100

-50

-400

Aобр

0,4

0,012

0,004

Х

-1

0,2

-0,004

-0,008

3

-0,4

0,008

-0,004

2

8. Анализ результатов

Поставленная задача определения величин и направлений токов в ветвях электрической цепи решена с использованием метода Гаусса. В результате работы разработанной программы мы получили значения искомого вектора Х: -1, 3, 2. За вектор Х мы приняли значения токов в ветвях, т.е. I1 = – 1, I2 = 3, I3 = 2. Ток I1 имеет отрицательное значение т. к. направлен противоположно токам I2 , I3 .

Работу программы мы проверили в электронных таблицах Excel, используя метод обратной матрицы. Так как результаты решения задачи с помощью Excel и С++ совпадают, делаем вывод о том, что созданная нами программа работает с достаточно малыми погрешностями исчислений. Неточности практически полностью отсутствуют благодаря применению точных методов решения.


Заключение

В данной курсовой работе для решения электротехнической задачи были применены и закреплены теоретические знания и практические навыки, полученные при изучении курса «Введение в информатику».

Основным методом решении задачи был метод Гаусса. Проверка работы программы была произведена в электронных таблицах Excel. Результаты полученные при программировании задачи на языке С++ совпадают с результатами полученными при решении задачи в электронных таблицах, значит задача выполнена полностью.


Список используемой литературы

1. Алексеев Е.Р. MS Visual C++ и Turbo C++ Explorer (под общей редакцией Чесноковой О.В.) / Алексеев Е.Р. – М.: НТ Пресс, 2007. – 352 с.: ил. – (Полная версия).

2. Бронштейн И.Н., Семендяев К.А. Справочник по математике для инженеров и учащихся втузов. – 13-е изд., исправленное. – М.: Наука, Гл. ред. физ.-мат. лит., 1986. – 544 с.

3. Пасечник Н.Д. Элементарная электротехника. Киев – 1963. – 234 с.

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Хватит париться. На сайте FAST-REFERAT.RU вам сделают любой реферат, курсовую или дипломную. Сам пользуюсь, и вам советую!
Никита11:05:22 03 ноября 2021
.
.11:05:20 03 ноября 2021
.
.11:05:19 03 ноября 2021
.
.11:05:18 03 ноября 2021
.
.11:05:16 03 ноября 2021

Смотреть все комментарии (21)
Работы, похожие на Курсовая работа: Линейные электрические цепи 2

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(294399)
Комментарии (4230)
Copyright © 2005 - 2024 BestReferat.ru / реклама на сайте