АЛМАТИНСКИЙ ИНСТИТУТ ЭНЕРГЕТИКИ И СВЯЗИ

 

Кафедра электроники и компьютерных технологий

 

 

 

 

 

 

 

 

 

 

 

 

ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РАЗРАБОТКИ ПРОГРАММ

 

Лабораторная работа

(для студентов очной и заочный формы обучения специальности

350140 – Электронные системы и технологии)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Алматы 2005

 

СОСТАВИТЕЛЬ: Т.С. Бимагамбетов. Инструментальные средства разработки программ. Методические указания к выполнению лабораторных работа (для студентов всех форм обучения специальности 350140 – Электронные системы и технологии). – Алматы: АИЭС, 2005. – 41 с.

 

 

 

 

 

 

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

Ил. 16, библиогр. 5- назв.

 

 

 

 

                  

 

                   Рецензент: ст.преподаватель Г. Т. Мусатаева

 

 

 

 

 

 

 

 

 

Печатается по плану издания Алматинского института энергетики и связи на 2005 г.

 

 

 

 

 

                             ©  Алматинский институт энергетики и связи, 2005 г.

Введение

 

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

Целью методического указания  является обучение студентов теории метода, построению алгоритма и составлению программ при решении инженерных задач на языке С++, а также методике работы при разработке программ.

В данной работе рассматриваются все основные возможности языка С++ и их применение при разработке объектно-ориентированных программ.

Приводимые программы в основном отлаживались и выполнялись в интегрированной среде Borland C++ и в графическом режимеTurbo C.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

1 Лабораторная работа №1. Операторы языка С++. Массивы

 

Цель   приобретение навыков программирования с операторами языка С++ и работы с массивами.

 

1.1   Теория метода

 

1.1.1 Программирование разветвленных алгоритмов

Условный оператор является средством реализации  разветвления вычислительного процесса. Структура условного оператора имеет следующий вид:

IF <условие>  <оператор1> ELSE  <оператор2>.

Условный оператор работает по следующему алгоритму. Вначале  вычисляется условное выражение <условие>. Если результат есть TRUE  (ИСТИНА), то выполняется <оператор1> , а <оператор2> не выполняется; если результат есть FALSE (ЛОЖЬ), наборот, <оператор1> пропускается, а выполняется <оператор2>. Если при этом часть условного оператора, начиная со слова  ELSE, отсутствует, то немедленно управление передается оператору, следующему за условным.

Составить программу, реализующую следующий алгоритм. Ввести значение х и вычислить значение функции

 

 

Листинг программы:

#include<iostream>

#include<conio>

#include<math.h>

   int main()

{

   clrscr();

   int x;

   float y;

   cout<<"Введите x\n";

   cin>>x;

   if (x<5 && x>-2) y=5*x*x+6;

   else if (x>=5)  y=x*x*x+7;

   cout<<"Значение y="<<y;

   cout <<endl;

   getch();

   return 0;

}

4

          1.1.2 Программирование циклических структур алгоритмов

         

На языке С++ в циклических структурах имеются три различных оператора: for, while, do.

          Цикл for.

Цикл for организует выполнение программы фиксированное число раз, которое заранее известно. Оператор цикла с параметром for имеет такую структуру: for(I=0; I<15; I++). Первое называют инициализирующим, второе – условием проверки, а третье – инкрементирующим. Эти три выражения, как правило, содержат одну переменную, которую называют счетчиком цикла. Она определяется до того, как начнет исполняться тело цикла.

          Под телом цикла понимается та часть кода, которая периодически исполняется в цикле.

          Цикл while.

          Если нам заранее не известно, сколько раз понадобится выполнить цикл, то используем оператор цикла while, его вид: while<условие>.

          При выполнении оператора while вначале вычисляется и проверяется <условие>. Если выражение <условие> имеет значение TRUE, то выполняется <оператор>; после чего вычисление выражения <условие> и его проверка повторяется. Если <условие> имеет значение  FALSE, то оператор  while прекращает свою работу.

          Цикл do.

          В цикле while условие продолжения выполнения цикла помещалось в начало цикла. Это означало, что в случае невыполнения условия при первой проверке тело цикла вообще не исполнялось. В некоторых случаях это целесообразно, но возможны и ситуации, когда необходимо выполнить тело цикла хотя бы один раз вне зависимости от истинности проверяемого условия. Для этого следует использовать цикл do, в котором условие продолжения цикла располагается не перед, а после тела цикла. Вид

do {тело цикла}, while <условие>.

          Оператор <тело цикла> выполняется хотя бы один раз, после чего вычисляется выражение <условие>; если его значение есть FALSE, операторы <тело цикла> повторяются, в противном случае оператор do завершает свою работу.

 

          Составить программу вычисления суммы с заданной точностью 10-3.

Считать, что требуемая точность достигнута, если очередное слагаемое по модулю будет меньше, чем Е. Вычислить  .

Листинг программы:

#include<iostream>

#include<conio>

5

#include<math.h>

   int main()

{

   clrscr();

   int k;

   float y,s,x;

   const float e=0.001;

   cout<<"Введите x\n";

   cin>>x;

   s=0;k=1;y=0.1;

   while(y>e)

{

   y=x/(k*k*k+k*sqrt(abs(x)+1));

   s=s+y;

   k++;

}

   cout<<"Значение y="<<y<<endl;

   cout<<"Значение s="<<s<<endl;

   cout<<"Значение k="<<k<<endl;

   getch();

   return 0;

}

 

          1.1.3 Программирование структур данных типа массив

         

Массив – это структура данных, состоящая из фиксированного числа компонентов одного типа. К компонентам массива обеспечен доступ при помощи указания индексов компонентов. Описание типа массива задается следующим образом: тип данных массива, имя и размер массива.

Int age[4]. Здесь Int - тип, age - имя, в квадратных скобках -  размер массива или элементы массива. В данном примере массив имеет 4 элемента.

          Инициализация массива. Когда массив определен, мы можем присвоить его элементам значения. В примере 12 элементам массива присваивается количество дней для каждого месяца.

#include<iostream>

int main()

{

          int month, day, total_days;

          int days_per_month [12]={31,28,31.30,31,30,31,31,30,31,30,31};

          cout<<”\n Введите месяц (от 1 до 12):”;

          cin>>month;

          cout<<”\n Введите день (от 1 до 31):”;

cin>>day;

          total_days=day;

6

          for (int I=0; I<month –1 ; I++)

          total_days+=days_per_month[I];

          cout<<” Общее число дней с начала года:”<<total_days<<endl;

          return 0;

}

Результат :

Введите месяц (от 1 до 12): 3

Введите день   (от 1 до 31) :11

Общее число дней с начала года: 70

           

 Аналогично описание двумерного массива Int age[4][4], который требует двух индексов.

          Ниже приводится фрагмент программ для ввода и вывода двумерных массивов:

#include<iostream>

#include<conio>

#include<math.h>

   int main()

{

   int matr[100][100],k,i,j,n;

   cout<<"Введите n=";

   cin>>n;

   cout<<endl;

   k=1;

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

{

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

{

   matr[i][j]=k; k++;

   cout<<matr[i][j];

}

   cout<<endl;

}

   cout<<endl;

   k=1;

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

{

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

{

   matr[i][j]=k; k++; 

cout<<matr[i][j];

}

    cout<<endl;

}

7

getch();

    return 0;

}

   

Составить программу для поворота массива на 900.

#include<iostream>

#include<conio>

#include<math.h>

     

int main()

{

   int matr[100][100],

   mat[100][100],k,i,j,n;

   cout<<"Введите  n=";

   cin>>n;

   cout<<endl;

   k=1;

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

{

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

{

   matr[i][j]=k; k++;

   cout<<matr[i][j];

  

}

   cout<<endl;

}

   cout<<endl;

 

   k=1;

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

{

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

{

   k++;

   mat[i][j]=matr[n+1-j][i];

   cout<<mat[i][j];

}

   cout<<endl;

}

   getch();

   return 0;

}

 

8

1.2   Задания к лабораторной работе

 

1.2.1 Составить программу вычисления функции y=f (x) для заданного значения х.

 

1.                 

2.                 

  

    Функция y=f (x) вычисляется с помощью условного оператора.

 

3.                 

 

4.                 

 

     1.2.2 Составить блок-схему и программу вычисления выражения для заданных значений натурального числа n и действительного числа х. Значения выражений вычисляются при помощи операторов цикла. При составлении программ необходимо использовать для организации циклов различные операторы цикла. 6 задачу вычислите с некоторой точностью (см. теорию).

 

5.                 

6.                 

 

         1.2.3 Составить блок-схему алгоритма и программу для решения задачи по обработке массивов.

 

7.                  Дан массив А(5). Найти минимальный элемент массива и их количество.

8.                  Дан массив А(10). Упорядочить элементы массива, следующие за ним по убыванию.

9.                  Дан массив А(5,5). Поменять местами наибольший элемент главной и побочной диагоналей с элементом, состоящим на пересечении этих диагоналей. 

10.             Дан массив А(4,4). Повернуть массив на 1800.

9

1.3   Контрольные вопросы

 

1.3.1      Что такое алгоритм? Назовите и поясните его основные свойства.

1.3.2      Назовите основные типы данных языка С++.

1.3.3      Назовите основные операторы языка С++.

1.3.4      Как происходит работа условного оператора IF?

1.3.5      Какое значение может принимать шаг цикла оператора FOR?

1.3.6      Чем отличаются циклические конструкции с предусловием и с постусловием?

1.3.7      Что представляет собой массив как структура данных?

1.3.8      Каким образом задается описание массива, что в нем указывается?

1.3.9      Что называют инициализацией массива?

1.3.10 Что такое транспонирование матрицы?

 

2 Лабораторная работа №2. Функция. Структуры. Объекты и классы. Наследования

 

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

 

2.1 Теория метода

 

2.1.1 Функция

Функция представляет собой основу, на которой строится любая программа С++. Каждая программа обязательно должна включать главную функцию с именем main(). Функция представляет собой именованное объединение группы операторов. Это объединение может быть вызвано из других частей программы.

Определение функции. Определение функции, в котором выделяются две части – заголовок и тело, имеет следующий формат:

Тип_функции, имя_функции (формальных_параметров)

Тело_функции.

Здесь тип_функции – тип возвращаемого функцией значения, в том числе void, если функция никакого значения не возвращает. Имя_функции –идентификатор. Тело_функции – это всегда блок или составной оператор, т.е. последовательность описаний и операторов, заключенная в фигурные скобки. Очень важным оператором тела функции является оператор возврата в точку вызова: return выражения или return.

Выражение в операторе return определяет возвращаемое функцией значение. Именно это значение будет результатом обращения к функции. Тип возвращаемого значения определяется типом функции. Если функция не возвращает никакого значения,  то выражение в операторе return опускается.

 

10

          Вызов функции – это имя функции и круглые скобки со список фактических параметров.

          # include<iostream>

          double Func ()

          { тело функции     }

          int main ()

          {Func ()

           ------------

          return 0;

           }

Передача аргументов в функцию. Аргументы позволяют функции оперировать различными значениями или выполнять различные действия в зависимости от переданных ей значений.

Пример.

          # include<iostream>

          void repchar (char ch,int n)

          {

          for (int I=0; I<n; I++)

          cout<<ch;

          cout<<endl;

          }

          int main()

          {

          char chin;

int nin;

cout<<”Введите символ:”;

cin>>chin;

cout<<”Введите число повторений символа:”;

cin>>nin;

repchar (chin, nin);

return 0;

}

Результат:

Введите символ: *

Введите число повторений символов: 20

********************

          В этой программе переменные chin и nin функции main () передаются в качестве аргументов в функцию repchar ():

repchar (char ch,int n); // вызов функции.

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

         

11

Int fact (int n)

          {

          if (n==1)

          return 1;

          else return n*fact (n-1); // вызов самой себя

          }

Функция fact вызывает сама себя с модифицированными аргументами.

          Перегруженная функция. Перегруженная функция выполняет различные действия, зависящие от типов данных, передаваемых ей в качестве аргументов.

 

          2.1.2 Структуры

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

          Определение структуры. Определение структуры начинается с ключевого слова struct. Затем следует имя структуры, объявления полей, заключенные в фигурные скобки. После закрывающей фигурной скобки следует точка с запятой (;) – символ, обозначающий конец определения структуры.

          struct part

          {

          int modelnumber;

          int partnumber;

          float cost;

          };

          Доступ к полям структуры.

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

          Part1.modelnumber= 6244;

Вывод значения поля на экран с помощью   cout:

          Cout<<”\n модель”<<part1.modelnumber;

Результат: полю modelnumber присваивается значение 6244.

          Инициализация полей структуры.

          # include<iostream>

           struct part

          {

12

int modelnumber;

          int partnumber;

          float cost;

          };

          int main()

          {

          part part1={6244, 373, 217. 55}// Инициализация переменной

          cout<<”модель”<<part1.         modelnumber;

          cout<<”деталь”<<part1. partnumber;

          cout<<” стоимость $”<<part1. cost<<endl;

         

return 0;

          }

          Результат:

Модель 6244, деталь 373, стоимость $ 217.55    

 

          2.1.3 Объекты и классы

          Объекты.

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

          Примеры объектов.

Автомобили при моделировании уличного движения.

Схемы элементов при моделировании цепи электрического тока.

Страны при создании экономической модели.

Самолеты при моделировании диспетчерской системы.

          Классы.

Класс является описанием совокупности сходных между собой объектов. Например,  Prince, Sting и Madonna относятся к классу рок музыкантов. Не существует конкретного человека с именем «рок-музыкант», однако люди со своими уникальными именами являются объектами этого класса, если они обладают определенными характеристиками. Объект класса часто называют экземпляром класса.

          Определения класса. Класс- это производный структурированный тип, введенный программистом на основе существующих типов.

Механизм классов позволяет создавать типы в полном соответствии с принципами абстракции данных, т.е. класс задает некоторую структурированную совокупность типизированных данных и позволяет определить набор операций над этим данными.

Определение класса начинается с одного из ключевых слов – class, struct, union, за которым следует имя класса. Тело класса заключено в

13

 

 

 

 

 

 

 

 

 

 

 

 

 

 


           

фигурные скобки, после которых следует точка с запятой (;). Внутри тела помещаются поля класса (данные объекта) и методы класса обеспечивающие доступ к полю данных класса. Метод класса начинается функцией

void_имя ().

          Class sum  //определение класса

          {

          private:

          int somedata; // поле класса

          public:

          void setdata (int d) // метод класса, изменяющий значение поля

          {somedata = d;}

          void showdata () // метод класса, отображающий на экран значение поля

          { cout<<”Значение поля равно=”<<somrdata<<endl;}

          };

          Метод класса- это функции, входящие в состав класса. Класс sum содержит два метода: setdata () и showdata (). Ключевые слова private- защищают от несанкционированного доступа к функции, расположенных вне класса. Данные доступны только внутри класса. Данные, описанные с ключевым словом public, напротив, доступны за пределами класса..

          Теперь, когда класс определен,  рассмотрим, каким образом его можно использовать функцией main ().

          Int main ()

          {

          sum s1;

          s1.setdata (1066);

          s1.showdata ();

          return 0;

          }

Результат: на экране 1066.

14

Первым оператором функции main () является sum s1, который определяет объект s1. Оператор s1.setdata (1066) вызывает методом setdata () объект s1. Метод присваивает setdata объекту s1 значение, равное 1066. Аналогично вызовы функции showdata () отобразят на экране значения полей объекта s1.

          Класс как тип данных. Класс отличается от обычного структурного типа, по крайней мере, возможностью включения компонентных функций. (setdata () и showdata ()). Класс, введенный пользователем, обладает правами типа или класс как тип данных. Каждый тип служит для определения объектов.

Конструкция. Для описания объекта класса используется конструкция : имя_класса, имя_объекта.

          Как только класс определен,  можно создавать производные типы:

          Complex x1, x2, D; (Три объекта класса Complex).

          Complex *point=&D (Указатель на объект класса Complex).

          Complex dim[8] =x2 (Массив объектов класса Complex).

          Complex &name =x2 (Ссылка на объект класса Complex).

 

2.1.4 Наследование

Наиболее значимой после классов  объектно-ориентированного программирования является наследование. Это процесс создания новых классов, называемых наследниками или производными классами, из уже существующих или базовых классов. Производный класс получает все возможности базового класса, но может также быть усовершенствован за счет добавления собственных. Выигрыш от наследования состоит в том, что наследование позволяет использовать существующий код несколько раз.  Написанный и отлаженный базовый класс мы  можем больше не модифицировать, при этом механизм наследования позволит нам приспособить его для работы в различных ситуациях.

                Определение производного класса. Для определения производного класса между именем нового класса и базовым классом помещается двоеточие, за ним следует ключевое слово public и имя базового класса.

          Class countdn:public counter. Countdn является наследником класса counter. Для доступа из производного класса к компонентам базового класса, имена которых повторно определены в производном, используется операция

« :: », указывающая области видимости.

          Пример. В программе counten, появится новый класс countdn, добавляющий операцию уменьшения к классу counter.

            //counten.cpp

           ##include<iostream>

#include<conio>

class counter  //базовый класс

{

        protected:

   int count;//счетчик

15

 public:

   counter():count(0) // конструктор без аргумента

   { }

   counter(int c):count(c)

   { }

   int getcount()// метод чтения

   {return count;}// возвращает значение счетчика

   counter operator++()// метод увеличения

{return counter (++count);}

};

 

class countdn:public counter  // производный класс

{

 public:

 counter operator--()// уменьшает значение счетчика

 {return counter(--count);}

};

 

        int main()

{

        countdn c1;// объект с1

   cout<<"\n c1="<<c1.getcount();// вывод на печать

 

   ++c1;++c1;++c1;// увеличиваем с1 в три раза на 1

 

   cout<<"\n c1="<<c1.getcount();// вывод на печать

 

   --c1;--c1;// уменьшаем с1 в два раза на 1

 

   cout<<"\n c1="<<c1.getcount();// вывод на печать

 

   cout<<endl;

   getch();

   return 0;

}

 

Результат программы:

С1=0 – после инициализации;

С1=3 – после увеличения с1;

С1=1 – после уменьшения с1;

Вслед за описанием базового класса counter в программе определен новый производный класс countdn. Он включает в себя новый метод

operator--(), который уменьшает счетчик. В то же время countdn наследует все возможности класса counter: конструктор и методы.

16

2.2 Задания к лабораторной работе

 

2.2.1 Функция.

 

1.        Вычислить площадь треугольника с помощью формулы Герона.

 

, где Р- периметр треугольника.

 

2.   Передача аргументов в функцию. Составить программу которая печатает строку символов *.

3.   Рекурсия функции. Вычислить факториал целого числа с помощью рекурсии.

 

2.2.2 Структуры.

 

4.   Задана английская система мер (feet-фут, inches-дюйм), реализуйте с   

помощью структуры.

5.   Структурные переменные в качестве аргументов. Вычислить площадь  

комнаты в м2.

2.2.3 Объекты и классы.

6.   Вывести на экран детали изделия :номер изделия, номер детали,

стоимость детали.

7.   Вывести на экран с помощью класса ваше имя, рост и вес.

2.2.4 Наследования.

8.   Вывести на экран ваш факультет, группу, пол, имя, вес и рост. При

 этом  факультет, группу взять как базовый класс, а пол, вес и рост как производный класс.

 

2.3 Контрольные вопросы

 

2.3.1       Определение, вызов функции.

2.3.2       Оператор return.

2.3.3       Передача аргументов в функцию.

2.3.4       Рекурсия функции.

2.3.5       Определение структуры.

2.3.6       Вложенные структуры.

2.3.7       Методы класса. Конструкторы.

2.3.8       Класс как тип данных.

2.3.9       Наследование и его свойства.

2.3.10  Множественное наследование.

 

 

 

3 Лабораторная работа №3. Исследование линейных двухполюсных электрических цепей

 

Цель работы анализ электрических цепей.

 

3.1  Методика работы

Линейными двухполюсными цепями принято называть цепи, содержащие только такие двухполюсники, вольт- амперная характеристика которых изображается прямой линией.  Для постоянного тока – это активные сопротивления или проводимость постоянной.

Анализ электрических цепей. Для анализа электрической цепи задается ее структура и требуется найти токи и напряжения во всех ветвях цепи.

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

 

I=GU+Iq (3.1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рисунок 3.1-Ветвь линейной цепи и замещающие двухполюсники

 

Если в ветви присутствует только проводимость , то Iq=0, а активное сопротивление можно преобразовать в проводимость с помощью

18

соотношения G=1/R. Если ветвь содержит идеальный источник тока, то G=0. Ток и напряжение считаются положительными, если их направления совпадают с направлениями тока и напряжения в ветви. В противном случае параметры источника считаются отрицательными.

При анализе электрических цепей методом узловых потенциалов сначала выбирается базовый узел , потенциал которого равен нулю. Этому узлу присваивается номер 0, а остальные узлы нумеруются по порядку. Каждое напряжение может быть описано как разность потенциалов. При этом узловое напряжение между узлом х и базовым узлом определяется в виде   , где - потенциал узла х. При =0 узловое напряжение .

С помощью узлового напряжения можно рассчитать напряжение в каждой ветви, затем токи.

Алгоритм Гаусса. Для решения системы линейных уравнений используем алгоритм Гаусса. В этом методе неизвестные поочередно исключаются до тех пор, пока не останется одно уравнение с неизвестной.

Пусть дана система уравнения

 

которая запишется в виде матричного уравнения

(3.2), где

 

 

 ,       ,     .

 

 

В уравнении 3.2 одностолбцовая матрица с неизвестными хi является вектором решения. Для исключения переменной  х1 во второй строке системы уравнений в алгоритме Гаусса первая строка умножается на коэффициент

r21=a21/a11       (3.3) ,

 

и после преобразований выглядит следующим образом

19

,

 

затем полученное уравнение вычитается из второй строки

 

(.

 

Соответственно умноженная на коэффициент

 

r31=a31/a11       (3.4) ,

 

первая строка вычитается из третьей строки системы. В результате  и третья строка не содержит теперь переменной х1 . Если  все остальные уравнения обработать аналогичным образом, то неизвестная х1 будет исключена также и из строк со второй по n-ю системы. Этот процесс называют редукцией , а систему уравнений с n-1 неизвестной – редуцированной системой.

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

,  , .

          Теперь из редуцированной системы уравнений исключим следующую переменную х2. Процесс повторяется до тех пор, пока не останется одно уравнение с одной неизвестной.

          Таким образом , после n-1 редукций получаем следующую матрицу:

 ,

 

где

 ,       ,     .

 

После n-1 редукций системы можно вычислить вектор решения. Расчет начинают в n-й строке системы и вычисляют

.

Затем хn умножают на коэффициент в строке  n-1 столбца n матрицы коэффициентов, и полученное произведение вычитают из соответствующего элемента матрицы правой части системы. После деления результата предыдущих действий на соответствующий элемент главной диагонали в строке n-1 матрицы коэффициентов определяют хn-1.

         

20

Блок схема алгоритма Гаусса.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


21

 

1.1   Порядок выполнения лабораторных работ

 

1.2.1 В схеме (рисунок 3.2) выберите базовый узел, потенциал которого равен  нулю.

1.2.2 Методом узловых потенциалов составьте систему уравнений для    

заданной цепи.

1.2.3 Замените ток в каждой ветви , использовав для этого уравнения (3.1).

1.2.4      Выразите напряжения каждой ветви через узловые напряжения.

1.2.5      Составьте системы уравнений для узловых напряжений.

1.2.6      Запишите систему уравнений в матричной форме.

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

1.2.8           Используя блок-схему алгоритма Гаусса, составьте программу на языке С++ и рассчитайте значения напряжения и токов во всех ветвях.

1.2.9      Сравните полученные результаты с ручными вычислениями и сделайте анализ.

 

 

 

 

 

 

 

 

 

 


Рисунок 3.2

 

 

Значения проводимостей и ток источника.

G1=1.15  Om-1   , G2=0.42  Om-1

 

G3=0.72  Om-1  , G4=1.19  Om-1

 

G4=1.19  Om-1  , G5=0.55  Om-1

 

                                         G6=3.00  Om-1  ,  Iq=2 A

 

 

 

 

22

4 Лабораторная работа №4. Определение общего сопротивления цепи методом замены звезда – треугольник (треугольник - звезда)

 

Цель – овладение одним из методов расчета сопротивления цепи.

 

4.1  Теория метода

При расчете сложных схем применяются специальные методы, например метод наложений или преобразования соединений звезда – треугольник.  Расчет сложных электрических цепей может быть упрощен  заменой одного вида соединения другим. При этом должны соблюдаться условия эквивалентности двух видов соединения.

          4.1.1 Пересчет соединения треугольника в соединение звездой

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рисунок  4.1 - Соединение треугольником  Рисунок  4.2 - Соединение звездой

 

          При соединении треугольником (рисунок 4.1) и таком же подключении источника первая ветвь – сопротивление  оказывается включенным параллельно с двумя последовательно соединенными сопротивлениями     и   , которые образуют вторую ветвь. Соединения звездой и треугольником будут эквивалентны, если сопротивления между точками а и с обоих соединений будут одинаковыми, т.е. будет выполняться равенство

 

 

 .        (4.1)

         

Аналогично при подключении источника к точкам с и b должно быть

справедливым равенство

23

  ,                       (4.2)

а при подключении источника к точкам с и b равенство

 

   .                        (4.3)

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

          Выполнив попарно вычитание и сложение уравнений, найдем сопротивление :

(4.1) – (4.2)

,                               (4.4)

(4.3)+(4.4)

  ,                                     (4.5)

     ,                                   (4.6)

    ,                                    (4.7)

и

     .                                   (4.8)

          Таким образом, если известны сопротивления , и , соединенные треугольником, то по (4.6-4.8) могут быть найдены эквивалентные сопротивления .

 

          4.1.2 Пересчет соединения звездой в соединение треугольником.

 

Решим обратную задачу: известны значения соединенных звездой сопротивлений, и нужно найти сопротивления , и , соединенные треугольником. Эти сопротивления можно определить из трех уравнений

 (4.6-4.8), считая заданными .

 

24

          После решения трех уравнений с тремя неизвестными ,, найдем, что

  ,                              (4.9)

   ,                               (4.10)

  .                                   (4.11)

Пример. Найти общее сопротивление мостовой схемы с заданными сопротивлениями:  R1=2 Ом,R2=1 Ом, R3=3 Ом,  R4=4 Ом и R5=6 Ом.

 

 

 

 

 

 

 

 

 

 

 

 

 


Рисунок 4.3 - Мостовая схема

         

         

Решение. Рассмотрим узел с, соединенный звездой сопротивлений R1,R3 и R5 . Найдем сопротивления R34,  R35 и R45 , соединенные треугольником.

Из формулы (4.9-4.11) получим

 

 ,

 ,

 .

 

 

25

Эквивалентная схема

 

 

 

 

 

 

 

 

 

 


Рисунок 4.4

          Из схемы заключаем, что сопротивления R1 и R35 ,  а также R2 и R45 соединены параллельно, полученные сопротивления соединены последовательно, и они соединены с R34 параллельно.

 

,    , 

 

, .

          Рассмотрим треугольник R1,R3 и R5.  Найдем сопротивления R15,  R13 и R35 , соединенные звездой.

          Из формулы (4.6-4.8) получаем

 

,  ,  .

Эквивалентная схема

 

 

 

 

 

 

 

 

 


Рисунок 4.5

 

26

          Из схемы видно, что сопротивления R15 и R2 а также R35 и R4 соединены последовательно, полученные сопротивления соединены параллельно, и они соединены с R13 последовательно.

          R152=R15+R2=2,09 Ом   , R354=R35+R4=5,636 Ом  ,

          , Rоб=R152354+R13=2,07 Ом.

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

         

          4.1.3 Листинг программы

#include <math>

#include <conio>

#include <iostream>

          void vecti()

{

          float R[50];

   int i,n,x;

   cout<<"Для пересчета звезда - треугольником нажмите 1, наоборот  -1";

   cin>>x;

   cout<<"Введите число сопротивлении n=";

   cin>>n;

   cout<<endl;

   cout<<"Введите значения сопротивлении (элементы массива)";

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

   cin>>R[i];

   if(x>=0)

{  float R35,R34,R45,R135,R245,R135245,R0;

   R35=R[5]+R[3]+R[5]*R[3]/(R[4]);  R34=R[4]+R[3]+R[4]*R[3]/(R[5]);

   R45=R[4]+R[5]+R[4]*R[5]/(R[3]);  R135=R[1]*R35/(R[1]+R35);

   R245=R[2]*R45/(R[2]+R45); R135245=R135+R245;

   R0=R135245*R34/(R135245+R34);

   cout<<endl;

   cout<<"R35="<<R35<<endl;cout<<"R34="<<R34<<endl;

   cout<<"R45="<<R45<<endl;cout<<"R135="<<R135<<endl;

   cout<<"R245="<<R245<<endl; cout<<"R135245="<<R135245<<endl;

   cout<<"R(ob)="<<R0<<endl;}

   else

{  float R15,R13,R35,R152,R354,R152354,R0;

   R15=R[1]*R[5]/(R[1]+R[3]+R[5]);   R13=R[1]*R[3]/(R[1]+R[3]+R[5]);

   R35=R[3]*R[5]/(R[1]+R[3]+R[5]);   R152=R15+R[2]; R354=R35+R[4];

   R152354=R152*R354/(R152+R354);   R0=R13+R152354;

   cout<<endl;

   cout<<"R15="<<R15<<endl;cout<<"R13="<<R13<<endl;

 

27

cout<<"R35="<<R35<<endl;cout<<"R152="<<R152<<endl;

cout<<"R354="<<R354<<endl; cout<<"R152354="<<R152354<<endl;

cout<<"R0="<<R0<<endl;

}

}

     void main()

{

   int y;  positiv:

   vecti();

   cout<<"Для повторения вычисления нажмите 1";

   cin>>y;   if (y==1) goto positiv;

   getch();

}

 

4.2  Порядок выполнения лабораторной работы

4.2.1 По заданной схеме (рисунок 4.6) методом соединения треугольником  найдите общие сопротивления цепи.

4.2.2 По заданной схеме  методом соединения звездой найдите общие    

сопротивления цепи и  сравните с соединением треугольника.

4.2.3 Составьте блок-схему алгоритма и программу для вычисления 

общего сопротивления цепи. При программировании необходимо 

использовать массивы.

4.2.4 Сравните полученные результаты с теоретическими вычислениями и сделайте анализ.

         

 

 

R1=2 Om, R2=1 Om, R3=0,5 Om,

R4=3 Om, R5=4 Om.

 
 

 

 

 

 

 


                                        

                                                                                                 

                                                                               Рисунок 4.6

4.3  Контрольные вопросы

 

4.3.1      Для каких целей заменяют один вид соединения другим?

4.3.2      Напишите формулы при соединении звездой и треугольником.

4.3.3      Что такое алгоритм? Назовите и поясните его основные свойства.

4.3.4      Особенности расположения элементов массива в памяти ЭВМ.

4.3.5      Каким образом задается описание массива, что в нем указывается?

28

5 Лабораторная работа №5. Определение  методом наложения

напряжения и тока в цепи

 

Цель – используя метод наложения при расчете напряжений и токов в цепи, составить программу.

 

5.1 Теория метода

5.1.1 Метод наложения. Законы Кирхгофа имеют общий характер и применимы для любой цепи. Однако в случае применения этих правил даже для относительно несложных электрических схем быстро растет объем вычислительных работ, и при этом легко утрачиваются наглядность и логика расчета.

Для тех электрических цепей, сопротивления элементов которых линейные, так называемые линейные цепи, разработан ряд упрощенных методов расчета.  

Метод наложения основывается на том, что в линейной электрической цепи с несколькими источниками ЭДС ток в некоторой произвольно выбранной ветви равен сумме частичных токов, каждый из которых обусловлен одним из изменяющихся в цепи источников. Частичные токи накладываются друг на друга, не оказывая при этом никакого взаимного влияния.

Пользуясь этим методом, следует рассчитать частичные токи от

действия каждого источника ЭДС или тока. При расчете частичных токов от действия одной из ЭДС каждый другой источник ЭДС заменяется проводом без сопротивления (короткое замыкание), если считать источник идеальным, то источник тока исключается (разрыв цепи). Искомый ток (если считать, что частичные токи в ветви имеют те же положительные направления, что и искомый ток) равен сумме частичных токов.

Пример. Рассмотрим расчет по методу наложения для цепи, изображенной на риснок 5.1 .

 

E1= 2 В;

E3= 4 B;

R1= 1 Om;

R2= 3 Om;

R3= 2 Om;

 J2= 3 A.

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 


                                Рисунок 5.1

 

 

29

 

Используя метод наложения токов, разобьем данную схему на три

1.     Обрываем источник тока J2 и накоротко замыкаем Е3.

Ток I11 берется со знаком минус, так как направление не совпадает с выбранным.

I11= -E1/(R1+R3);

I21=0; (Обрыв ветви).

I31= E1/(R1+R3); Второй индекс указывает номер схемы.

 

 
 

 

 


         

 

 

 

 

 

 

 

2.     Накоротко замыкаем оба источника ЭДС.

R1 и R3 соединены параллель-но R13=R1R3/(R1 +R3). Напряжение U13=J2R13 ,тогда ток I12= U13/R1= J2R3/( R1 +R3) 

Анологично I32= U13/R3= J2R1/( R1 +R3).

Ток I22 = J2.

 
 

 

 

 

 

 

 

 

 

 

 


3. Обрываем источник тока J2 и накоротко замыкаем Е1.

Ток I33 берется со знаком минус, так как направление не совпадает с выбранным.

I33= -E3/(R1+R3).

I23=0; (Обрыв ветви).

I13= E3/(R1+R3).

 

 
 

 

 

 

 

 

 

 

 

 

 


          

            Ток в каждой ветви определяем суммированием всех найденных значений частичных токов.

I1=I11+I12+I13= -0,67+2+1,33= 2,67 A.

I2=I21+I22+I23=  0+3+0= 3 А.

I3=I31+I32+I33= 0,67+1-1,33= 0,33 A.

 

30

    5.1.2 Листинг программы для расчета тока методом наложения

#include<iostream.h>

#include<conio.h>

#include <graphics.h>

#include <stdlib.h>

#include<math.h>

#include<dos.h>

class sm

{

  private:

  float r1,r2,r3,e1,e3,r5,r6;

  float i11,i21,i31,i12,i22,i32,i13,i23,i33;

  float i1,i2,i3;

  public:

    void kont()

{

           setbkcolor(0);

      setfillstyle(1,14);

      bar(50,50,65,95);  bar(150,50,165,95);  bar(250,50,265,95);

      setcolor(14);

      line(58,25,58,50); line(158,25,158,50); line(258,25,258,50);

      line(58,25,258,25);

      line(58,95,58,120); line(158,95,158,120); line(258,95,258,120);

      line(58,160,58,185); line(158,160,158,185); line(258,160,258,185);

      line(58,185,258,185);

      setcolor(4);

      line(75,50,75,95);line(175,50,175,95);line(275,50,275,95);

      line(75,95,70,90);line(75,95,80,90);

      line(175,50,170,55);line(175,50,180,55);

      line(275,95,270,90);line(275,95,280,90);

      setcolor(4);setlinestyle(0,0,3);

      circle(58,140,20);  circle(158,140,20); circle(258,140,20);

      line(57,130,57,150);line(257,130,257,150);line(57,130,52,135);   

  line(57,130,62,135);line(257,130,252,135);

  line(257,130,262,135);

  line(157,132,150,139);line(157,132,164,139);

  line(157,140,150,147);

  line(157,140,164,147);

  settextstyle(1,0,1);setcolor(14);

  outtextxy(25,155,"E1"); outtextxy(125,155,"I2");    

  outtextxy(225,155,"E3");

  outtextxy(25,62,"R1"); outtextxy(125,62,"R2"); 

  outtextxy(225,62,"R3");

  setcolor(4);

31

      outtextxy(80,62,"I1"); outtextxy(180,62,"I2"); outtextxy(280,62,"I3");

      setcolor(14);

      outtextxy(360,25,"Bbedite parametrs:");

      outtextxy(360,57,"R1=  Om"); outtextxy(360,105,"R2=  Om");

      outtextxy(360,153,"R3=  Om");

      outtextxy(480,57,"E1=  B"); outtextxy(480,105,"I2=   A");

      outtextxy(480,153,"E3=  B");

 

      gotoxy(51,5);

      cin>>r1;

      gotoxy(51,8);

      cin>>r2;

      gotoxy(51,11);

      cin>>r3;

      gotoxy(66,5);

      cin>>e1;

      gotoxy(66,8);

      cin>>i2;

      gotoxy(66,11);

      cin>>e3;

 

      outtextxy(40,200,"Метод наложения(1-схема)");

 

      setfillstyle(1,14);

      bar(50,270,65,315);  bar(150,270,165,315);  bar(250,270,265,315);

      outtextxy(25,375,"E1");

      setcolor(14);

      setlinestyle(0,0,1);

line(58,245,58,270); line(158,245,158,270); line(258,245,258,270);

      line(58,245,258,245);

 

      line(58,310,58,340); line(158,315,158,340); line(258,315,258,340);

      line(58,380,58,405); line(158,380,158,405); line(258,380,258,405);

      line(58,405,258,405);

      setcolor(4);

      line(75,270,75,315);line(175,270,175,315);

      line(275,270,275,315);

      line(75,270,70,275);line(75,270,80,275);

      line(175,270,170,275);line(175,270,180,275);

      line(275,315,270,310);line(275,315,280,310);

      setcolor(4);setlinestyle(0,0,3);

      circle(58,360,20);  circle(158,360,20);  

      circle(258,360,20);

      line(57,350,57,370);line(257,350,257,370);

32

      line(57,350,52,360);

      line(57,350,62,360);line(257,350,252,360);

      line(257,350,262,360);

      line(157,352,150,359);line(157,352,164,359);

      line(157,360,150,367);

      line(157,360,164,367);

      setcolor(14);

      outtextxy(25,282,"R1"); outtextxy(225,282,"R3");

      setcolor(4);

      outtextxy(80,282,"I1");  outtextxy(280,282,"I3");

      setfillstyle(1,0);

      bar(128,270,205,382); bar(220,340,290,382);

      setcolor(14);setlinestyle(0,0,1);

      line(258,335,258,385);

      setcolor(4);setlinestyle(0,0,3);

      i11=-e1/(r1+r3);i31=e1/(r1+r3),i21=0;

      gotoxy(40,17);

      cout<<"I1(1)="<<i11;

      //  gotoxy(51,17);

      cout<<"\tI2(1)=0";

      cout<<"\tI3(1)="<<i31;

      getch();

 }

      void kon()

 {

      setfillstyle(1,0);

      bar(191,200,203,230);

      setcolor(14);

      outtextxy(40,200,"Метод наложения(2-схема)");

      setcolor(4);

      circle(158,360,20);

      setlinestyle(0,0,1);setcolor(14);

      line(158,315,158,340);

      setfillstyle(1,14); outtextxy(125,375,"I2");

      bar(150,270,165,315);

      setfillstyle(1,0);

      bar(230,340,280,382);bar(70,270,80,280);

      bar(10,340,80,400);

      line(258,330,258,405);

      setcolor(4);setlinestyle(0,0,3);

      line(157,352,150,359);line(157,352,164,359);

      line(157,360,150,367);line(157,360,164,367);

      setlinestyle(0,0,1);

      line(175,270,175,315);line(175,270,170,275);

33

   line(175,270,180,275); line(75,315,70,310);

      line(75,315,80,310);      line(75,270,75,315);

      setcolor(14);

      outtextxy(125,282,"R2");line(58,300,58,400);

      setcolor(4); outtextxy(180,282,"I2");

      i12=i2*(r3/(r1+r3));i22=i2;i32=i2*(r1/(r1+r3));

      gotoxy(40,19);

      cout<<"I1(2)="<<i12;

      // gotoxy(51,19);

      cout<<"\tI2(2)="<<i22;

      cout<<"\tI3(2)="<<i32;

      getch();

}

      void ko()

{

      setfillstyle(1,0);

      bar(191,200,203,230);

      setcolor(14);

      outtextxy(40,200,"Метод наложения (3-схема)");

      outtextxy(225,375,»E3»);

      outtextxy(25,282,»R1»); outtextxy(225,282,»R3»);

      setcolor(4);

      outtextxy(80,282,»I1»);  outtextxy(280,282,»I3»);

      setfillstyle(1,0);

      bar(118,270,205,382);bar(200,340,280,380);

      bar(270,270,280,315);bar(125,300,140,400);

            setcolor(4);

      line(275,270,275,315);line(275,270,270,275);

      line(275,270,280,275);setlinestyle(0,0,3);

      circle(258,360,20);   line(257,350,257,370);

      line(257,350,252,360);line(257,350,262,360);

      i13=e3/(r1+r3);i33=-e3/(r1+r3);i23=0;

      gotoxy(40,21);

      cout<<»I1(3)=»<<i13;

   cout<<»\tI2(3)=0»;

     cout<<»\tI3(3)=»<<i33;

     getch();

     i1=i11+i12+i13;i2=i21+i22+i23;i3=i31+i32+i33;

     gotoxy(40,23);

     cout<<»I1=»<<i1; cout<<»\tI2=»<<i2;  

     cout<<»\tI3=»<<i3;    

}

};

int main()

34

{ int n;

int gdriver = DETECT,gmode;

initgraph(&gdriver, &gmode, «..\\bgi»);

sm s1; s1.kont();s1.kon(); s1.ko();

getch();  return 0;

}

          5. 2 Порядок выполнения лабораторной работы

          5.2.1 Задайте значения сопротивлений (1-10 Ом), ЭДС (1-5 В) и тока (1-5 А).

5.2.2 По заданной схеме (рисунок 5.2) выберите произвольно направления токов в  ветвях цепи.

5.2.3 Методом наложения найдите напряжения и токи во всех ветвях цепи.

5.2.4 Составьте блок-схему алгоритма и программу для вычисления 

напряжений и токов. При программировании необходимо использовать

объекты и классы  (см. лабораторную работу   №2).

          5.2.5 Сравните полученные результаты с теоретическими вычислениями и            сделайте анализ.

 

 

 

   

 

 

 

 

 

 

 

 

 

 

 

Рисунок  5.2

 

          5.3 Контрольные вопросы

 

          5.3.1 Метод наложения.

          5.3.2 Для каких электрических цепей используется метод наложения?

          5.3.3 Какими правилами выбираются направления токов в ветви?

          5.3.4 Дайте определение объекта класса. В данной работе что является  

         объектом?

          5.3.5 Что такое методы и поле класса?

          5.3.6 Объясните смысл класса как типа данных.

35

          6 Лабораторная работа №6. Переходные процессы

 

Цель – овладение классическим методом расчета параметры переходного процесса, основанном на моделировании.

 

          6.1 Теория метода 

 

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

          Переходной процесс возникает в результате коммутаций, происходящих в электрической цепи.

          Коммутация – это различные переключения в электрической цепи, приводящие к изменению схемы или ее параметров.

          Обычно считают, коммутация совершается мгновенно. Однако переход от одного установившегося режима к другому происходит в течение  некоторого промежутка времени, если в цепи есть накопитель энергии ( катушки индуктивности и емкости).

          Классическом методом расчета переходных процессов называется метод, который сводится к решению неоднородных линейных дифференциальных уравнений, составленных для схемы, образованных после коммутации. Решение дифференциального уравнения равно сумме частного решения неоднородного уравнения (принужденная составляющая) и общего решения однородного уравнения (свободная составляющая). Определение постоянных интегрирования, входящих в выражение для свободного тока (напряжения), производят путем совместного решения системы линейных алгебраических уравнений по известным значениям свободной составляющей тока (напряжения) и ее производных, взятых при t=0. 

          В зависимости от порядка дифференциальных уравнений,

описывающих исследуемые переходные процессы, различают цепи первого, второго и более высокого порядка. В цепях первого порядка накопление энергии происходит только в одном реактивном элементе. Последовательная цепь   R, L, C является цепью второго порядка. Разветвленные цепи, содержащие  L и С, могут быть второго и более высокого порядка.

 

6.1.1 Законы коммутации

 

Первый закон коммутации

В первый момент времени после коммутации ток в индуктивности остается таким же, каким был непосредственно до коммутации, а затем

 

36

плавно изменяется.

IL(0)= IL(0-).

          Второй закон коммутации

В начальный момент времени после коммутации напряжение на емкости остается таким же, каким оно было непосредственно перед ней, а затем плавно изменяется.

UС(0)= UC(0-).

          Начальные условия

          Под независимыми начальными условиями понимают значения тока в индуктивности и напряжения на емкости в момент коммутации, определяемой по законам последней.

          Под зависимыми начальными условиями понимают значения остальных токов, напряжений и их производных в момент коммутаций,

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

 

          6.1.2 Определение постоянных интегрирования        

          Для любой схемы с помощью уравнений Кирхгофа и законов коммутации можно найти:

- числовые значения искомого свободного тока при t=0, обозначим его ;

- числовые значения первой, а если понадобится, то и высших производных от свободного тока, взятых при t=0. Числовое значение первой производной от свободного тока при t=0, обозначим .

Рассмотрим методику определения постоянных интегрирования А1, А2,…., полагая известными , и значения корней р1, р2,…

Если характеристическое уравнение цепи представляет собой уравнение первой степени, то . Постоянную интегрирования А определяют по значению свободного тока .

Если дано характеристическое уравнение второго порядка и его корни

действительные и не равны, то

.                     (6.1)

Продифференцируем это уравнение по времени:

.         (6.2)

Запишем уравнение (1) и (2) при t=0. В результате получим

,                                      (6.3)

.                            (6.4)

В этой системе уравнений известными являются ,, р1 и р2; неизвестными – А1 и А2.

37

Совместное решение (6.3) и (6.4) дает

 

 ,

.

Если корни характеристического уравнения являются комплексно-сопряженными, то в (1) сопряжены не только р1 и р2, но и А1 и А2. Поэтому свободный ток

.                                        (6.5)

Угловая частота и коэффициент затухания известны из решения характеристического уравнения.

Определение двух неизвестных А и и в этом случае по значениям

и .

Продифференцировав по времени уравнение (5), получим

.  (6.6)

Запишем уравнение (6) при t=0

.

Таким образом, для нахождения неизвестных А и имеем два уравнения:

,

.

6.1.3 Характеристическое уравнение

Наиболее простой способ составления характеристического уравнения цепи состоит в следующем:

а) записывают формулу входного сопротивления цепи в комплексной форме;

б) в формуле производят замену сомножителя на р;

в) полученные выражения Z(p) приравнивают нулю Z(p)=0.

Характеристическое уравнение можно получить путем приравнивания к нулю входного сопротивления Z(p) относительно любой ветви цепи. В тех случаях, когда разветвления цепи имеет лишь один накопитель энергии, удобнее рассматривать формулу входного сопротивления относительно ветви с накопителем энергии.

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

Искомый ток (или напряжение). Его представляют в виде суммы

 

38

составляющих установившегося и свободного режимов цепи

I=Iпр+Iсв или U=Uпр+Uсв .

Установившийся режим цепи обусловлен действием источников энергии, а поэтому составляющая Iпр (или Uпр) в случае постоянного или синусоидального напряжения может быть найдена обычными методами расчета, установившегося процесса в цепи после коммутации. Свободный

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

6.1.4 Корни характеристического уравнения

В зависимости от корней характеристического уравнения свободная составляющая записывается следующим образом:

а) корни действительные разные (дискриминант характеристического

уравнения больше нуля).

, n- порядок дифференциального уравнения;

б) корни действительные равные (дискриминант характеристического уравнения равен нулю).

;

в) корни комплексно-сопряженные (дискриминант характеристического уравнения меньше нуля).

,

.

 

Пример. Дана линейная электрическая цепь (рисунок 6.1). R1=100 Om,

R2=100 Om, C=5 .10 мкФ, L= 10-2 Гн, Е=320 В. Необходимо определить ток индуктивности IL.

 

 

 

 

 

 

 

 

 

 


Рисунок 6.1

 

 

39

Решение.

До коммутации IL(0-)=IL(0+) = 0; Uc(0+)= Uc(0-)=0.

Непосредственно после коммутации при t=0:

IL(0-)=IL(0+) = 0; Uc(0+)= Uc(0-)=320.

Искомый ток

IL=ILпр+ILсв ,

где ILпр и ILсв – принужденная и свободная составляющие тока в катушке.

Используя законы Кирхгофа, найдем ILпр

I1 - I2 -IL=0;

I1R1 + LdIL/dt=E;

;

ILпр=Е/R1=320/100= 3,2 A .

          Для нахождения свободного составляющего тока ILсв        составим характеристическое уравнение через входное сопротивление  и  найдем ее корни

 .

При Z(P)=0 ,     =0 , .

Подставив значения параметров, получим:  P2+6000P+107=0;

Вычислим дискриминант D=36 .106 – 40.106 = -4 .104, .

Корни характеристического уравнения комплексные и сопряженные, поэтому, и при t=0 получим

, .

Производная   ,

при t=0  , при  получим .

Чтобы найти А необходимо найти значение .

Из уравнения I1R1 + LdIL/dt=E найдем , .

Для этого необходимо найти значения I1. Из уравнения Кирхгофа

E=I1R1+I2R2+Uc т.к. I1 - I2 -IL=0; получим E=I1R1+R2(I1 -IL ) + Uc , откуда I1=(E+ILR2-Uc)/(R1+R2) , I1(0)= [E+IL (0)R2-Uc(0)]/(R1+R2) , т.к. IL(0)=0,E=320 , Uc(0)=320 , получим I1(0) = 0 , тогда

 

40

=E/L=320/0,01=32000. .  А=32000/1000 = 32.

Уравнение  и окончательное значение зависимости

тока катушки от времени .

 

 

 

 

 

 

 

 

 

 

 

 


Рисунок 6.2 - График  зависимости тока катушки от времени

 

          6.2 Порядок выполнения лабораторной работы

 

6.2.1 В схеме (рисунок 6.3) выберите направления токов ветви.

6.2.2 Напишите значения IL(0) и Uc(0) до коммутации и после при t=0.

6.2.3 Используя законы Кирхгофа , найдите значения ILпр.

6.2.4 Через входное сопротивление составьте характеристическое уравнение  и найдите ее корни.

6.2.5 Найдите составляющее тока ILсв . Напишите уравнение зависимости тока катушки от времени и постройте ее график.

6.2.6 Составьте программу на С++ для расчета переходного процесса и   

вычерчивания графика зависимости тока от времени.      

6.2.7 Сопоставьте расчеты и сделайте анализ.

 


         

 

Дана цепь:

R1=15   Ом

R2=200 Ом

L=0,01  Гн

C=2 мкФ

I=3 A

 
 

 

 

 

 

 

 

 

 


                                        Рисунок 6.3

41

          6.3 Контрольные вопросы

 

6.3.1 Переходные процессы.

6.3.2 Что называется классическим методом расчета переходного процесса?

6.3.3 Коммутация. Законы коммутации.

6.3.4 Перечислите корни характеристического уравнения и напишите  

соответствующие значения свободного составляющего тока.

6.3.5 Какие способы используются при составлении характеристичес-кого уравнения цепи.

        

 

 

 

Список литературы

 

1. Фридман А.Л.Язык программирования С++. Курс лекций.

- Москва: Интернет-Университет информационных технологий, 2003.

2. Лафоре Р. Объектно – ориентированное программирование в С++. 

- Санкт-Петербург: Питер, 2003.

3. Подбельский В.В. Язык СИ++: Учебное пособие. –М.: Финансы и статистика, 2001.

4. Культин Н. С/С++ в задачах и примерах. – Санкт-Петербург: БХВ-Петербург, 2004.

5. Жунусов З.А., Сакабаев Н.К. Основы программирования. Построение  алгоритмов и программирование на языке паскаль. –Алматы: АИЭС, 2002.

 

 

Содержание

 

Введение……………………..……………………….………………..3

1 Лабораторная работа №1. Операторы языка С++. Массивы…..…4

2 Лабораторная работа №2. Функция. Структуры.

   Объекты и классы. Наследования………………………..……..….10

3 Лабораторная работа №3. Исследование линейных

   двухполюсных электрических цепей……………………..……….18

4 Лабораторная работа №4. Определение общего

   сопротивления цепи методом замены звезда-треугольник

   (треугольник-звезда)…………………………………………….…..23

5 Лабораторная работа №5. Определение методом наложения

   напряжения и тока в цепи…………………………………………...29

6 Лабораторная работа №6. Переходные процессы…………………36
Список литературы……………………………………………..……...42

42

 

Сводный план 2002 г., поз______

 

 

 

 

Бимагамбетов Толеугали Сапарович

 

 

 

 

ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА РАЗРАБОТКИ ПРОГРАММ

Методические указание к выполнению лабораторных работ

(для студентов всех форм обучения специальности

3501 – Электронные системы и технологии)

 

 

 

 

 

          Редактор        Ж. М. Сыздыкова

          Специалист по стандартизации Н. М. Голева

 

 

 

 

Подписан в печать ____________                     Формат 60х84    12/16

Тираж 50 экз                                                        Бумага типографская №1

Объем 1.8 уч.-изд.л.                                             Заказ _____. Цена

 

 

 

 

 

 

 

 

 

 

 

 

 

Копировально-множительное бюро

Алматинского института энергетики и связи

480013 Алматы, Байтурсынова 126