Определение токов в ветвях электрической цепи c помощью ЭВМ и системы линейных уравнений
Описание математической модели определения тока в электрической цепи с помощью решения системы алгебраических уравнений методом Гаусса. Описание и разработка блок-схемы программы. Ввод данных задачи, составление программы и анализ результатов решения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 15.08.2012 |
Размер файла | 231,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
3
Контрольная работа
Определение токов в ветвях электрической цепи c помощью ЭВМ и системы линейных уравнений
Аннотация
Введение
1. Постановка задачи
2. Описание математической модели решения задачи
3. Блок-схема алгоритма
4. Описание алгоритма
5. Характеристика данных и их условие обозначения
6. Текст программы
7. Анализ результатов
Заключение
Аннотация
Цель - определение токов в ветвях электрической цепи. Ток в цепи не везде одинаковый, и что бы рассчитать его на всех участках, основываясь законами тока и составными цепи.
Решение построено на основе линейных электрических уравнений. Пользуемся методом моделирования. Это удобный метод.
У нас есть система линейных алгебраических уравнений, которую нам надо решить, точнее найти её корни. Воспользуемся методом Гаусса для решения СЛАУ. Ещё есть методы Крамера и обратной матрицы, но нам более приемлем метод Гаусса. Наши корни - это потенциалы узлов в цепи, с помощью которых мы можем рассчитать ток в цепи во всех ветвях.
уравнение программа ток электрическая цепь
Введение
Надо найти силу тока на всех ветвях в электрической цепи методом узловых напряжений. В практических задачах встречаются цепи, имеющие всего две узловые точки. Между узловыми точками может быть включено произвольное количество ветвей. Расчет таких цепей значительно упрощается, если пользоваться методом узлового напряжения.
Задача сводится к математической модели, которая решается системой линейных алгебраических уравнений и которая решается методом Гаусса.
Метод Гаусса - классический метод решения системы линейных алгебраических уравнений (СЛАУ). Это метод последовательного исключения переменных, когда с помощью элементарных преобразований система уравнений приводится к равносильной системе ступенчатого (или треугольного) вида, из которого последовательно, начиная с последних (по номеру) переменных, находятся все остальные переменные.
Система m линейных уравнений с n неизвестными в линейной алгебре -- это система уравнений вида:
Где , , …, -- неизвестные, которые надо определить. , , …, -- коэффициенты системы -- и , , … -- свободные члены -- предполагаются известными. Индексы коэффициентов () системы обозначают номера уравнения i и неизвестного.
Задача решается с применением ПЭВМ, потому что результаты обработки информации на бумаге, куда менее удобны для пользователя, чем
отображение обработанной информации на экране дисплея.
1. Постановка задачи
Определить токи во всех ветвях электрической цепи (рис.1.1) методом узловых напряжений.
R1=75Ом, R2=76Ом, R3=77Ом, R4=78Ом, R5=79Ом, R6=80Ом, E2=95В, E4=40В, Ik1=0.47A.
Рис. 1.1
В программе необходимо предусмотреть, откуда будет считываться исходные данный - с диалогового окна или из текстового файла. Результаты вычислений сохранить в текстовом файле result.txt. Средствами математического пакета или электронных таблиц проверить результаты работы программы. Найти значения токов во всех ветвях электрической цепи (см. рис. 1.1), проверить баланс мощностей. Для решения системы линейных уравнений воспользоваться методом Гаусса.
2. Описание математической модели решения задачи
Приравниваем потенциал узла d нулю и составим уравнения для потенциалов остальных узлов.
Решив систему одним из известных методов получим значения потенциалов узлов. После чего найдём значения токов в ветвях цепи:
Проверим баланс мощностей
.
Мощность источников
Мощность нагрузок
3. Блок-схема алгоритма
Рис. 3.1. Блок-схема алгоритма функции, решения методом Гаусса
Рис. 3.2. Блок-схема алгоритма решения задания
4. Описание алгоритма
Описание алгоритма функции, решающей методом Гаусса:
1-19 - функция метода Гаусса.
3-14 - прямой ход метода Гаусса.
4-10 - перестановка строк расширенной матрицы, в результате которого избавляемся нулевых элементов на главной диагонали.
11-14 - приведения расширенной матрицы к треугольному виду.
15-19 - вывод случаев, при которых система имеет бесконечное количество решений и когда система решений не имеет.
Описание алгоритма основной функции:
1-36 - весь алгоритм решения задания.
2-9 - последовательный ввод данных.
10 - вызов функции метода Гаусса.
11-16 - проверка на случаи, когда система имеет бесконечное количество решений и когда система решений не имеет.
17-21 - обратный ход матрицы, которым вычисляются сами решения системы линейных алгебраических уравнений.
22-23 - ввод массива токов в ветвях цепи.
24-27 - определение мощностей источников и нагрузки из полученных данных.
28-30 - вывод значений токов в ветвях цепи на экран и в файл.
31-32 - вывод значений мощностей на экран и в файл.
33-35 - проверка на баланс мощностей и вывод ответа.
5. Характеристика данных и их условие обозначения
№ п\п |
Наименование данных |
Обозначение в блок-схеме |
Обозначение в программе |
Тип переменных |
|
01 |
Коэффициенты системы |
a |
a |
double** |
|
02 |
Свободные члены |
b |
b |
double* |
|
03 |
Потенциалы |
x |
x |
double* |
|
04 |
Первое сопротивление |
R1 |
R |
double* |
|
05 |
Второе сопротивление |
R2 |
double* |
||
06 |
Третье сопротивление |
R3 |
double* |
||
07 |
Четвёртое сопротивление |
R4 |
double* |
||
08 |
Пятое сопротивление |
R5 |
double* |
||
09 |
Шестое сопротивление |
R6 |
double* |
||
10 |
Первый ток |
I1 |
I |
double* |
|
11 |
Второй ток |
I2 |
double* |
||
12 |
Третий ток |
I3 |
double* |
||
13 |
Четвёртый ток |
I4 |
double* |
||
14 |
Пятый ток |
I5 |
double* |
||
15 |
Шестой ток |
I6 |
double* |
||
16 |
Напряжение |
E2 |
E2 |
double |
|
17 |
напряжение |
E4 |
E4 |
double |
|
18 |
Ток |
Ik1 |
Ik1 |
double |
|
19 |
Мощность источников |
Pnagr |
Pnagr |
double |
|
20 |
Мощность нагрузок |
Pist |
Pist |
double |
|
21 |
Сумма |
s |
S |
double |
|
22 |
Переменная |
c |
c |
double |
|
23 |
Коэффициент |
M |
M |
double |
|
24 |
Максимальный элемент |
max |
max |
double |
|
25 |
Количество элементов |
n |
N |
int |
|
26 |
Количество элементов |
m |
M |
int |
|
27 |
Входной поток |
F |
F |
Поток |
|
28 |
Выходной поток |
f |
f |
Поток |
6. Текст программы
Текст программы на Microsoft Visual C++ 6.0:
#include "stdafx.h"
#include <iostream.h>
#include <math.h>
#include <fstream.h>
#include <iomanip.h>
int SLAU(double **matrica_a,int n,double *massiv_b,double *x)
{
int i,j,k,r;
double c,M,max,s, **a, *b;
a=new double *[n];
for(i=0;i<n;i++)
a[i]=new double[n];
b=new double [n];
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++)
{
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;
}
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()
{
ifstream F;
ofstream f;
int result,i,N=3,M=5,p;
double **a,*b,*x,*R,E2,E4,Ik1,*I,S,Pist,Pnagr;
a=new double *[N];
I=new double [M];
for(i=0;i<N;i++)
a[i]=new double[N];
b=new double [N];
x=new double [N];
R=new double [M];
cout<<"VbIbirite metod vvoda:"<<endl;
cout<<"Vvod c ekrana - 1"<<endl;
cout<<"Vvod c faula - 2"<<endl;
cout<<"Metod - ";
cin>>p;
if(p==1)
{
cout<<"R1="; cin>>R[0];
cout<<"R2="; cin>>R[1];
cout<<"R3="; cin>>R[2];
cout<<"R4="; cin>>R[3];
cout<<"R5="; cin>>R[4];
cout<<"R6="; cin>>R[5];
cout<<"E2="; cin>>E2;
cout<<"E4="; cin>>E4;
cout<<"Ik1="; cin>>Ik1;
}
else
{
F.open("D:\\111\\123.txt");
F>>R[0]>>R[1]>>R[2]>>R[3]>>R[4]>>R[5]>>E2>>E4>>Ik1;
F.close();
}
a[0][0]=1/R[0]+1/R[1]+1/R[3];
a[0][1]=-1/R[1];
a[0][2]=-1/R[3];
a[1][0]=-1/R[1];
a[1][1]=1/R[1]+1/R[2]+1/R[5];
a[1][2]=-1/R[2];
a[2][0]=-1/R[3];
a[2][1]=-1/R[2];
a[2][2]=1/R[2]+1/R[3]+1/R[4];
b[0]=-E2/R[1]+E4/R[3]+Ik1;
b[1]=E2/R[1];
b[2]=-E4/R[3];
result=SLAU(a,N,b,x);
f.open("D:\\111\\rezult.txt");
if(result==0)
{
for(i=0;i<N;i++)
x[i]=-x[i];
cout<<"Massiv X"<<endl;
for(i=0;i<N;i++)
cout<<x[i]<<"\t";
cout<<endl;
f<<"x[i]=";
for(i=0;i<N;i++)
if(i<N-1) f<<x[i]<<"\t";
else f<<x[i];
I[0]=0-x[0]/R[0];
I[1]=x[0]-x[1]+E2/R[1];
I[2]=x[2]-x[1]/R[2];
I[3]=x[2]-x[0]+E4/R[3];
I[4]=0-x[2]/R[4];
I[5]=x[1]-0/R[5];
Pist=E2*I[1]+E4*I[3]-Ik1*I[0]*R[0];
f<<endl;
for(i=0,S=0;i<=M;i++)
S+=I[i]*I[i]*R[i];
Pnagr=S;
cout<<"I[i]=";
f<<"I[i]=";
for(i=0;i<=M;i++)
{
cout<<I[i]<<"\t";
if(i<M-1) f<<I[i]<<"\t";
else f<<I[i];
}
cout<<endl;
cout<<"Pist="<<Pist<<endl;
cout<<"Pnagr="<<Pnagr<<endl;
f<<endl;
f<<"Pist="<<Pist<<endl;
f<<"Pnagr="<<Pnagr<<endl;
if(Pist==Pnagr)
cout<<"Balance mojnocteu covnadatt"<<endl;
else cout<<"Balance mojnocteu ne covnadatt"<<endl;
f.close();
}
else if(result==-1)
{
cout<<"beckone4noe mnojectvo rewenii";
f<<"beckone4noe mnojectvo rewenii";
}
else if(result==-2)
{
cout<<"net rewenii";
f<<"net rewenii";
}
for(i=0;i<N;i++)
delete [] a[i];
delete [] a;
delete [] b;
delete [] x;
return 0;
}
7. Анализ результатов
По условию нам были даны: значения сопротивлений элементов цепи, напряжение в двух ветвях цепи и силу тока в данной точке; схематическая и математическая модель цепи.
Находим корни уравнения системы линейных уравнений, которые является потенциалами во всех ветвях цепи. С помощью которых находим значения токов в ветвях цепи. Проверяем баланс мощностей в цепи по найденным значениям мощностей источников и нагрузок.
Значения токов на ветвях везде разные, это говорит нам о том, что либо напряжения разные, либо сопротивления, по закону Ома .
Подтвердилось, что работать с файлами удобно и просто. А так же, что использование различных математических пакетов и языков программирования для решения различных задач очень удобно и компактно, быстрая переработка информации и максимально точные результаты.
Результаты в MS VC++ 6.0:
X[0]=-4.27091; X[1]=-33.6117; X[2]=0.560234; - корни системы линейных алгебраических уравнений, значения потенциалов в ветвях цепи.
I[0]=0.0569455; I[1]=30.5908; I[2]=0.996749; I[3]=5.34397; I[4]=-0.00709157; I[5]=-33.6117; - значения токов в ветвях цепи.
Pist=3117.87; - значение мощности источников.
Pnagr=163804.51; - значение мощности нагрузок.
Результаты проверки в Scilab:
X[0]=-4.27091; X[1]=-33.6117; X[2]=0.560234;
I[0]=0.0569455; I[1]=30.5908; I[2]=0.996749; I[3]=5.34397;
I[4]=-0.00709157; I[5]=-33.6117;
Pist=3117.87;
Pnagr=163804.51;
Все результаты совпадают и в MS VC++ и в Scalab.
Заключение
Результаты помогли убедится, что пользоваться методом Гаусса для решения СЛАУ очень удобно, а также даёт правильный результат.
Полученные значения токов показало, что не везде ток в цепи одинаковый, он зависит от составных электрической цепи.
Эта работа помогла освоить тему «Линейные электрические цепи» и научится применять теоретические сведения на практике.
А Также закрепить знания курса «Введение в информатику» и применить их при программировании реальной задачи на основе электрической цепи.
Использование ЭВМ очень помогает точно рассчитать информацию любого уровня, используя при этом малый период времени, что сильно облегчает работу людей.
Размещено на Allbest.ru
Подобные документы
Постановка задачи, математические и алгоритмические основы решения системы линейных алгебраических уравнений. Решение системы данных уравнений методом Гаусса с выбором главного элемента по столбцу. Функциональные модели и блок-схемы решения задачи.
курсовая работа [428,9 K], добавлен 25.01.2010Применение итерационных методов численного решения системы линейных алгебраических уравнений при вычислении на ЭВМ. Математические и алгоритмические основы решения задачи, метод Гаусса. Функциональные модели и блок-схемы, программная реализация решения.
курсовая работа [527,5 K], добавлен 25.01.2010Системы линейных алгебраических уравнений. Код программы для решения систем линейных алгебраических уравнений. Математические и алгоритмические основы решения задачи методом Гаусса. Программная реализация решения. Алгоритмы запоминания коэффициентов.
лабораторная работа [23,5 K], добавлен 23.09.2014Преобразование матрицы системы линейных алгебраических уравнений (СЛАУ) с помощью алгоритма Гаусса. Решение задачи методом простой итерации. Создание блок-схемы и текста программы для решения СЛАУ, реализованной на языке программирования Turbo Pascal.
курсовая работа [1,2 M], добавлен 15.06.2013Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы.
дипломная работа [144,8 K], добавлен 25.04.2012Метод Гаусса-Зейделя как модификация метода Якоби, его сущность и применение. Разработка программы решения системы линейных алгебраических уравнений на языке VB, проверка правильности работы программы в MS Excel и математических пакетах MathCad и MatLab.
курсовая работа [325,5 K], добавлен 27.10.2013Сущность матричного метода. Разработка программы решения системы уравнений линейных алгебраических уравнений методом решения через обратную матрицу на языке программирования Delphi. Представление блок-схемы и графического интерфейса программного продукта.
курсовая работа [1,0 M], добавлен 27.09.2014Разработка программы для решения системы линейных уравнений методом Крамера и с помощью расширенной матрицы на языке С++. Описание метода Крамера. Структура программы: заголовочные файлы, типы данных, переменные, идентификаторы, операторы, массивы.
курсовая работа [32,3 K], добавлен 19.01.2009Метод Гаусса как прямой метод нахождения решений для систем системы линейных уравнений маленькой и средней размерности с помощью компьютерной техники. Редактор кода и исходный код основной программы в Delphi, блок-схема и графическое решение задачи.
контрольная работа [460,8 K], добавлен 15.06.2015Разработка программного продукта для решения систем линейных алгебраических уравнений методом Гаусса с помощью ЭВМ. Математическое описание объекта моделирования, начальные и граничные условия. Алгоритм реализации задачи. Использование модуля CRT.
курсовая работа [269,6 K], добавлен 07.01.2016