Математическое моделирование физических задач на ЭВМ icon

Математическое моделирование физических задач на ЭВМ



НазваниеМатематическое моделирование физических задач на ЭВМ
Дата конвертации31.07.2012
Размер239.22 Kb.
ТипРеферат
Математическое моделирование физических задач на ЭВМ


Министерство народного образования Приднестровский Государственный Университет им. Т.Г. Шевченко Физико-математический факультет Кафедра общей физики и методики преподавания физики Кафедра информатики и вычислительной техники Дипломная работа Математическое моделирование физических задач на ЭВМ На примере расчета разветвленных цепей постоянного тока основанного на использовании законов Кирхгофа Выполнил: Студент 506 группы Коваленко А.С. Научные руководители: Кандидат физико-математических наук, доцент Цыпишка Д.И. Кандидат физико-математических наук, доцент Брагарь Л.Ф. Тирасполь, 2000г. Содержание:Введение 3 1. Напряжение и ток в электрической цепи 4 2. Резистивный элемент 5 3. Источники 6Глава 1. Задача анализа разветвленной цепи 7Глава 2. Пример. Результаты вычислений 9Глава 3. Методика моделирования 10 1. Линейный граф и матрица соединений 10 2. Уравнения контурных токов 13 3. Алгоритм формирования узловых уравнений 16Заключение 17Использованная литература 18Приложение 19 Введение Все электротехнические и радиотехнические устройства представляютсобой электромагнитные устройства, главные процессы в которых подчиняютсяобщим законам электромагнетизма. В любом электромагнитном устройствепроисходит движение электрических зарядов, неразрывно связанное сизменяющимся во времени и пространстве электромагнитным полем, двумясторонами которого являются электрическое и магнитное поля. Электромагнитные процессы сопровождаются взаимным преобразованиемэлектромагнитной энергии в другие виды энергии. Точный анализ этихпроцессов, описываемых системами уравнений в частных производных(уравнениями Максвелла), - задача, трудно разрешимая даже в простейшихслучаях. Но для инженерных расчетов и проектирования устройств необходимколичественный анализ. Поэтому возникает потребность в приближенных методаханализа, позволяющих с достаточной степенью точности решать широкий кругзадач. Такие методы дает теория электрических цепей, которая дляхарактеристики электромагнитных процессов вместо векторных величин теорииполя, зависящих от пространственных координат и времени, вводитинтегральные скалярные величины – ток и напряжение, являющиеся функциямивремени. Для приближенного учета процессов преобразования электромагнитнойэнергии в теории цепей вводят идеальные элементы с выводами или полюсами,через которые проходит электрический ток. Простейшими идеальными, базиснымиэлементами являются двухполюсные элементы с двумя полюсами или выводами –индуктивный, емкостный и резистивный элементы, учитывающие накоплениеэнергии в магнитном и электрическом полях и необратимое преобразованиеэлектромагнитной энергии в другие виды энергии. Для учета преобразованияэнергии неэлектрической природы (химической, механической, тепловой и т.д.) в электромагнитную энергию вводят элемент с двумя выводами, называемыйисточником. Наряду с указанными вводят четырехполюсные и многополюсныеэлементы в общем случае с n выводами.
Соединяя между собой соответствующим образом эти идеальные элементы,получают электрическую цепь, приближенно отображающую электромагнитныепроцессы в каком-либо устройстве по отношению к интересующим выводам. Теория цепей применима к большому числу устройств, в которыхпредставляют интерес процессы в отдельных точках – выводах. В настоящее время существуют методы и средства расчетарадиотехнических цепей на основе математических моделей, представляющиесобой в общем случае системы нелинейных дифференциальных уравнений. Однимиз многих таких средств является программа, предложенная в [1], котораяпредставляет собой реализацию математической модели расчета цепейпостоянного тока. Программа работает следующим образом: пользователь вводитвсе данные для расчета цепи, самостоятельно производя анализ цепи, т.е. онвводит количество узлов, количество ветвей с элементами, находящимися наних и номиналы этих элементов. Програма решает получающиеся при этомлинейные уравнения и выводит результат вычислений. Недостатком указанных выше программных средств является отсутствиеавтоматизированного построения разветвленных цепей, ввода элементов, выборанаправления обхода контуров и токов в ветвях по введенной принципиальнойсхеме. Кроме этого существующие программы не позволяют непосредственно прирасчетах проводить анализ полученных результатов, в динамике изменятьпараметры компонентов. В связи с этим целью дипломной работы является: разработкаматематической модели и программы анализа и расчета цепей постоянного тока,автоматического выбора направления обхода контура и направления токов вветвях цепи, и выводить результаты вычислений. В данной дипломной работе рассматривается метод расчета и анализалинейных разветвленных цепей содержащих резистивные элементы и источникиЭДС с постоянными параметрами элементов основанный на использовании законовКирхгофа. 1. Напряжение и ток в электрической цепи Электрический ток и напряжение являются основными величинами,характеризующими состояние электрических цепей. Электрический ток в проводниках представляет явление упорядоченногодвижения электрических зарядов. Под термином «ток» понимают такжеинтенсивность или силу тока, измеряемую количеством электрического зарядаq, прошедшего через поперечное сечение проводника в единицу времени: [pic] Следовательно, ток представляет собой скорость изменения заряда вовремени. В СИ заряд выражается в кулонах (Кл), время – в секундах (с), ток– в амперах (А). Ток как отношение двух скалярных величин является скалярнойалгебраической величиной, знак которой зависит от направления движениязарядов одного знака, а именно условно принятого положительного заряда. Дляоднозначного определения знака тока за положительное направление достаточнопроизвольно выбрать одно из двух возможных направлений, которое отмечаютстрелкой (рис. 1.1, а). [pic] Если движение положительного заряда происходит в направлении стрелки,а движение отрицательного заряда—навстречу ей, то ток положителен. Приизменении направления движения зарядов на противоположный ток будетотрицательным. Перед началом анализа на всех участках цепи необходимо отметитьположительные направления токов, выбор которых может быть произвольным.Программа расчета построена так, что за положительное направление токапринято направление движения «по часовой стрелке». Прохождение электрического тока или перенос зарядов в цепи связаны спреобразованием или потреблением энергии. Для определения энергии,затрачиваемой на перемещение заряда между двумя рассматриваемыми точкамипроводника, вводят новую величину – напряжение. Напряжением называют количество энергии, затрачиваемой на перемещениеединицы заряда из одной точки в другую: [pic] где w—энергия. При измерении энергии в джоулях (Дж) и заряда в кулонах (Кл)напряжение выражают в вольтах (В). Напряжение как отношение двух скалярных величин также являетсяскалярной алгебраической величиной. Для однозначного определения знаканапряжения между двумя выводами рассматриваемого участка цепи одному извыводов условно приписывают положительную полярность, которую отмечают либострелкой, направленной от вывода, либо знаками «+», «-» (рис. 1.1, б, в).Напряжение положительно, если его полярность совпадает с выбранной; этоозначает, что потенциал вывода со знаком «+», из которого выходит стрелка,выше потенциала второго вывода. Перед началом анализа должны быть указаны выбранные положительныеполярности напряжений – только при этом условии возможно однозначноеопределение напряжений. В программе по умолчанию каждому источнику ЭДСприписывают «+» к высшему потенциалу, а «-» – к низшему. Положительную полярность напряжения выбирают согласованной с выбраннымположительным направлением тока, когда стрелки для тока и напряжениясовпадают или знак «+» полярности напряжения находится в хвосте стрелки,обозначающей положительное направление тока. При согласованном выбореполярности, очевидно, достаточно ограничиться указанием только однойстрелки положительного направления тока. Для обозначения условно положительной полярности применяют знаки «+»,«-» у выводов участка цепи. 2. Резистивный элемент Под резистивным элементом электрической цепи или активнымсопротивлением понимают идеализированный элемент, в котором происходиттолько необратимое преобразование электромагнитной энергии в теплоту илидругие виды энергии, а запасание энергии в электрическом и магнитном поляхотсутствует. По свойствам к этому идеальному элементу довольно близки такиереальные устройства, как угольные сопротивления, реостаты, лампынакаливания при относительно небыстрых изменениях токов. Условное графическое обозначение резистивного элемента Представлено нарис. 1.2, а, где указаны принятые положительные направления напряжения итока. [pic] Основное уравнение элемента, связывающее ток и напряжение, такназываемая вольт-амперная характеристика, определяется законом Ома, которыйустанавливает пропорциональность между напряжением и током: U=RI, I=GU (1.3) Коэффициент пропорциональности в первом выражении (1.3), равныйотношению напряжения и тока, является электрическим сопротивлением: R=U/I (1.4) Численно сопротивление равно напряжению на элементе при токе в 1 А.Значение сопротивления выражается в омах. Обратная величина – отношение тока к напряжению – представляет собойэлектрическую проводимость: G=I/U=1/R. (1.5) В теории линейных электрических цепей сопротивление и проводимостьпринимают постоянными, не зависящими от тока, напряжения и других величин.В реальных элементах это допущение, так же как и допущение отсутствиязапасания энергии, выполняется приближенно. 3. Источники Под источником в теории цепей понимают элемент, питающий цепьэлектромагнитной энергией. Эта энергия потребляется пассивными элементамицепи – запасается в индуктивностях и емкостях и расходуется в активномсопротивлении. Напряжения источников, представляющие заданные функции времени,называют также приложенными к цепи или возбуждающими цепь сигналами.Примерами реальных источников электромагнитной энергии могут служитьгенераторы постоянных, синусоидальных и импульсных сигналов разнообразнойформы, сигналы, получаемые от различного рода датчиков, антеннрадиоприемных устройств и т. д. Эти источники сигналов либо являютсяпервичными источниками, в которых происходит непосредственноепреобразование энергии неэлектромагнитной природы (механической,химической, тепловой и т. д.) в электромагнитную энергию, либо получаютпитание от первичных источников. Источник является активным элементом. Для анализа цепей вводят идеализированный источник напряжения, которыйучитывает главные свойства реального источника. Источник напряжения. Под источником напряжения понимают такой элементс двумя выводами (полюсами), напряжение между которыми задано в виденекоторой функции времени независимо от тока, отдаваемого во внешнюю цепь. а) б) Рисунок 1.3. Наиболее часто применяемые условные графические обозначения источниканапряжения представлены на рис. 1.3, а и б, где принятая положительнаяполярность напряжения источника указывается либо стрелкой внутри кружочка,либо большой и малой чертами, малая соответствует знаку «-», а большая -«+». Поскольку положительную полярность напряжения условились обозначатьзнаками «+», «-», для источника напряжения в программе примененообозначение, показанное на рис. 1.3, б. Глава 1. Задача анализа разветвленной цепи Электрическую цепь, приближенно отображающую электромагнитные процессыв реальном устройстве, составляют путем соответствующего соединения междусобой рассмотренных двухполюсных элементов: сопротивления, индуктивности,емкости и источников сигнала. В общем случае отдельные элементы, а такжеотдельные участки цепи могут соединиться произвольно. В дипломной работерассмотрены только соединение сопротивления и источника сигнала, в качествекоторого используют ЭДС. В результате получается электрическая схема, имеющая определеннуюгеометрическую конфигурацию. На рис. 4 приложения показан пример схемыэлектрической цепи, составленной из нескольких сопротивлений и источниковЭДС. Основными понятиями, характеризующими геометрическую конфигурациюразветвленной цепи, являются ветвь и узел. Под ветвью в общем случае понимают участок цепи с двумя выводами. Токиветви принимают в качестве неизвестных переменных, характеризующихсостояние цепи. Поэтому, что конкретно следует понимать под ветвью, зависитот выбора переменных цепи. Ветвью можно считать каждый элемент цепи. Но дляуменьшения числа переменных за ветви иногда принимают также участки изпоследовательного соединения отдельных элементов, токи которых имеют одно ито же значение, и участки из параллельного соединения отдельных элементов,напряжения на которых имеют одно и то же значение. При анализе схемы заветвь принимается участок цепи между двумя узлами цепи. Узел электрической цепи – это точка на схеме, в которой сходятся болеедвух ветвей [4]. Например, на рисунке №4 приложения – 4 узла. Задача анализа электрической цепи формулируется таким образом: Заданысхема электрической цепи со значениями всех ее элементов, а такженапряжения источников, действующих в цепи. Требуется найти токи ветвей. Вдальнейшем будем применять общие термины, называя заданные напряженияисточников функциями возбуждения или сигналами, а искомые токи ветвей,определяемые в результате анализа цепи, - реакциями. Следовательно,требуется найти реакции цепи на действие заданных сигналов. Выводы – узлы или ветви, реакции которых необходимо найти, - называют выходными, а выводы, к которым присоединены источники, - входными. Программа предназначена для анализа любой линейной цепи произвольнойконфигурации с любым конечным числом элементов. Для определения искомых реакций – токов ветвей в общем случае –необходимо составить уравнения цепи с помощью двух систем уравнений: 1) уравнений элементов, связывающих ток и напряжение каждого элемента,а также заданные напряжения. Уравнения элементов не зависят от схемы игеометрической конфигурации цепи, в которую входят элементы; 2) уравнений соединений, которые определяются только геометрическойконфигурацией и способами соединений ветвей (элементов цепи) и не зависятот вида и характера элементов. Уравнения соединений устанавливают связимежду токами и напряжениями отдельных элементов, входящих в цепь. Уравнения соединений составляют па основе двух законов Кирхгофа,которые связывают токи ветвей, сходящихся в узлах, и напряжения ветвей,входящих в контуры; контуры представляют замкнутые пути, проходящиеоднократно через ряд ветвей и узлов. Первый закон Кирхгофа, выражающий закон сохранения заряда, даетуравнение равновесия токов в узле цепи и формулируется так: в любой моменталгебраическая сумма токов ветвей, сходящихся в узле электрической цепи,равна нулю: [pic]. Знак тока определяется выбором положительных направлений токов ветвей;токам, выходящим из узла, приписывают условно знак «-», а током, входящим вузел, - знак «+». Второй закон Кирхгофа, выражающий закон сохранения энергии, даетуравнение равновесия напряжений в контуре и формулируется следующимобразом: в любой момент алгебраическая сумма напряжений ветвей в контуреравна нулю [pic]. Знак напряжения определяется выбором положительных полярностейнапряжений ветвей: если при обходе контура перемещение происходит в сторонупонижения или падения напряжения, то напряжению ветви условно приписываютзнак «+», если в сторону повышения напряжения - знак «-». Линейные цепи, составленные из элементов одного вида, напримеррезистивных, описываются системами линейных алгебраических уравнений. Применяя программу расчета линейных разветвленных электрических схем,необходимо лишь нарисовать схему, и ввести все значения сопротивлений иЭДС. Все остальные преобразования, такие как выбор обхода контура,направления ЭДС, программа выполнит сама и выдаст конечный результат –значения токов в ветвях схемы. Целью настоящей дипломной работы является создание математическоймодели и программы работающей по этой модели, позволяющей анализировать ирасчитывать разветвленные электрические цепи постоянного тока, на основеиспользования законов Кирхгофа. На основе проведенного литературного обзора я убедился, что внастоящее время существуют только программы, которые решают лишь уравнениясозданные при анализе цепи, но не производят анализ самой цепи. Глава 2. Пример. Результаты вычислений Задача [3, №1.50] Дано: Е1=120В; Е2=60В; Е3=140В; R1=1Ом; R2=0,5Ом; R3=0,4Ом; R4=R5=R6=3Ом Найти токи в ветвях. Ответ задачи: I1=6,8; I2=30,9; I3=24,1; I4=12,6; I5=18,3; I6=5,8. Схема для задачи: Эквивалентная схема для программы: Результат вычисления программы: Ответ: I1=6,83; I2=30,88; I3=24,05; I4=12,57; I5=18,31; I6=5,74. Как видно, программа дает более точный результат, чем тот, которыйпредлагается для проверки правильности решения задачи. Результаты вычислений выводятся в отдельном окне. (Рисунок №6приложения). Глава 3. Методика моделирования В этой главе излагаются общие методы анализа цепей произвольнойструктуры, составленных из двухполюсных резистивных элементов с постояннымисопротивлениями и ЭДС, использованные для анализа схем в программе. Методыоснованы на составлении уравнений цепи относительно выбранных переменных иих решении. 1. Линейный граф и матрица соединений Для цепей сложной структуры использовалась запись уравнений вматричной форме. Матричная запись: 1) позволяет распространять формальным образом полученные уравнения на цепи любой сложной структуры; 2) систематизирует и упрощает процесс составления уравнений; 3) дает алгоритмы формирования уравнений с помощью ЭВМ; в случае сложных цепей составление уравнений «вручную» (без ЭВМ) требует значительных затрат времени. Рассмотрим классические методы контурных и узловых уравнений. Вначалевведем понятие графа цепи, описывающего свойства цепи, связанные с взаимнымсоединением ветвей, т. е. с геометрической структурой (топологией) схемы.Применение понятия графа позволяет записывать в матричной форме уравнениясоединений, составляемые на основе законов Кирхгофа, и тем самымформировать уравнения разветвленных цепей с помощью ЭВМ. Уравнения равновесия токов и напряжений, составленные по ЗаконамКирхгофа, как указывалось, линейными однородными уравнениями. Важноеусловие, которое должно обеспечиваться, состоит в линейной независимостиуравнений. Ни одно уравнение не должно быть получено линейной комбинациейостальных уравнений. Общий систематический метод получения линейнонезависимых уравнений цепи основан также на привлечении понятий теориилинейного графа, одного разделов математической дисциплины—топологии. Клинейному графу приводит следующее соображение: Уравнения равновесия токов и напряжений, составленные по законамКирхгофа, определяются только схемами соединений ветвей, т. е.геометрической структурой цепи, и не зависят от вида и характеристикэлементов, т. е. от физического содержания ветвей. Поэтому при составленииуравнений соединений удобно отвлекаться от вида и характеристик ветвейцепи, заменив их линиями. В результате для цепи рис. 3.1, а, составленнойиз любых двухполюсных элементов, получим линейный граф, показанный на рис.3.1, б. [pic] Граф является системой или совокупностью двух элементов—узлов(вершин), изображаемых точками, и ветвей (ребер), изображаемых отрезкамилиний, которые соединяют пары узлов. В предельном вырожденном случае графможет состоять только из одного узла. Числа узлов и ветвей графа обозначим пy и nд. Поскольку каждому узлу икаждой ветви цепи сопоставляется узел и ветвь графа, граф цепи содержит всюинформацию о соединениях и геометрических свойствах исходной цепи. На рис.3.1, а, б соответственные узлы, а также ветви цепи и графа имеют одинаковыеномера. Граф, так же как и исходная цепь, может иметь различную структуру.Различают планарный (плоский) граф, если его можно изобразить на плоскостибез пересечения ветвей (рис. 3.1,6), и не планарный (пространственный)граф, если при его изображении на плоском чертеже невозможно избежатьпересечения ветвей (рис. 3.2, а). Полным называют граф, у которого каждаяпара узлов соединена одной ветвью. Примером полного графа цепи можетслужить граф рис. 3.2, а. Любую часть графа, элементы которой являются элементами исходногографа, называют подграфом. Подграф получают путем удаления (исключения)некоторых ветвей исходного графа. Важным подграфом является путь графа, представляющий непрерывнуюпоследовательность ветвей, связывающую пару выбранных узлов, с прохождениемкаждого узла не более одного раза. Смежные ветви пути имеют общий узел, такчто к каждому узлу присоединены две ветви, лишь к крайним узлам — поодной ветви. [pic] На рис. 3.1, б пути, связывающие узлы 1, 4, образованы ветвями 2-4, 5-6, 1, 2-3-5 и т. д. Если в заданном графе имеется хотя бы один путь междулюбой парой узлов, то граф называется связным—он соответствует цепи,элементы которой соединены только электрически. Граф рис. 3.1, б являетсяпримером связного графа, а рис. 3.2, б —несвязного: он состоит из двухраздельных частей, элементы которых могут иметь связь, например, черезвзаимную индуктивность. Для составления уравнений соединений по законам Кирхгофа необходимо навсех ветвях графа стрелками указать положительные направления токов. Врезультате получается граф с ориентированными ветвями, называемыйнаправленным графом токов цепи (рис. 3.1, б), ветви которого являютсятоками. Положительные полярности напряжений ветвей удобно приниматьсогласованными с положительными направлениями токов. Тогда в цепях,составленных из двухполюсных элементов, направленный граф напряжений, ребракоторого являются напряжениями ветвей, будет совпадать с графом токов.Переход к направленному графу позволяет производить аналитическую записьструктуры графа и подграфов в виде таблиц – матриц, называемыхтопологическими матрицами. Аналитическое представление графа необходимо дляформирования уравнений сложной цепи с помощью ЭВМ. Полное описание структуры направленного графа дает nуxnв - матрицасоединений, nу строк которой являются порядковыми номерами узлов, nвстолбцов – номерами ветвей. Элементами аi,j этой матрицы являются символыналичия или отсутствия ветви k, присоединенной к узлу i, которыепринимаются равными +1 (—1) для выходящей из узла (входящей) ветви и 0,если ветвь не связана с узлом. Для того чтобы записать матрицу соединений, достаточно для каждойветви определить номера обоих соединяемых узлов i, j и заполнить клеточкина пересечениях строк i, j и столбца с номером ветви k значениями +1, — 1;в остальных клеточках должны быть проставлены нули. Для графа рис. 3.1,бполучим полную матрицу соединений: [pic] (3.1) Так как каждая ветвь соединяет два узла—выходит из одного узла ивходит в другой, то столбец матрицы состоит из двух ненулевых элементов +1,—1 (их сумма равна нулю), так что достаточно заполнить таблицу для ny-1узлов, которая является редуцированной матрицей соединений А. Этунезависимую матрицу можно получить из полной матрицы Аa вычеркиваниемстроки, соответствующей выбранному базисному узлу. Приняв в качестве базисного узел 4 и соответственно вычеркиваячетвертую строку в (3.1), получим редуцированную матрицу соединений: [pic] (3.2) Строка матрицы А показывает, какие ветви выходят из каждогонезависимого узла графа цепи (и входят в него), а столбец – к каким узламприсоединена ветвь. В отличие от полной матрицы Аа у редуцированной матрицы соединенийсвязного графа множество всех строк линейно независимо. Отсюда можносделать вывод о том, что система уравнений равновесия токов в ny-1 узлахцепи линейно независима. Если ввести вектор токов пв, ветвей: i=[i1, i2, … inв]Т, (3.3) то систему независимых уравнений в nу-1 узлах по ЗТК в соответствии сосмыслом матрицы А можно записать в виде: Ai=0, (3.4) где 0=[0 0 … 0]T - нулевой вектор размерности nу-1. Для графа цепи рис. 3.1, б с матрицей соединений (3.2) имеем: [pic] Транспонированная матрица соединений имеет вид: [pic] (3.5) Строка этой матрицы показывает, между какими узлами присоединенакаждая ветвь. Если задана матрица соединений, то всегда можно построитьсоответствующий граф. Для этого, расположив точки, обозначающие узлы,следует соединить их попарно ветвями. Номера и направление ветвейопределяются ненулевыми элементами столбцов матрицы соединения. 2. Уравнения контурных токов Метод контурных токов применим к цепям с планарным графом (рис. 3.3,а). В качестве переменных принимают замкнутые контурные токи, проходящие поветвям, образующим все внутренние ячейки графа. Если намечать контуры – периметры ячеек – по порядку, начиная с одногокрая цепи, то легко убедиться, что в каждый последующий контур вноситсяновая ветвь, не вошедшая в предыдущие контуры. Отсюда следует, чтоуравнения равновесия напряжений в таких контурах будут линейно независимы.Число внутренних ячеек равно nx=nв-ny+1. [pic] Каждой ячейке приписывается один контурный ток, замыкающийся поветвям, образующим ячейку. Общее число переменных – контурных токов – равночислу ячеек. Направления всех контурных токов принимают одинаковыми – почасовой стрелке. Как видно из рис. 3.3, a, по каждой ветви цепи, заисключением периферийных ветвей, замыкаются два контурных тока,направленные в противоположные стороны. Запишем уравнения соединений. 1. Приравнивая нулю суммы напряжений ветвей всех независимых контуров (ячеек), имеем nх уравнений по ЗНК [pic]. 2. Выражая ток каждой ветви через разность двух (в общем случае) замыкающихся по смежным контурам контурных токов, получим nв уравнений по ЗТК: [pic]. Как видно, токи всех ветвей, т. е. поведение всей цепи, полностьюопределяются nх контурными токами, число которых меньше числа ветвей. Запишем уравнения ветвей. Положим для удобства, что выполненопреобразование всех источников тока и цепь содержит только источникинапряжения. Примем для общности каждую ветвь состоящей из последовательногосоединения резистивного элемента и источника напряжения (рис. 3.3,6).Уравнение такой составной ветви имеет вид: [pic]. Для получения уравнений относительно выбранных переменных необходимо:1) с помощью уравнений ветвей [pic] в уравнениях равновесия напряжений заменить напряжения всех ветвей токами;2) токи ветвей в получившейся системе заменить, согласно [pic], контурными токами. Получим уравнения для одной из ячеек, например первой (рис. 3.3, в),образованной тремя ветвями. Основным уравнением равновесия напряжений впервом контуре будет: u1+u2+u3=0 (*) Токи ветвей ячейки: [pic].(**) Уравнения ветвей: [pic] (***) Из трех систем уравнений (*), (**), (***) необходимо получитьуравнение, содержащее только искомые контурные токи. В соответствии сосказанным с помощью (***) заменяем в основном уравнении (*) напряжения натоки ветвей, которые затем выражаем через контурные токи согласно (**): [pic], После группировки имеем: [pic] Первое слагаемое здесь представляет сумму напряжений всех резистивныхветвей контура только от собственного контурного тока в отсутствие токовдругих контуров (при их разрыве), а остальные слагаемые—напряжения ветвейконтура от токов других контуров в отсутствие собственного контурного тока.В правую часть перенесены напряжения всех источников, входящих в контур. Аналогичные уравнения получим для остальных контуров. Если числоконтуров равно п, то предположив для общности число ветвей каждой ячейкитакже равным п, можно записать систему уравнений контурных токов: [pic] Коэффициент Rkk—собственное сопротивление контура, равное суммесопротивлений всех ветвей ячейки, а коэффициент Rik=Rki (i<>k) – взаимноесопротивление контуров, равное сопротивлению общей для контуров i и kветви, взятому с отрицательным знаком, которым учитываются встречныенаправления контурных токов в рассматриваемой ветви. Каждое уравнение системы выражает условие равновесия напряжений ветвейконтура – резистивных и источников напряжения (в правой части). Слагаемоена главной диагонали [pic] дает напряжение всех резистивных ветвей толькоот собственного контурного тока, а слагаемое Рkjij=ukj - напряжение навзаимном сопротивлении контуров только от тока в j-м контуре. Составление уравнений сводится к записи симметричной матрицыпараметров контурных токов: [pic] Вектора контурных напряжений источников, составляющие которых равнысуммам напряжений источников в контурах: [pic] При введении вектора искомых контурных токов уравнения (3.10) вматричной форме можно записать в виде: [pic]. 3. Алгоритм формирования узловых уравнений Для ввода графа или соединений цепи производят последовательнуюнумерацию: 1) всех узлов от 1 до п=пy-1 (опорному узлу присваивают нулевой номер); 2) всех ветвей от 1 до nв. Как указывалось, всю информацию о структуре графа содержит матрица соединений. Но вводить в память эту матрицу в виде двумерного массива нерационально из-за большого числа нулевых элементов. Поэтому структуру графа вводят с помощью таблицы соединений – одномерного массива троек целых чисел (k, i, j), где k—номер ветви; i—номер узла, откуда ветвь выходит; j—номер узла, куда ветвь входит. Тройки чисел дают ненулевые элементы aik=1 и аjk=-1 матрицы А. По заданной таблице соединений можно получить все необходимые для формирования уравнений матрицы. Формировать узловые уравнения на ЭВМ можно перемножив произведениепервых двух матриц па транспонированную матрицу соединений, получим матрицуузловых проводимостей; перемножение транспонированной матрицы АТ на вектортоков источников дает вектор узловых токов. Действия над матрицами(транспонирование, суммирование, перемножение) легко программируется.Упомянутые матрицы являются разреженными, т. е. содержат много нулевыхэлементов. Поэтому приведенный алгоритм, включающий много действийумножения на нулевой элемент, применять невыгодно. Более рационально формировать матрицу Gy и вектор iy непосредственно -по мере поступления данных составных ветвей, исходя из смысла собственной ивзаимной проводимостей. Вначале матрицу узловых проводимостей и векторузловых токов принимают равными нулю: Gy=0 и iy=0, затем к ним добавляютэлементы, вносимые каждой составной ветвью. Данные ветви (k, i, j) спроводимостью Gk и током источника тока iok войдут в собственныепроводимости Gii, Gjj, узлов i, j как добавки Gk, во взаимные проводимостиGij, Gji как добавки Gk и в элементы вектора узловых токов iyi, iyi - какдобавки ±i0k. Добавки ветви в матрицу проводимости Gy и вектор тока iyможно представить в виде: [pic] Если ветвь присоединена к базисному узлу (j=0) то она внесет добавку Gk,только в собственную проводимость Gii и добавку i0k в составляющую iiyвектора узловых токов. Учет данных последней ветви завершает формированиеузловых проводимостей и вектора узловых токов. Заключение Таким образом в настоящей дипломной работе: проведен литературный обзор по моделированию процессов в радиотехнических цепях, методов и средств расчетов токов и направлений в них; построена математическая модель разветвленной цепи постоянного тока; . на языке программирования Турбо Паскаль версии 7.0. в удобном графическом интерфейсе разработана программа построения и анализа электрической схемы цепи постоянного тока; . приведены методические пояснения при работе с разработанной программой, а также расчетов и анализа электрических цепей; . программа допускает без принципиальных изменений расширение её функциональных возможностей для расчетов цепей переменного тока, а также моделирования и анализа электромагнитных полей; . результаты настоящей дипломной работы могут быть использованы в учебном процессе, при разработке электронной аппаратуры в научных лабораториях и на производстве. В заключение хочу выразить благодарность своим научным руководителям:Цыпишка Дмитрию Ивановичу, Брагарь Луке Федеровичу и заведующиему кафедройкафедрой общей физики и методики преподавания физики Стамову ИвануГригорьевичу, за методическую помощь, оказанную при написании дипломнойработы. Использованная литература1. К.С. Демирчан, П.А. Бутырин. Моделирование и машинный расчет электрических цепей. М., «Высшая школа», 1988г.2. В. Нерретер. Расчет электрических цепей на ПЭВМ. М., «Энергоатомиздат», 1991г.3. Пантюшин В.С. Сборник задач по электротехнике и основам электронники. М., «Высшая школа», 1979г.4. П.Н. Махтанов. Основы анализа электрических цепей. Линейные цепи. М., «Высшая школа», 1990г.5. «Электротехника». Под редакцией проф. В.С. Пантюшина. М., «Высшая школа», 1976г.6. В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова. «Введение в язык Паскаль». М., «Наука», 1988г.7. Ж.Джонс, К. Харроу. «Решение задач в системе Турбо Паскаль». М., «Финансы и статистика», 1991г.8. К. Боон. «Паскаль для всех». М., «Энергоиздат», 1988г.9. Д. Прайс. «Программирование на языке Паскаль». Практическое руководство. М., «Мир», 1987г. ПриложениеI. Рисунки с видами экрана при работе с программой 20 Рисунок №1. Общий вид экрана. 20 Рисунок №2. Меню – Файл. 21 Рисунок №3. Открытие файла, сохраненного на диске. 22 Рисунок №4. Вид экрана с изображением схемы. 23 Рисунок №5. Вывод результата вычисления токов в ветвях схемы. 24 Рисунок №6. Просмотр направления токов в ветвях схемы. 25 Рисунок №7. Вид экрана при сохранении схемы в файл. 26 Рисунок №8. Меню – Окно. 27 Рисунок №9. Окно помощи выводимое на экран при нажатии клавиши F1. 29II. Листинг программы на языке Паскаль. 30 1. Основная программа 30 2. Модуль с библиотекой элементов 36 3. Модуль вычисления токов ветвей 48 I. Рисунки с видами экрана при работе с программойРисунок №1. Общий вид экрана.Меню Меню элементов Рабочее поле Указатель мыши [pic]Строка статуса Индекатор свободной памятиРисунок №2. Меню – Файл.Меню – Файл [pic]Рисунок №3. Открытие файла, сохраненного на диске.Открытие файла со схемой [pic]Рисунок №4. Вид экрана с изображением схемы.Изображение схемы [pic]Расчет схемыРисунок №5. Вывод результата вычисления токов в ветвях схемы.Результаты вычислений [pic]Токи РезисторыРисунок №6. Просмотр направления токов в ветвях схемы.Значения токов Направления токов [pic]Рисунок №7. Вид экрана при сохранении схемы в файл.Сохранение схемы [pic]Рисунок №8. Меню – Окно.Работа с окнами[pic]Рисунок №9. Вид экрана при закрытии всех окон.Указатель мыши Меню [pic]Строка статуса Информация о свободной памятиРисунок №10. Окно помощи выводимое на экран при нажатии клавиши F1.Закрытие окна Окно с помощью программы [pic] Горизонтальный скролинг Вертикальный скролинг II. Листинг программы на языке Паскаль.1. Основная программаProgram UzPotenc; Метод узловых потенциалов$F+,O+,X+,V-,R-,I-,S-Uses Crt, Applic1, Objects, Drivers, Dialogs, Views, Menus, App, StdDlg, Fonts, HelpFile, MsgBox, TxtRead, WInDows, PalObj, Grv16, DemoHlp, Types2;Type TNewApp=Object(TMyApp) Procedure ReCounte; Virtual; End;Var MyApp:TNewApp;Type PMyCollection=^TMyCollection; TMyCollection=Object(TCollection) Procedure FreeItem(Item:poInter); Virtual; End;Procedure CurView; Просмотр значений токовVar R,R1:TRect; D:PDialog; L:PListBox; C:PMyCollection; Sb:PScrollBar; i:Integer; s:String;Begin Sb:=Nil; MyApp.ShemeWInDow^.GeTextentWIn(R); R.B.X:=R.A.X+(R.B.X-R.A.X) Div 4; D:=New(PDialog,Init(R,'Значения токов')); D^.GeTextentWIn(R); Inc(R.A.Y,CurrentFont^.Height*2); R1.Copy(R); R1.A.X:=R1.B.X-CurrentFont^.Width*2; If RCount>(R.B.Y-R.A.Y) Div CurrentFont^.Height Then Begin Sb:=D^.StAndardScrollBar(sbVertical+sbHAndleKeyBoard); End; C:=New(PMyCollection,Init(RCount,1)); For i:=1 To RCount Do Begin Str(abs(Currents[i]):9:6,s); If i Div 10>0 Then C^.Insert(NewStr('I'+IntToStr(i)+'='+s+'A')) Else C^.Insert(NewStr(' I'+IntToStr(i)+'='+s+'A')) End; L:=New(PListBox,Init(R,1,Sb)); L^.NewList(C); D^.Insert(L); R.B.Y:=R.A.Y; Dec(R.A.Y,CurrentFont^.Height*2); D^.Insert(New(PLabel,Init(R,' Токи в ветвях',L))); DeskTop^.Insert(D); End;Procedure TNewApp.ReCounte;Обсчет Var i,j,k,l,m,Ii,Sizex,Index:Integer; A:TElAr; f1,f2:Boolean; Ratio:Real;Function Vetv1(Ai,Aj,Ad:Integer):Boolean;Функция сохраняет в аветвь от элемента (Ai,Aj) в направлении Ad (0-Up,1-Down,2-Left,3-Right и возвращает TRUE, если она содержит элементы Var i,j,k,l:Integer; Flag1,Flag2:Boolean; Begin Flag1:=True; Flag2:=False; With A[Index] Do Begin Str:=Ai; Col:=Aj; Num:=Sheme[Ai,Aj,2]; Typ:=Sheme[Ai,Aj,1]; End; Inc(Index); Case Ad Of 0: Begin i:=Ai+1; j:=Aj-1; End; 1: Begin i:=Ai-1; j:=Aj+1; End; 2: Begin i:=Ai-1; j:=Aj+1; End; 3: Begin i:=Ai+1; j:=Aj-1; End; End; While Flag1 And (i>0) And (j>0) And (i<=nS) And (j<=mS) And Not (Sheme[i,j,1] In [0,14..18]) Do Begin If Sheme[i,j,1] In [3..8] Then Begin Flag2:=True; With A[Index] Do Begin Str:=i; Col:=j; Num:=Sheme[i,j,2]; Typ:=Sheme[i,j,1]; Case Ad Of 0:Dir:=Typ In [5,8]; 1:Dir:=Typ=6; 2:Dir:=Typ=4; 3:Dir:=Typ In [3,7]; End; End; Inc(Index); End; Case Ad Of 0: Case Sheme[i,j,1] Of 2,5,6,8,9 : Dec(i); 10 : Begin Inc(j); Ad:=3; End; 11 : Begin Dec(j); Ad:=2; End; Else Flag1:=False; End; 1: Case Sheme[i,j,1] Of 2,5,6,8,9 : Inc(i); 12 : Begin Inc(j); Ad:=3; End; 13 : Begin Dec(j); Ad:=2; End; Else Flag1:=False; End; 2: Case Sheme[i,j,1] Of 1,3,4,7,9 : Dec(j); 10 : Begin Inc(i); Ad:=1; End; 12 : Begin Dec(i); Ad:=0; End; Else Flag1:=False; End; 3: Case Sheme[i,j,1] Of 1,3,4,7,9 : Inc(j); 13 : Begin Dec(i); Ad:=0; End; 11 : Begin Inc(i); Ad:=1; End; Else Flag1:=False; End; End; End; If Sheme[i,j,1] In [14..18] Then Begin With A[Index] Do Begin Str:=i; Col:=j; Num:=Sheme[i,j,2]; Typ:=Sheme[i,j,1]; End; Inc(Index); With A[Index] Do Begin Str:=0; Col:=0; Num:=0; Typ:=0; End; Inc(Index); End; If Not Flag2 Then Begin For k:=1 To NoDecount Do If (Nodes[k,1]=i) And (Nodes[k,2]=j) Then l:=k; NNum[l]:=NNum[Ii]; Исключение накоротко замкнутых ветвей End; Vetv1:=Flag2; End;Function ElEqu(Var Src,Dst:TEl):Boolean; Returns TRUE, If Src=Dst Begin With Src Do ElEqu:=(Str=Dst.Str)And(Col=Dst.Col)And(Typ=Dst.Typ)And(Num=Dst.Num); End;Function IsDiv(Var Src:TEl):Boolean; Returns TRUE, If Src - Divider Begin With Src Do IsDiv:=(Str=0)And(Col=0)And(Typ=0)And(Num=0); End;Function NextDiv(i:Integer):Integer; Поиск след. разд. элемента в массиве Begin Repeat Inc(i); Until (i>Sizex) Or IsDiv(A[i]); If i<=Sizex Then NextDiv:=i End;Function PrevDiv(i:Integer):Integer; Поиск пред. разд. элемента в массиве Begin Repeat Dec(i); Until (i<1) Or IsDiv(A[i]); If i>=1 Then PrevDiv:=i Else PrevDiv:=0; End;Begin For i:=1 To nS*mS Div 2 Do For j:=1 To nS*mS Div 2 Do Equals[i,j]:=0; For Ii:=1 To NoDecount Do NNum[Ii]:=Ii; Index:=1; For Ii:=1 To NoDecount Do Begin Case Sheme[Nodes[Ii,1],Nodes[Ii,2],1] Of 14:Begin Vetv1(Nodes[Ii,1],Nodes[Ii,2],0);Vetv1(Nodes[Ii,1],Nodes[Ii,2],1); End; 15:Begin Vetv1(Nodes[Ii,1],Nodes[Ii,2],0);Vetv1(Nodes[Ii,1],Nodes[Ii,2],1); End; 16:Begin Vetv1(Nodes[Ii,1],Nodes[Ii,2],0);Vetv1(Nodes[Ii,1],Nodes[Ii,2],1); End; 17:Begin Vetv1(Nodes[Ii,1],Nodes[Ii,2],1);Vetv1(Nodes[Ii,1],Nodes[Ii,2],2); End; 18:Begin Vetv1(Nodes[Ii,1],Nodes[Ii,2],0);Vetv1(Nodes[Ii,1],Nodes[Ii,2],2); End; End; End; Sizex:=Index-1; Оставляет нужные ветви i:=1; While i<=Sizex Do Begin j:=0; f1:=True; While (i+j<=Sizex) And f1 Do Begin k:=NextDiv(i+j); If ElEqu(A[k-1],A[i])And ElEqu(A[k-2],A[i+1]) Then Begin f1:=False; l:=PrevDiv(k); For m:=0 To Sizex-k Do A[l+m]:=A[k+m]; Sizex:=Sizex-(k-l); i:=NextDiv(i)+1; If i=1 Then i:=Sizex+1; End Else j:=k-i; End; End; i:=0; Исключает пустые ветви While i<=Sizex Do Begin j:=NextDiv(i); If j-i=3 Then Begin For k:=1 To Sizex-j Do End; If j<>0 Then i:=j Else i:=Sizex+1; End; Считаем сколько узлов с учётом соединений NCount:=NoDecount; For i:=1 To NoDecount Do If NNum[i]<>i Then Dec(NCount); If NCount<>NoDecount Then For i:=1 To NoDecount Do Begin j:=0; For k:=1 To NoDecount Do If NNum[k]=i Then j:=1; If j=0 Then For k:=1 To NoDecount Do If NNum[k]>i Then Dec(NNum[k]); End; i:=1; j:=0; Repeat Inc(j); k:=NextDiv(i); With Brunches[j] Do Begin AEDS:=0; ARes:=0; For l:=i To k Do With A[l] Do Case Typ Of 3..6: If Dir Then EDS:=AEDS+EDS[Str,Col] Else EDS:=AEDS-EDS[Str,Col]; 7..8: ARes:=ARes+abs(Res[Str,Col]); End; FromN:=NNum[A[i].Num]; If k<>0 Then Begin ToN:=NNum[A[k-1].Num]; i:=k+1; End Else Begin ToN:=NNum[A[Sizex-1].Num]; i:=Sizex+1; End; End; Until i>Sizex; BrunchCount:=j; Заполняем систему For i:=1 To BrunchCount Do With Brunches[i] Do Begin Equals[FromN,FromN]:=Equals[FromN,FromN]+1/ARes; Equals[ToN,NCount+1]:=Equals[ToN,NCount+1]+AEDS/ARes; End; Решаем систему For i:=2 To NCount Do Begin Ratio:=Equals[i,i]; For j:=2 To NCount+1 Do Equals[i,j]:=Equals[i,j]/Ratio; For k:=2 To NCount Do If k<>i For i:=1 To NCount+1 Do Begin Equals[1,i]:=0; Equals[i,1]:=0; End; После решения расставляем токи For i:=1 To RCount Do Begin j:=1; While (j<=Sizex) And Not ((A[j].Typ In [7,8]) And (A[j].Num=i)) Do Inc(j); k:=0; l:=j; Repeat k:=k+1; j:=PrevDiv(j); Until j=0; With Brunches[k] Do Begin Currents[i]:=(AEDS-Equals[ToN,NCount+1]+Equals[FromN,NCount+1])/ARes; If Not A[l].Dir Then Currents[i]:=-Currents[i]; End; End; CurView; End;Procedure TMyCollection.FreeItem; Begin If Item<>Nil Then DisposeStr(PString(Item)); End;BEGIN MyApp.Init; MyApp.Run; MyApp.Done;END.2. Модуль с библиотекой элементовUnit Types2;InterfaceUses Crt, Objects, Drivers, Dialogs, Views, Menus, App, StdDlg, Fonts, HelpFile, MsgBox, TxtRead, WInDows, PalObj, Grv16, DemoHlp;Const nS=8; mS=13; Sx:Integer = 50; Sy:Integer = 40; Sx1:Integer=20; Sy1:Integer=20; cmMemoViewChange = 1001; CurrentElement:Byte=0; IsResist:Boolean=True; If True - resistOrs, Else - currents Type TSheme=Array [1..nS,1..mS,1..2] Of Byte; Массив сдержит схему TNodes=Array [1..nS*mS,1..2] Of Byte; Массив содержит координаты всех узловых элементов (i,j) TElems=Array [1..nS,1..mS] Of Real; Содержит элементы значения TCurrents=Array [1..nS*mS] Of Real; Токи TNNum=Array [1..nS*mS] Of Byte; Номера узлов PEl=^TEl; Элемент TEl=recOrd Str,Col:Byte;строка, столбец Typ:Byte;тип Num:Byte;номер Dir:Boolean; End; TBrunch=recOrd Ветвь FromN,ToN:Byte; ARes,AEDS:Real; End; TElAr=Array [1..2*mS*nS] Of TEl; Элементы TBrunches=Array[1..mS*nS] Of TBrunch; Ветви TEquals=Array[1..mS*nS Div 2,1..mS*nS Div 2] Of Real; Уравнения PToolBar = ^TToolBar; TToolBar = Object(TView) ConstructOr Init(Var R: TRect);Procedure Draw; Virtual;Procedure HAndleEvent(Var Event:TEvent); Virtual; Реагирование на события End; PMemoView = ^TMemoView; TMemoView = Object(TView) ConstructOr Init(Var Bounds: TRect);Procedure HAndleEvent(Var Event: TEvent); Virtual;Procedure Draw; Virtual; End; П- указатель, Т - тип PShemeView = ^TShemeView; TShemeView = Object(TView) ConstructOr Init(Var R: TRect);Procedure Draw; Virtual;Procedure HAndleEvent(Var Event:TEvent); Virtual; End; PShemeWIn = ^TShemeWIn; TShemeWIn = Object(TDialog) ConstructOr Init(Var R:TRect);Function ElMatter(IsEDS:Boolean):Real; Окно ввода значений DestructOr Done; Virtual; End; Var Sheme:TSheme; Nodes:TNodes; EDS,Res:TElems; Currents:TCurrents; Токи NCount,NoDecount,ECount,RCount:Integer; Реално узлов, Узловых эл-тов, Колво ЭДС и Кол-во Рез. Changed:Boolean; Exist:Boolean; SetPhase:Boolean; NNum:TNNum; Brunches:TBrunches; Ветви BrunchCount:Integer; Кол-во Equals:TEquals;Function IntToStr(i:longInt):String;Procedure ElNumbers(Var ASheme:TSheme);Procedure InitSheme(Var ASheme:TSheme);ImplementationProcedure InitSheme(Var ASheme:TSheme); Зануляет текущую схему. Вызывается при старте и команде ОЧИСТИТЬ Var i,j,k:Integer; Begin For i:=1 To nS Do For j:=1 To mS Do For k:=1 To 2 Do Begin ASheme[i,j,k]:=0; EDS[i,j]:=0; Res[i,j]:=0; End; End; ConstructOr TMemoView.Init(Var Bounds: TRect); Begin TView.Init(Bounds); EventMask:= EventMask Or evBroadCast; Options := OfPreProcess; End;Procedure TMemoView.HAndleEvent(Var Event: TEvent); Begin Inherited HAndleEvent(Event); With Event Do If (What =evBroadCast)And(CommAnd=cmMemoViewChange) Then DrawView Else Exit; ClearEvent(Event); End;Procedure TMemoView.Draw; Var R: TRect; S: String; Begin SetColOr(7); FillRect(1, 1, Pred(Size.X), Pred(Size.Y)); GeTextent(R); With R Do DrawFrame(A, B, OfWhiteRight); Str(MemAvail:6, S); SetColOr(0); WriteStr(5, 3, S + 'b'); End; ConstructOr TToolBar.Init(Var R: TRect); Begin Inherited Init(R); GrowMode:= GrowMode Or (gfGrowHiX+gfGrowHiY); End;Procedure TToolBar.Draw; Var i,j: Integer;Procedure ElDraw(Ax,Ay:Integer; An:Byte);Procedure _1(x,y:Integer); Begin plotlIne (x,y+Sy Div 2,x+Sx,y+Sy Div 2); End;Procedure _2(x,y:Integer); Begin PlotLIne (x+sx Div 2,y,x+sx Div 2,y+sy); End;Procedure _9(x,y:Integer); Begin PlotLIne (x,y+sy Div 2,x+sx,y+sy Div 2); PlotLIne (x+sx Div 2,y,x+sx Div 2,y+sy); End; Procedure _3(x,y:Integer); Begin PlotLIne (x,y+Sy Div 2,x+Sx Div 5,y+Sy Div 2); PlotLIne (x+Sx*4 Div 5,y+Sy Div 2,x+Sx,y+Sy Div 2); ThickCircle(x+Sx Div 2,y+Sy Div 2,sx*2 Div 6,1); PlotLIne (x+Sx Div 4,y+Sy Div 2,x+Sx*3 Div 4,y+Sy Div 2); PlotLIne (x+Sx*3 Div 4,y+Sy Div 2,x+Sx Div 2,y+Sy*13 Div 20); PlotLIne (x+Sx*3 Div 4,y+Sy Div 2,x+Sx Div 2,y+Sy*7 Div 20); End; Procedure _4(x,y:Integer); Begin PlotLIne (x,y+sy Div 2,x+sx Div 5,y+sy Div 2); PlotLIne (x+sx*4 Div 5,y+sy Div 2,x+sx,y+sy Div 2); ThickCircle(x+sx Div 2,y+sy Div 2,sx*2 Div 6,1); PlotLIne (x+sx Div 4,y+sy Div 2,x+sx*3 Div 4,y+sy Div 2); PlotLIne (x+sx Div 4,y+sy Div 2,x+sx Div 2,y+sy*13 Div 20); PlotLIne (x+sx Div 4,y+sy Div 2,x+sx Div 2,y+sy*7 Div 20); End; Procedure _5(x,y:Integer); Begin PlotLIne (x+sx Div 2,y,x+sx Div 2,y+sy*2 Div 10); PlotLIne (x+sx Div 2,y+sy*8 Div 10,x+sx Div 2,y+sy); ThickCircle(x+sx Div 2,y+sy Div 2,sx*2 Div 6,1); PlotLIne (x+sx Div 2,y+sy Div 4,x+sx Div 2,y+sy*3 Div 4); PlotLIne (x+sx Div 2,y+sy Div 4,x+sx*13 Div 20,y+sy Div 2); PlotLIne (x+sx Div 2,y+sy Div 4,x+sx*7 Div 20,y+sy Div 2); End; Procedure _6(x,y:Integer); Begin PlotLIne (x+sx Div 2,y,x+sx Div 2,y+sy*2 Div 10); PlotLIne (x+sx Div 2,y+sy*8 Div 10,x+sx Div 2,y+sy); ThickCircle(x+sx Div 2,y+sy Div 2,sx*2 Div 6,1); PlotLIne (x+sx Div 2,y+sy Div 4,x+sx Div 2,y+sy*3 Div 4); PlotLIne (x+sx Div 2,y+sy*3 Div 4,x+sx*13 Div 20,y+sy Div 2); PlotLIne (x+sx Div 2,y+sy*3 Div 4,x+sx*7 Div 20,y+sy Div 2); End;Procedure _3(x,y:Integer); Begin PlotLIne (x,y+Sy Div 2,x+Sx*2 Div 5,y+Sy Div 2); PlotLIne (x+Sx*3 Div 5,y+Sy Div 2,x+Sx,y+Sy Div 2); PlotLIne (x+Sx*3 Div 5,y+Sy Div 8,x+Sx*3 Div 5,y+Sy*7 Div 8); PlotLIne (x+Sx*2 Div 5,y+Sy Div 3,x+Sx*2 Div 5,y+Sy*2 Div 3); End;Procedure _4(x,y:Integer); Begin PlotLIne (x,y+Sy Div 2,x+Sx*2 Div 5,y+Sy Div 2); PlotLIne (x+Sx*3 Div 5,y+Sy Div 2,x+Sx,y+Sy Div 2); PlotLIne (x+Sx*2 Div 5,y+Sy Div 8,x+Sx*2 Div 5,y+Sy*7 Div 8); PlotLIne (x+Sx*3 Div 5,y+Sy Div 3,x+Sx*3 Div 5,y+Sy*2 Div 3); End;Procedure _5(x,y:Integer); Begin PlotLIne (x+Sx Div 2,y,x+Sx Div 2,y+Sy*2 Div 5); PlotLIne (x+Sx Div 2,y+Sy*3 Div 5,x+Sx Div 2,y+Sy); PlotLIne (x+Sx Div 8,y+Sy*2 Div 5,x+Sx*7 Div 8,y+Sy*2 Div 5); PlotLIne (x+Sx Div 3,y+Sy*3 Div 5,x+Sx*2 Div 3,y+Sy*3 Div 5); End;Procedure _6(x,y:Integer); Begin PlotLIne (x+Sx Div 2,y,x+Sx Div 2,y+Sy*2 Div 5); PlotLIne (x+Sx Div 2,y+Sy*3 Div 5,x+Sx Div 2,y+Sy); PlotLIne (x+Sx Div 8,y+Sy*3 Div 5,x+Sx*7 Div 8,y+Sy*3 Div 5); PlotLIne (x+Sx Div 3,y+Sy*2 Div 5,x+Sx*2 Div 3,y+Sy*2 Div 5); End;Procedure _7(x,y:Integer); Begin PlotLIne(x,y+Sy Div 2,x+sx Div 5,y+Sy Div 2); PlotLIne(x+sx*4 Div 5,y+Sy Div 2,x+sx,y+Sy Div 2); PlotLIne(x+sx Div 5,y+Sy*12 Div 20,x+sx*4 Div 5,y+Sy*12 Div 20); PlotLIne(x+sx*4 Div 5,y+Sy*12 Div 20,x+sx*4 Div 5,y+Sy*8 Div 20); PlotLIne(x+sx*4 Div 5,y+Sy*8 Div 20,x+sx Div 5,y+Sy*8 Div 20); PlotLIne(x+sx Div 5,y+Sy*8 Div 20,x+sx Div 5,y+Sy*12 Div 20); End;Procedure _8(x,y:Integer); Begin PlotLIne(x+Sx Div 2,y,x+Sx Div 2,y+Sy Div 5); PlotLIne(x+Sx Div 2,y+Sy*4 Div 5,x+Sx Div 2,y+Sy); PlotLIne(x+Sx*12 Div 20,y+Sy Div 5,x+Sx*12 Div 20,y+Sy*4 Div 5); PlotLIne(x+Sx*12 Div 20,y+Sy*4 Div 5,x+Sx*8 Div 20,y+Sy*4 Div 5); PlotLIne(x+Sx*8 Div 20,y+Sy*4 Div 5,x+Sx*8 Div 20,y+Sy Div 5); PlotLIne(x+Sx*8 Div 20,y+Sy Div 5,x+Sx*12 Div 20,y+Sy Div 5); End;Procedure _0(x,y:Integer); Begin End;Procedure _10(x,y:Integer); Begin PlotLIne(x+sx,y+sy Div 2,x+sx Div 2,y+sy Div 2); PlotLIne(x+sx Div 2,y+sy Div 2,x+sx Div 2,y+sy); End;Procedure _11(x,y:Integer); Begin PlotLIne(x,y+sy Div 2,x+sx Div 2,y+sy Div 2); PlotLIne(x+sx Div 2,y+sy Div 2,x+sx Div 2,y+sy); End;Procedure _12(x,y:Integer); Begin PlotLIne(x+sx Div 2,y,x+sx Div 2,y+sy Div 2); PlotLIne(x+sx Div 2,y+sy Div 2,x+sx,y+sy Div 2); End;Procedure _13(x,y:Integer); Begin PlotLIne(x+sx Div 2,y,x+sx Div 2,y+sy Div 2); PlotLIne(x+sx Div 2,y+sy Div 2,x,y+sy Div 2); End;Procedure _14(x,y:Integer); Begin PlotLIne (x,y+sy Div 2,x+sx,y+sy Div 2); PlotLIne (x+sx Div 2,y,x+sx Div 2,y+sy); FillCircle(x+sx Div 2,y+sy Div 2,2); End;Procedure _15(x,y:Integer); Begin PlotLIne (x+sx Div 2,y+sy Div 2,x+sx,y+sy Div 2); PlotLIne (x+sx Div 2,y,x+sx Div 2,y+sy); FillCircle(x+sx Div 2,y+sy Div 2,2); End;Procedure _16(x,y:Integer); Begin PlotLIne (x,y+sy Div 2,x+sx Div 2,y+sy Div 2); PlotLIne (x+sx Div 2,y,x+sx Div 2,y+sy); FillCircle(x+sx Div 2,y+sy Div 2,2); End;Procedure _17(x,y:Integer); Begin PlotLIne (x,y+sy Div 2,x+sx,y+sy Div 2); PlotLIne (x+sx Div 2,y+sy Div 2,x+sx Div 2,y+sy); FillCircle(x+sx Div 2,y+sy Div 2,2); End;Procedure _18(x,y:Integer); Begin PlotLIne (x,y+sy Div 2,x+sx,y+sy Div 2); PlotLIne (x+sx Div 2,y,x+sx Div 2,y+sy Div 2); FillCircle(x+sx Div 2,y+sy Div 2,2); End; Begin If An=CurrentElement Then SetColOr(2) Else SetColOr(10); FillRect(Ax,Ay,Sx,Sy); SetColOr(4); Case An Of 1:_1(Ax,Ay); 2:_2(Ax,Ay); 3:_3(Ax,Ay); 4:_4(Ax,Ay); 5:_5(Ax,Ay); 6:_6(Ax,Ay); 7:_7(Ax,Ay); 8:_8(Ax,Ay); 9:_9(Ax,Ay); 10:_10(Ax,Ay); 11:_11(Ax,Ay); 12:_12(Ax,Ay); 13:_13(Ax,Ay); 14:_14(Ax,Ay); 15:_15(Ax,Ay); 16:_16(Ax,Ay); 17:_17(Ax,Ay); 18:_18(Ax,Ay); Else _0(Ax,Ay); End; End; Begin With Size Do Begin Sx:=x Div 3 - 2; Sy:=y Div 7 - 2; End; SetColOr(9); FillRect(0,0,Size.X,(Sy+2)*6+CurrentFont^.Height+2); SetColOr(4); WriteStr((Size.X-14*CurrentFont^.Width) Div 2, 0, 'Меню элементов'); For i:=1 To 6 Do For j:=1 To 3 Do ElDraw((j-1)*(Sx+2),(i-1)*(Sy+2)+CurrentFont^.Height+2,(i-1)*3+j); If CurrentElement=0 Then SetColOr(2) Else SetColOr(10); FillRect(0,(Sy+2)*6+CurrentFont^.Height+2,Size.X,Size.Y); SetColOr(15); WriteStr((Size.X-12*CurrentFont^.Width) Div 2,((Sy+2)*6+ CurrentFont^.Height Div 2 +2 + Size.Y) Div 2, 'Пустое место'); End;Procedure TToolBar.HAndleEvent; Var x,y:Integer; Begin Inherited HAndleEvent(Event); If (Event.What=evMouseDown) And (Event.Buttons=mbLeftButton) Then Begin x:=(Event.Where.X-CurrentFont^.Width-2) Div Sx; y:=(Event.Where.Y-CurrentFont^.Height-2) Div Sy-1; CurrentElement:=y*3+x+1; If Event.Where.Y>Sy*7+CurrentFont^.Height+2 Then CurrentElement:=0; DrawView; ClearEvent(Event); End; End; ConstructOr TShemeView.Init(Var R: TRect); Begin Inherited Init(R); Font:=@Font8x8; GrowMode:= GrowMode Or (gfGrowHiX+gfGrowHiY); End;Procedure TShemeView.Draw; Const Special:Integer=2; Var i,j: Integer; c:Byte;Procedure ElDraw(Ax,Ay:Integer; An,l:Byte);Procedure _1(x,y:Integer); Begin plotlIne (x,y+Sy1 Div 2,x+Sx1,y+Sy1 Div 2); End;Procedure _2(x,y:Integer); Begin PlotLIne (x+Sx1 Div 2+Special,y,x+Sx1 Div 2+Special,y+Sy1); End;Procedure _9(x,y:Integer); Begin PlotLIne (x,y+Sy1 Div 2,x+Sx1,y+Sy1 Div 2); PlotLIne (x+Sx1 Div 2+Special,y,x+Sx1 Div 2+Special,y+Sy1); End; Procedure _3(x,y:Integer); Begin PlotLIne (x,y+Sy1 Div 2,x+Sx1 Div 5+Special,y+Sy1 Div 2); PlotLIne (x+Sx1*4 Div 5+Special,y+Sy1 Div 2,x+Sx1,y+Sy1 Div 2); ThickCircle(x+Sx1 Div 2+Special,y+Sy1 Div 2,Sx1*2 Div 6,1); PlotLIne (x+Sx1 Div 4+Special,y+Sy1 Div 2,x+Sx1*3 Div 4+Special,y+Sy1Div 2); PlotLIne (x+Sx1*3 Div 4+Special,y+Sy1 Div 2,x+Sx1 Div2+Special,y+Sy1*12 Div 20); PlotLIne (x+Sx1*3 Div 4+Special,y+Sy1 Div 2,x+Sx1 Div 2+Special,y+Sy1*8Div 20); End; Procedure _4(x,y:Integer); Begin PlotLIne (x,y+Sy1 Div 2,x+Sx1 Div 5+Special,y+Sy1 Div 2); PlotLIne (x+Sx1*4 Div 5+Special,y+Sy1 Div 2,x+Sx1,y+Sy1 Div 2); ThickCircle(x+Sx1 Div 2+Special,y+Sy1 Div 2,Sx1*2 Div 6,1); PlotLIne (x+Sx1 Div 4+Special,y+Sy1 Div 2,x+Sx1*3 Div 4+Special,y+Sy1Div 2); PlotLIne (x+Sx1 Div 4+Special,y+Sy1 Div 2,x+Sx1 Div 2+Special,y+Sy1*12Div 20); PlotLIne (x+Sx1 Div 4+Special,y+Sy1 Div 2,x+Sx1 Div 2+Special,y+Sy1*8Div 20); End; Procedure _5(x,y:Integer); Begin PlotLIne (x+Sx1 Div 2+Special,y,x+Sx1 Div 2+Special,y+Sy1*3 Div 10); PlotLIne (x+Sx1 Div 2+Special,y+Sy1*7 Div 10,x+Sx1 Div2+Special,y+Sy1); ThickCircle(x+Sx1 Div 2+Special,y+Sy1 Div 2,Sx1*2 Div 6,1); PlotLIne (x+Sx1 Div 2+Special,y+Sy1*3 Div 8,x+Sx1 Div 2+Special,y+Sy1*5Div 8); PlotLIne (x+Sx1 Div 2+Special,y+Sy1*3 Div 8,x+Sx1*12 Div20+Special,y+Sy1 Div 2); PlotLIne (x+Sx1 Div 2+Special,y+Sy1*3 Div 8,x+Sx1*8 Div20+Special,y+Sy1 Div 2); End; Procedure _6(x,y:Integer); Begin PlotLIne (x+Sx1 Div 2+Special,y,x+Sx1 Div 2+Special,y+Sy1*3 Div 10); PlotLIne (x+Sx1 Div 2+Special,y+Sy1*7 Div 10,x+Sx1 Div2+Special,y+Sy1); ThickCircle(x+Sx1 Div 2+Special,y+Sy1 Div 2,Sx1*2 Div 6,1); PlotLIne (x+Sx1 Div 2+Special,y+Sy1*3 Div 8,x+Sx1 Div 2+Special,y+Sy1*5Div 8); PlotLIne (x+Sx1 Div 2+Special,y+Sy1*5 Div 8,x+Sx1*12 Div20+Special,y+Sy1 Div 2); PlotLIne (x+Sx1 Div 2+Special,y+Sy1*5 Div 8,x+Sx1*8 Div20+Special,y+Sy1 Div 2); End;Procedure _3(x,y:Integer); Begin PlotLIne (x,y+Sy1 Div 2,x+Sx1*2 Div 5+Special,y+Sy1 Div 2); PlotLIne (x+Sx1*3 Div 5+Special,y+Sy1 Div 2,x+Sx1+Special,y+Sy1 Div 2); PlotLIne (x+Sx1*3 Div 5+Special,y+Sy1 Div 8,x+Sx1*3 Div5+Special,y+Sy1*7 Div 8); PlotLIne (x+Sx1*2 Div 5+Special,y+Sy1 Div 3,x+Sx1*2 Div5+Special,y+Sy1*2 Div 3); End;Procedure _4(x,y:Integer); Begin PlotLIne (x,y+Sy1 Div 2,x+Sx1*2 Div 5+Special,y+Sy1 Div 2); PlotLIne (x+Sx1*3 Div 5+Special,y+Sy1 Div 2,x+Sx1+Special,y+Sy1 Div 2); PlotLIne (x+Sx1*2 Div 5+Special,y+Sy1 Div 8,x+Sx1*2 Div5+Special,y+Sy1*7 Div 8); PlotLIne (x+Sx1*3 Div 5+Special,y+Sy1 Div 3,x+Sx1*3 Div5+Special,y+Sy1*2 Div 3); End;Procedure _5(x,y:Integer); Begin PlotLIne (x+Sx1 Div 2+Special,y,x+Sx1 Div 2+Special,y+Sy1*2 Div 5); PlotLIne (x+Sx1 Div 2+Special,y+Sy1*3 Div 5,x+Sx1 Div 2+Special,y+Sy1); PlotLIne (x+Sx1 Div 8+Special,y+Sy1*2 Div 5,x+Sx1*7 Div8+Special,y+Sy1*2 Div 5); PlotLIne (x+Sx1 Div 3+Special,y+Sy1*3 Div 5,x+Sx1*2 Div3+Special,y+Sy1*3 Div 5); End;Procedure _6(x,y:Integer); Begin PlotLIne (x+Sx1 Div 2+Special,y,x+Sx1 Div 2+Special,y+Sy1*2 Div 5); PlotLIne (x+Sx1 Div 2+Special,y+Sy1*3 Div 5,x+Sx1 Div 2+Special,y+Sy1); PlotLIne (x+Sx1 Div 8+Special,y+Sy1*3 Div 5,x+Sx1*7 Div8+Special,y+Sy1*3 Div 5); PlotLIne (x+Sx1 Div 3+Special,y+Sy1*2 Div 5,x+Sx1*2 Div3+Special,y+Sy1*2 Div 5); End;Procedure _7(x,y:Integer); Begin If IsResist Then Begin PlotLIne(x,y+Sy1 Div 2,x+Sx1 Div 5+Special,y+Sy1 Div 2); PlotLIne(x+Sx1*4 Div 5+Special,y+Sy1 Div 2,x+Sx1,y+Sy1 Div 2); PlotLIne(x+Sx1 Div 5+Special,y+Sy1*12 Div 20,x+Sx1*4 Div5+Special,y+Sy1*12 Div 20); PlotLIne(x+Sx1*4 Div 5+Special,y+Sy1*12 Div 20,x+Sx1*4 Div5+Special,y+Sy1*8 Div 20); PlotLIne(x+Sx1*4 Div 5+Special,y+Sy1*8 Div 20,x+Sx1 Div5+Special,y+Sy1*8 Div 20); PlotLIne(x+Sx1 Div 5+Special,y+Sy1*8 Div 20,x+Sx1 Div5+Special,y+Sy1*12 Div 20); End Else If Currents[Sheme[i,j,2]]>0 Then Begin PlotLIne (x,y+Sy1 Div 2,x+Sx1 Div 5+Special,y+Sy1 Div 2); PlotLIne (x+Sx1*4 Div 5+Special,y+Sy1 Div 2,x+Sx1,y+Sy1 Div 2); PlotLIne (x+Sx1 Div 4+Special,y+Sy1 Div 2,x+Sx1*3 Div4+Special,y+Sy1 Div 2); PlotLIne (x+Sx1*3 Div 4+Special,y+Sy1 Div 2,x+Sx1 Div2+Special,y+Sy1*12 Div 20); PlotLIne (x+Sx1*3 Div 4+Special,y+Sy1 Div 2,x+Sx1 Div2+Special,y+Sy1*8 Div 20); End Else Begin PlotLIne (x,y+Sy1 Div 2,x+Sx1 Div 5+Special,y+Sy1 Div 2); PlotLIne (x+Sx1*4 Div 5+Special,y+Sy1 Div 2,x+Sx1,y+Sy1 Div 2); PlotLIne (x+Sx1 Div 4+Special,y+Sy1 Div 2,x+Sx1*3 Div4+Special,y+Sy1 Div 2); PlotLIne (x+Sx1 Div 4+Special,y+Sy1 Div 2,x+Sx1 Div2+Special,y+Sy1*12 Div 20); PlotLIne (x+Sx1 Div 4+Special,y+Sy1 Div 2,x+Sx1 Div2+Special,y+Sy1*8 Div 20); End; End;Procedure _8(x,y:Integer); Begin If IsResist Then Begin PlotLIne(x+Sx1 Div 2+Special,y,x+Sx1 Div 2+Special,y+Sy1 Div 5); PlotLIne(x+Sx1 Div 2+Special,y+Sy1*4 Div 5,x+Sx1 Div2+Special,y+Sy1); PlotLIne(x+Sx1*12 Div 20+Special,y+Sy1 Div 5,x+Sx1*12 Div20+Special,y+Sy1*4 Div 5); PlotLIne(x+Sx1*12 Div 20+Special,y+Sy1*4 Div 5,x+Sx1*8 Div20+Special,y+Sy1*4 Div 5); PlotLIne(x+Sx1*8 Div 20+Special,y+Sy1*4 Div 5,x+Sx1*8 Div20+Special,y+Sy1 Div 5); PlotLIne(x+Sx1*8 Div 20+Special,y+Sy1 Div 5,x+Sx1*12 Div20+Special,y+Sy1 Div 5); End Else If Currents[Sheme[i,j,2]]>0 Then




Похожие:

Математическое моделирование физических задач на ЭВМ iconРабочая программа дисциплины математическоЕ моделирование физических процессов
Дисциплина «Математическое моделирование физических процессов» является частью дисциплин подготовки студентов по направлению 200100...
Математическое моделирование физических задач на ЭВМ iconРабочая программа дисциплины электромагнитные методы контроля
Теория физических полей, Теория физических полей и математическое моделирование физических процессов, Электротехника
Математическое моделирование физических задач на ЭВМ iconРабочая программа дисциплины методы неразрушающего контроля направление ооп 200100 приборостроение профиль подготовки
Теория физических полей, Теория физических полей и математическое моделирование физических процессов, Электротехника, Материаловедение...
Математическое моделирование физических задач на ЭВМ iconРабочая программа дисциплины математическое моделирование специальность ооп 140801 – Электроника и автоматика физических установок
Обеспечивающее подразделение кафедра Электроники и автоматики физических установок
Математическое моделирование физических задач на ЭВМ iconРабочая программа дисциплины акустические методы контроля
Теория физических полей, Теория физических полей и математическое моделирование фиэических процессов, Электротехника
Математическое моделирование физических задач на ЭВМ iconМатематическое моделирование теплофизики формирования монокристаллической отливки 05. 13. 18 математическое моделирование, численные методы и комплексы программ

Математическое моделирование физических задач на ЭВМ iconЛитература для подготовки по дисциплине «Математическое моделирование»
Введение в математическое моделирование./ Под ред. П. В. Трусова. М.: Интермет Инжиниринг, 2000
Математическое моделирование физических задач на ЭВМ iconР ейтинг-план по дисциплине «Математическое моделирование электромеханических систем» тпу 1/ЕН. Р. 07. 4/2010-2011
Индивидуальное задание «Математическое моделирование замкнутой электромеханической системы аналитическими и численными методами»
Математическое моделирование физических задач на ЭВМ iconРабочая программа дисциплины математическое моделирование физических процессов
Прреквизиты: Информатика, Теория вероятностей и математическая статистика, Элементы компьютерной математики
Математическое моделирование физических задач на ЭВМ iconПлан-конспект урока Математическое моделирование при решении экологических задач

Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©rushkolnik.ru 2000-2015
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы