Курсовая

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

Работа добавлена на сайт bukvasha.net: 2015-06-30

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.12.2024


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

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

Введение

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

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

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

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

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

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

I1 I2

R1 1 R2

I3

E1 E2

R3


2 R4

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

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

I1 + I2I3 = 0

I1R1 + I3R3 = E1

I2 (R2 + R4) – I3R3 = – E2

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

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

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

a22x2+ +a2n-1xn-1=b2;

an-1xn-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 с.


1. Реферат Инновации в социокультурном бизнесе и туризме
2. Реферат Модель экономического роста, типы развития и их анализ
3. Реферат на тему Observer Review Martin Sloane By Michael Redhill
4. Реферат Австралопитеки 2
5. Доклад на тему Значение промышленного переворота
6. Реферат на тему Genetic Engineering Essay Research Paper Genetic EngineeringWithin
7. Реферат на тему Цивилистика и человеческая личность
8. Реферат Организация и осуществление деятельности по ведению государственного кадастра недвижимости
9. Реферат на тему Korean Vs Us Management Essay Research Paper
10. Кодекс и Законы Налог на добавленную стоимость 10