Кафедра промышленной электроники — КиберПедия 

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Кафедра промышленной электроники

2022-12-30 17
Кафедра промышленной электроники 0.00 из 5.00 0 оценок
Заказать работу

Ю.Н. Тановицкий, Д.А. Савин

МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ И ПРОГРАММИРОВАНИЕ

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

для студентов специальности 210106

«Промышленная электроника»

ТОМСК – 201 5


Министерство образования и науки

Российской Федерации

 

Томский университет систем управления и радиоэлектроники (ТУСУР)

 

 

Кафедра промышленной электроники

Ю.Н. Тановицкий, Д.А. Савин

 

 

МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ И ПРОГРАММИРОВАНИЕ

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

для студентов специальности 210106

«Промышленная электроника»

201 5

 

 

Тановицкий Ю.Н., Савин Д.А.

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

 

 

Ó Тановицкий Ю.Н., 2015

Ó Савин Д.А., 2015

Ó ТУСУР, 2015


ОГЛАВЛЕНИЕ

 

 

Введение                                    --------------------------------- 5

Рейтинговая система для оценки успеваемости ------------------ 7

Темы практических занятий     ------------------------------------- 8

Лабораторная работа №1              ------------------------------------ 9

Лабораторная работа №2              ------------------------------------ 17

Лабораторная работа №3              ------------------------------------ 23

Лабораторная работа №4              ------------------------------------ 30

Индивидуальное задание №1       ------------------------------------ 35

Индивидуальное задание №2       ------------------------------------ 38

 

 


ВВЕДЕНИЕ

 

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

Место дисциплины в структуре ООП: Дисциплина «Математическое моделирование и программирование» относится к базовой части дисциплин по выбору (Б2.В) направления 210100.62 «Электроника и наноэлектроника». Для освоения дисциплины необходимы знания предшествующих дисциплин: «Математика», «Информационные технологии», «Теоретические основы электротехники», «Инженерные расчеты в Маткад». Знания и навыки, полученные в ходе изучения данной дисциплины, используются в следующих дисциплинах: «Методы анализа и расчета электронных схем», «Схемотехника», «Научно-исследовательская работа», «Основы преобразовательной техники», «Энергетическая электроника».

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

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

- способность использовать основные законы естественно научных дисциплин в профессиональной деятельности, применять методы математического анализа и моделирования, теоретического и экспериментального исследования (ОК-10);

- способность владеть основными методами, способами и средствами получения хранения и переработки информации, иметь навыки работы с компьютером как средством управления информацией (ОК-12);

- способность владеть основными приемами обработки представления экспериментальных данных (ПК-5);

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

- способность разрабатывать модели исследуемых процессов, материалов, элементов и устройств электронной техники (ПСК-4).

В результате изучения дисциплины студент должен:

знать: основные этапы процесса моделирования, способы представления и хранения комплексных данных;

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

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


ТЕМЫ ПРАКТИЧЕСКИХ ЗАНЯТИЙ

 

Занятие 1. Создание и редактирование HTML/XML документов. Каскадные таблицы стилей CSS (2 часа).

Элементы HTML/XML документов. Структура  HTML документа, примеры создания списков, ссылок, таблиц. Каскадные таблицы стилей, элементы CSS. Изменение оформления документа с помощью CSS.

Занятие 2. Язык JavaScript и реализация интерактивности в HTML/XML документах (2 часа).

Конструкции языка JavaScript. Модель DOM. Изменение свойств элементов в ответ на действия пользователя.

Занятие 3. Контрольная работа 1. «Составить html-код документа с заданными свойствами и структурой.» (2 часа).

Занятие 4. Построение частотных характеристик электрической цепи в Mathcad, ASIMEC (2 часа).

Составление структурной матрицы. Метод узловых потенциалов. Знакомство со средой ASIMEC. Создание схемы в ASIMEC. Получение частотных характеристик.

Занятие 5. Построение графика переходного процесса электрической цепи в MathCad, ASIMEC (2 часа).

Решение задачи Коши. Получение графика переходного процесса.

Занятие 6. Контрольная работа 2. «Реализовать математическую модель электрической цепи в среде MathCad.» (2 часа).

Занятие 7. Знакомство со средой программирования Microsoft VisualStudio и особенности работы консольных приложений на языке C++ в ней (2 часа).

Создание консольного приложения. Знакомство со структурой консольного приложения. Операторы языка C++. Создание и использование функций.

Занятие 8. Основы объектно-ориентированного программирования на языке C++ в среде MS VisualStudio (2 часа).

Создание класса. Наследование и полиморфизм. Объявление экземпляра класса и работа с ним.

Занятие 9. Знакомство с библиотекой STL C++ в среде MS VisualStudio (2 часа).

Знакомство с шаблонами в C++. Основные типы данных STL. Контейнеры STL. Итераторы. Основные операции с контейнерами.

Занятие 10. Контрольная работа 3. «Привести текст программы C++, позволяющей принимать и хранить в памяти произвольное количество объектов заданного типа.» (2 часа).


ЛАБОРАТОРНАЯ РАБОТА № 1

ВВЕДЕНИЕ

 

Целью работы является знакомство технологией описания внешнего вида HTML документа – каскадными таблицами стилей (Cascading Style Sheets, CSS).

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

 

ОПИСАНИЕ CSS

 

CSS при отображении страницы может быть взят из разных источников:

1. Стили предоставляемые автором HTML страницы в виде:

a. Внешних таблиц стилей, то есть отдельного файла с расширением.css, на который делается ссылка в документе (внутри элемента head помещается элемент: <link href="styles.css" rel="stylesheet" type="text/css">, где атрибут href содержит имя CSS файла);

b. Встроенных стилей – блоков CSS внутри документа, при этом внутри элемента head помещается элемент style, содаржащий стили:

 

<style type="text/css">

<!—

a {

color: #FF0000;

}

-->

</style>

c. Inline-стилей, когда стиль одного элемента указывается в его атрибуте style (например: <li style="color:#00CCFF; font-size:16px;">Лабораторная №1</li>);

2. Пользовательские стили (Локальныей.css файл, указанный пользователем в настройках браузера и переопределяющий авторские стили);

3. Стандартные стили браузера (используются браузером по-умолчанию, при отсутствии первых двух источников).

 

Стандарт CSS определяет приоритеты, в порядке которых применяются правила стилей, если для какого-то элемента подходят несколько правил одновременно. Это называется «каскадом» в котором для правил рассчитываются приоритеты, что делает результат предсказуемым. При этом вложенные элементы, если для них не определены собственный свойства, наследуют свойства элементов, в которые они помещены.

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

Селектор1, селектор2 {

Свойство1: значение1;

Свойство2: значение2;

}

 

Виды селекторов:

1. Селекторы применяющиеся ко всем элементам с заданным именем:

h1, h2 {

font-size: 24px;

}

Все элементы h 1 и h 2 в документе будут иметь размер шрифта 24 пикселя;

2. Контекстные селекторы:

h1 i {

color: red;

}

Все элементы < i >, находящиеся внутри элементов < h 1> будут красного цвета (например: < h 1>Заголовок < i >частично красным курсивом</ i ></ h 1>);

3. Классы:

.class_name {

background-color: black;

}

Задает всем элементам, имеющим атрибут class со значением, равным имени класса черный цвет фона (например: < td class =” class _ name ”>Данные</ td >);

4. ID-классы:

p#pname {

margin: 0;

}

Задает всем элементам p, имеющим атрибут id со значением, равным части селектора после символа решетки, задать нулевой отступ (например: < p id =” pname ”>Параграф без отступа</ p >);

5. Псеводклассы:

a:link { color: red; }

a:visited { color: green; }

a: hover { color: blue; }

a:active { color: white; }

link, active, visited, hover – эти пceвдoклaccы иcпoльзуютcя тoлькo c элементом <a> и определяют стиль отображения обычной, активной, посещенной ссылок, а также ссылки, над которой находится курсор мыши. Стиль a:hover должен располагаться после стилей a:link и a:visited, иначе правила каскадирования скроют свойство "color" стиля a:hover. Аналогично, благодаря тому, что a:active определен после a:hover, активная ссылка отображается белым цветом, когда пользователь устанавливает указатель поверх элемента < a > и одновременно активизирует его.

 

Приоритетность стилей определяется по нескольким классификациям.

1. По источнику, в порядке возрастания приоритета:

a. Внешняя таблица стилей;

b. Таблица встроенных стилей;

c. Inline-стили;

2. По виду селектора, в порядке возрастания приоритета:

a. Селекторы применяющиеся ко всем элементам с заданным именем;

b. Контекстные селекторы, псевдоклассы;

c. Классы, ID-классы;

3. По контексту: Стили применяющиеся к узкому контексту приоритетнее стилей применяющихся к широкому контексту;

4. По порядку вхождения: при прочих равных приоритетнее правило объявленное позже.

 

Некоторые свойства стилей и их описания:

color – определяет цвет текста элемента (например: color: white – устанавливает белый цвет, color: # FFFFFF – устанавливает белый цвет, запись цвета в шестнадцатиричном виде);

background - color – задает цвет фона элемента (например: background - color: yellow – задает желтый цвет фона);

font - family – устанавливает семейство шрифта элемента. Список шрифтов может иметь одно или несколько имен шрифтов, разделенных через запятую. Если на компьютере отсутствует первый шрифт, будет взят следующий и т.д. (например: f ont-family: Arial, Helvetica, sans-serif);

font - size – позволяет задать размер шрифта текста (например: font - size: 16 px – размер шрифта 16 пикселей, font - size: 9 pt – размер шрифта 9 пунктов, font - size: 10 mm – размер шрифта 10 миллиметров);

font-style – определяет начертание шрифта, может принимать значения: normal – обычное начертание, italic – курсив, oblique – наклонный шрифт;

text-decoration – задает оформление текста, в виде мигающего текста, подчеркиваний, перечеркиваний. Можно задавать несколько значений через пробел. Значения: blink – мигающий текст, line - through – перечеркнутый текст, overline – линия над текстом, underline – линия под текстом, none – отменяет все эффекты;

text-align – определяет выравнивание текста элемента по горизонтали, может принимать значения: left – по левому краю, right – по правому краю, center – по центру, justify – выравнивание по ширине;

border – устанавливает одновременно цвет, толщину и стиль рамки вокруг элемента. Записывается в виде: border: border - width border - style color. Где border - width – ширина рамки, border - style – стиль рамки (значения: dotted, dashed, solid, double, groove, ridge, inset, outset), color – цвет. Например border: 3 px solid red задает красную рамку, нарисованную сплошной линией толщиной в 3 пикселя.

 

 

Список свойств стилей с описанием можно посмотреть по ссылке: http://www.htmlbook.ru/css/

 

ПРОГРАММА РАБОТЫ

 

1. Создайте с помощью текстового редактора (например notepad) на локальном диске, в той же папке что и html-файл, файл с именем styles. css.

2. Добавьте в файл стилей четыре псевдокласса с разными цветами для элемента < a >. Сохраните файл.

3. В html-файле создайте гиперссылку а так же пропишите ссылку на внешнюю таблицу стилей styles.css Сохраните файл.

4. Запустите веб браузер, откройте созданный документ. Проверьте как меняется цвет ссылки, в зависимости от различных событий(Активная ссылка не должна изменять свой цвет при наведении на неё курсора мыши). Измените файл стилей таким образом, чтобы активная ссылка изменяла свой цвет при наведении на неё курсора мыши. Результат покажите преподавателю.

5. Отредактируйте документ и таблицу стилей и создайте список в соответствии с вариантом (стиль списка создайте с помощью селектора применяющегося ко всем элементам с заданным именем, стиль элементов списка - с помощью контекстного селектора, оба стиля должны быть встроенными. Стиль одного элемента списка объявите Inline). Результат покажите преподавателю. Поясните результат.

6. Отредактируйте документ и таблицу стилей и создайте таблицу в соответствии с вариантом. Стили объявите как классы и поместите во внешнюю таблицу стилей. Результат покажите преподавателю.

 

ВАРИАНТЫ РАБОТЫ

1. Список №1, таблица №1

2. Список №1, таблица №2

3. Список №2, таблица №1

4. Список №2, таблица №2

5. Список №3, таблица №1

6. Список №3, таблица №2

 

Варианты списков:

1.

2.

3.

Варианты таблиц:

1.

2.

 

 


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

ВВЕДЕНИЕ

Целью работы является знакомство с базовыми принципами создания программ с использованием объектно-ориентированного подхода на примере языка JavaScript.

 

JavaScript — скриптовый язык, чаще всего использующийся при создании сценариев поведения браузера, встраиваемых в веб-страницы. Является одной из реализаций языка ECMAScript.

 

ОПИСАНИЕ ЯЗЫКА JAVASCRIPT

 

Для встраивания сценария JavaScript в документ HTML используется специальный элемент, прописанный внутри элемента head:

<html>

<head>

<script type="text/javascript">

alert(‘Hello World!’);

</script>

</head>

<body>

Hello World script

</body>

</ html >

Все, что находится внутри тегов < script > и </ script > является сценарием JavaScript.

 

СИНТАКСИС ЯЗЫКА JAVASCRIPT

 

Программа, написанная на JavaScript, состоит из набора операторов. Оператор (или инструкция) – это наименьшая автономная часть языка программирования, команда. Каждый оператор должен заканчиваться символом точка с запятой (;). Типы данных языка: Null (пустое тип, может принимать только значение null), Boolean (булевый тип данных, принимает значения true (истина), false (ложь)), Number (числовой тип), String (строковый тип). Строковые константы заключаются в кавычки, либо апострофы (например: “Это строка”, 'Это строка', “Это строка содержит внутри ‘апострофы’ ”, ‘Эта строка содержит внутри “кавычки”’).

Операторы JavaScript:

Блок операторов: { operator1; operator2; … }

Объявление переменной: var i;

Объявление массива: v ar arr = new Array ();

Объявление функции: function myfunc(param1, param2) { }

Оператор присвоения: i = 10; s = ‘ Hello ’;

Доступ к элементу массива: s = arr [ i ];

Доступ к свойствам и методам объектов: n = arr. length (); Записывает в n результат вызова метода определения длинны массива.

arr. document. getElementById (“ dynamic ”); вызывает метод getElementbyId объекта document со строковым параметром.

Математические операторы:

Сложение: c = a + b; или a = a + b; эквивалентно a += b;

Вычитание: c = a - b; или a = a - b; эквивалентно a -= b;

Умножение: c = a * b; или a = a * b; эквивалентно a *= b;

Деление: c = a / b; или a = a / b; эквивалентно a /= b;

Остаток от деления: c = a % b; или a = a % b; эквивалентно a %= b;

Инкремент: c ++; эквивалентно c = c +1; эквивалентно с+=1;

Декремент: c --; эквивалентно c = c -1; эквивалентно с-=1;

Условный оператор:

if (условие) {

 блок операторов, если условие истинно

}

e lse {

блок операторов, если условие ложно

}

Например: if (a < b) { a = b;} else { b = a;} Если значение a меньше значения b, то переменной a присвоится значение переменной b. Иначе, переменной b присвоится значение переменной a.

Переключатель:

switch (a) {

case 1: func1();

break;

case 2: func2();

  break;

default: funcdefault();

break;

}

В зависимости от значение переменной a, вызывается соответствующий блок операторов, или блок операторов по-умолчанию (default)

Операторы цикла:

    Цикл «пока» (условие проверяется перед выполнением тела цикла):

    while (условие) {

    блок операторов выполняется, пока выполняется условие

    }

    Цикл «пока» с постусловием (условие проверяется после выполнения тела цикла):

    do {

    блок операторов выполняется, пока выполняется условие

    } while (условие);

Цикл for:

for (начальные условия; условие выполнения; итерационные операции) {

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

}

Например: for (i = 0; i < 10; i ++) { alert (string [ i ]); } Перед выполнением цикла обнулится переменная i. До тех пор, пока значение переменной i меньше 10, будет выполнятся вызов функции alert (sring [ i ]) с текущим значением i. И после вызова, значение I будет инкрементироваться.

Операторы сравнения:

    Оператор меньше: a < b возвращает истину, если a меньше чем b

    Оператор больше: a > b возвращает истину, если a больше чем b

    Оператор равно: a == b возвращает истину, если a равно b

    Оператор неравно: a!= b возвращает истину, если a не равно b

    Оператор меньше или равно: a <= b возвращает истину, если a меньше или равно b

    Оператор больше или равно: a >= b возвращает истину, если a больше или равно b

Логические операторы:

    Оператор «не»:! a возвращает истину, если a ложно, возвращает ложь, если a истинно

    Логическое «И»: a&&b возвращает истину, если a и b истинны, иначе возвращает ложь

    Логическое «ИЛИ»: a||b возвращает истину, если хотя бы одно из a или b истинно, иначе возвращает ложь

    Логическое «Исключающее ИЛИ»: a^^b возвращает истину, если истинно только одно из значений a или b, иначе возвращает ложь

Побитовые операторы:

    Побитовое «И»: c = a&b;

    Побитовое «ИЛИ»: c = a|b;

    Побитовое «Исключающее ИЛИ»: c = a^b;

 

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

 

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

< html >

<head>

<title>Математическое моделирование и программирование. Лабораторная №4</title>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<script language="JavaScript" type="text/javascript">

function Calculate()

    { // начало функции

    var p1; // Инициализируется переменная p1 - для узла элемента

        p1 = document.getElementById("p1"); // В переменную p1 присваивается элемент

    // документа, имеющий строку p1 в атрибуте id

    var p2; // Инициализируется переменная p2 - для узла элемента

         p2 = document.getElementById("p2"); // В переменную p2 присваивается элемент

    // документа, имеющий строку p2 в атрибуте id

    var res; // Инициализируется переменная res - для узла элемента

  res = document.getElementById("res"); // В переменную p2 присваивается элемент

    // документа, имеющий строку res в атрибуте id

    var r; // Инициализируется переменная для помещения результата

    r = 1*p1.value + 1*p2.value; // c помощью умножения на единицу переводятся

    // значения текстовых полей из строковых в числовые, после этого складываются

    res.value = r //результат помещается в текстовое поле res

    if(r == 0) { // Если результат равен 0

    alert('Результат расчета равен 0'); // Вывести сообщение

    } // конец условия

    } // конец функции

</ script >

</head>

<body>

<form name="calc">

<input name="p1" type="text" id="p1" size="10">

 +

 <input name="p2" type="text" id="p2" size="10">

 =

 <input name="res" type="text" id="res" size="10">

 <input type="button" name="Button" value=" Посчитать " onClick="Calculate();">

</form></body>

</html>

 

ПРОГРАММА РАБОТЫ

1. Создайте с помощью текстового редактора (например notepad) на локальном диске html документ, соответствующий варианту;

2. Добавьте в html документ код на JavaScript для реализации интерактивности согласно варианту;

3. Откройте документ в браузере, и проверьте функионирование JavaScript. Продемонстрируйте работу программы преподавателю.

 


ВАРИАНТЫ РАБОТЫ

 

Список в виде «дерева» с раскрывающимися элементами (не менее 2х уровней вложенности). Студенты по группам

После нажатия на строку, она раскрывается

По следующему нажатию происходит сворачивание.

 

 


2. Список в виде «дерева» с раскрывающимися элементами (не менее 2х уровней вложенности). Структура подразделений ТУСУР (из справочника)

После нажатия на строку, она раскрывается


По следующему нажатию происходит сворачивание.

Калькулятор (простой)

При нажатии кнопок, текст появляется в окошке, а после нажатия кнопки “=” происходит вычисление


11. Редактор цветов макета (возможность выбора цвета фона и цвета шрифта для каждого элемента). Оформление макета меню столовой (день, завтрак, обед, ужин)

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


12. Редактор цветов макета (возможность выбора цвета фона и цвета шрифта для каждого элемента). Расписание занятий на день (день, 5 пар)

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

 


13. Тестовое задание. Выбор одного правильного варианта из нескольких.

После выбора одного из трех вариантов, и нажатия кнопки проверить, происходит проверка и вывод надписи «Верно»

Или «Не верно»

 


14.  Тестовое задание. Выбор нескольких правильных вариантоы из нескольких.

После выбора нужных вариантов, и нажатия кнопки Проверить, происходит проверка ответов и вывод надписи «Верно»

Или «Не верно»


15. Тестовое задание. Ввод ответа в текстовое поле.

 

После ввода ответа, и нажатия кнопки Проверить, происходит проверка ответа и вывод надписи «Верно»

Или «Не верно»

 


ЛАБОРАТОРНАЯ РАБОТА № 3

ВВЕДЕНИЕ

 

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

 

ОПИСАНИЕ РАБОТЫ

 

Операции получения структурной матрицы просты и рассматриваются на лекции.

 

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

 

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

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

R,L,C,V, J, I

Где R-резистивные элементы, L-индуктиваности, С-емкости, V-вольтметры источников тока управляемых напряжением (ИТУН); J-источники тока, управляемые напряжением, I- независимые источники токов.

При этом вектор токов будет иметь вид -

IВ = [IR,IL,IC,IV, J, I]^T,

а вектор всех напряжений -

UВ = [UR,UL,UC,V, UJ,UI]^T

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

Aстр*IB = 0

 

Схематично матрицу Aстр, с учетом принятого деления ветвей, можно изобразить как показано в таблице ниже

 

 

Ветви

IR IL IC IV J I
Узлы   AR   AL   AC   AV   AJ   AI

 

где матрице Aстр соотвествует часть таблицы, выделенная бирюзовым цветом.

Также 1-й закон Кирхгофа можно записать в виде

 

AR* IR + AL* IL + AC * IC + AV * IV + AJ * J + AI * I = 0.

 

Aстр = [AR | AL | AC | AV | AJ | AI]

 

Матицы Ai – состоят из элеменов -1, 0 или +1. Каждый столбец содержит -1 ставится в клетке соответствующей у

 

ПРОГРАММА РАБОТЫ

 

1. Для заданной схемы составьте (на листе бумаги) направленный граф, обозначьте ветви и пронумеруйте узлы. При необходимости замените многовыводные компоненты двух выводными.

2. Запишите нет-лист (на листе бумаги).

3. Отсортируйте элементы в следующем порядке R,L,C, V, J, I. Порядок сортировки V элементом должен быть таким же как и J-элементов, это позволит использовать компонентное уравнение для J вида J=K*V, где K – диагональная матрица коэффицентов преобразования (напряжений вольтметров в токи зависимых источников J).

4. Запустите Маткад. Запишите нет-лист в форме матриц в программе MatCad

Как показано ниже для элементов R-типа

 

Назв. Элемента Положит. Узел (от которого отходит стрелка на графе) Отриц. узел, в который направлена стрелка графа
R2 1 0
R3 3 6
R4 7 2

Обозначим полученную матрицу символом NLR (Net-List for R-)

 

 

5. Запишите аналогичные матрицы для всех остальных элементов

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

AR = makeA(nodes,NLR)

где nodes – общее число узлов в схеме.

Получите все структурные подматрицы схемы - AR | AL | AC | AV | AJ | AI

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

DR = makeD(NLR)

где DR = [R1,R2,…,RN]T

8. Получите все одностолбцовые матрицы - DR DL DC DK

 


ВАРИАНТЫ СХЕМ

 

Схема 1

Схема 2

Схема 3

Схема 4

Схема 5

Схема 6

Схема 7

Схема 8

Схема 9

Схема 10

Схема 11

 

ПРИЛОЖЕНИЕ №1

Схемы замещения многовыводных компонентов

 

Операционный усилитель замещается тремя ветвями, как показано на рисунке

Обратите внимание! Обычно вывод «земля» на выходе усилителях не обозначается, но физически, конечно, присутствует. Поэтому ExtPin4 заземляется. Вход усилителя, помеченный кружочком, соответствует ExtPin2, без кружочка - ExtPin1. Выходу соответствует ExtPin3.

 

Идеальный трансформатор с коэффициентом передачи 2, ко вторичной обмотке замещается 7-ю ветвями

 


ЛАБОРАТОРНАЯ РАБОТА № 4

ПРИМЕНЕНИЕ БИБЛИОТЕКИ STL ДЛЯ НАПИСАНИЯ ПРОГРАММ НА C ++

 

ВВЕДЕНИЕ

Целью работы является знакомство со стандартной библиотекой шаблонов (STL) и использование её для написания программ.

 

STL (стандартная библиотека шаблонов) — библиотека, основанная на технологии шаблонов C++ содержащая набор контейнеров, средств доступа к содержимому, алгоритмов и функций.

 

ОПИСАНИЕ STL

 

В библиотеке можно выделить 5 основных элементов:

4. Контейнер

5. Итератор

6. Алгоритм

7. Адаптер

8. Функтор

 

Контейнеры предназначены для хранения наборов данных. Можно выделить несколько типов контейнеров: линейные, ассоциативные, контейнеры-адаптеры и псевдоконтейнеры.

Итераторы используются для доступа к данным внутри контейнеров. Итератор – это «умный» указатель, определенный для каждого типа контейнера, способный обращаться к данным контейнера, для которого он определен.

Алгоритм – стандартные алгоритмы для выполнения типовых операций (поиска значения, минимума, максимума и т.п.)

Адаптер – классы, обеспечивающие преобразование интерфейса. Различают адаптеры контейнеров (контейнеры-адаптеры), адаптеры итераторов и адаптеры функций.

Функтор – это функциональный объект, обладающий свойствами функции, а так же дополнительными преимуществами

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

 

ИСПОЛЬЗОВАНИЕ STL

 

Для использования контейнера STL необходимо подключить соответствующую библиотеку (для каждого контейнера своя библиотека), делается это с помощью директивы #include в начале текста программы:

#include <vector>

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

#include <algorithm>

Далее необходимо разрешить использование пространства имен std:

using namespace std;

После этого можно объявлять переменную, допустим для вектора целых чисел:

vector<int> ivector;

Добавление 10 элементов в контейнер с помощью метода push_back, значения вводятся пользователем:

for(int i = 0; i < 10; i++)

{

int v;

cin >> v;

ivector.push_back(v);

}

Вывод содержимого вектора, с помощью итераторов:

vector<int>::iterator it;

for(it = ivector.begin(); it!= ivector.end(); it++)

cout << *it << " ";

cout << endl;

в первой строке объявляется итератор для контейнера – переменная it, затем организовывается цикл от самого первого итератора (функция begin()) до последнего (функция end() возвращает несуществующий итератор). Вывод значения, хранящегося в контейнере осуществляется в третьей строке с помощью оператора разименования итератора: *it. В четвертой строке осуществляется вывод символа перевода строки.

Для использования алгоритма сортировки сначала необходимо объявить функцию сравнения, объявим две функции: fless для сортировки по возрастанию и fgreat для сортировки по убыванию:

bool fless(int a, int b)

{

return a < b;

}

bool fgreat(int a, int b)

{

return a > b;

}

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

sort(ivector.begin(), ivector.end(), fless);

а по возрастанию:

sort(ivector.begin(), ivector.end(), fgreat);

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

Поиск значения осуществляется с использованием функии find, в качестве параметров ей надо передать диапазон поиска: итератор первого и последнего элемента:

it = find(ivector.begin(), ivector.end(), 5);

if(it == ivector.end())

       cout << "Значение не найдено" << endl;

else

       cout << "Найденное значение: " << *it << endl;

в первой строке осуществляется поиск значения 5 в контейнере, итератор на найденный элемент сохраняется в it. Если значение в контейнере не было найдено, то итератор будет равен итератору конца (ivector.end()). Во второй строке осуществляется проверка было ли значение найдено. Если нет – выводится строка «Значение не найдено», если найдено – «Найденное значение:» и вывод самого значения по итератору.

Работа с контейнерами list и deque


Поделиться с друзьями:

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

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.473 с.