После лабораторных работ (Решение систем линейных алгебраических уравнений, Методы численного интегрирования, Численное дифференцирование функций, Приближенные методы решения обыкновенных дифференциальных уравнений, Аппроксимация функций) часто следует курсовая работа. В последнее время я ничего не публиковал из университетских работ. Но я не бездельничал — в курсовой работе много графиков, формул и таблиц…
СОДЕРЖАНИЕ
ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ПО ВЫБРАННОМУ МЕТОДУ РАСЧЁТА ЭЛЕКТРИЧЕСКОЙ ЦЕПИ.. 4
РАСЧЁТ ЦЕПИ С ПОМОЩЬЮ ПРОГРАММЫ: 12
Разработка необходимых структур данных. 12
Разработка алгоритма решения задачи. 12
Описание необходимых методов вычислительной математики. 16
Описание вспомогательных процедур и функций, используемых при решении задачи. 17
Результаты расчёта электрической цепи с помощью разработанной программы: 18
МОДЕЛИРОВАНИЕ ЦЕПИ В СХЕМНОМ ЭМУЛЯТОРЕ Electronics Workbench 5.12. 20
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ… 23
ПРИЛОЖЕНИЕ. ЛИСТИНГ ПРОГРАММЫ. 24
ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
Задачей данной курсовой работы является практическое применение методов вычислительной математики для расчёта электрической цепи.
Задание.
Рассчитать выбранную согласно варианту электрическую схему (см. «Варианты электрических цепей») тремя способами. Провести анализ полученных результатов.
Расчёт необходимо произвести следующими способами:
- Вручную: расчёт осуществляется по приведенным формулам (см. «Теоретические сведения») выбранной методики расчёта (см. «Методы расчёта»).
- Программно: расчёт цепи осуществляет программа, в которой реализованы необходимые методы вычислительной математики (см. «Вспомогательные методы»).
- С помощью схемного эмулятора Electronics Workbench12: выбранная схема «собирается» в Electronics Workbench 5.12 и расчёт осуществляется с его помощью.
Выбор методики расчёта:
Вариант 13.
Формулы для вычисления индивидуального задания:
№ электрической схемы=(№ студента по списку + 2*(№ группы-40)) mod 16+1
№ метода решения системы уравнений =№ студента по списку mod 5+1
№ метода вычисления определителя =№ студента по списку mod 2+1
№ метода вычисления обратной матрицы=№ студента по списку mod 2+1
Согласно этим формулам:
№ электрической схемы=(13 + 2*(42-40)) mod 16+1=(13+2*2) mod 16+1=17 mod 16 +1=1+1=2.
№ метода решения системы уравнений = 13 mod 5+1=3+1=4
№ метода вычисления определителя =13 mod 2+1=1+1=2
№ метода вычисления обратной матрицы=13 mod 2+1=1+1=2
Отсюда:
Электрическая схема:
Метод решения системы уравнений:
Гаусса-Зейделя.
Метод вычисления определителей:
По определению: с использованием алгебраических дополнений
Метод вычисления обратной матрицы:
Гаусса-Жордана.
ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ПО ВЫБРАННОМУ МЕТОДУ РАСЧЁТА ЭЛЕКТРИЧЕСКОЙ ЦЕПИ
При расчёте электрических цепей используются два закона Кирхгофа.
Первый закон Кирхгофа, или закон Кирхгофа для узлов:
Сумма токов, расходящихся от узла электрической цепи, равна нулю.
При составлении уравнений согласно первому закону Кирхгофа необходимо задаться условно-положительными направлениями токов во всех ветвях, обозначив их на схеме стрелками. В левой части уравнения следует ставить знак «плюс» перед буквенными обозначениями токов, положительное направление которых принято от узла, и знак «минус» перед буквенными обозначениями токов, положительное направление которых принято к узлу. Для случая, представленного на рисунке следует написать:
-i1+i2+i3=0
Если в результате расчёта будет получено для некоторого тока в некоторый момент времени положительное число, то это значит, что ток имеет в данный момент времени действительное направление согласно стрелке. Если же будет получено отрицательное значение, то этот тот в действительности направлен против стрелки.
Второй закон Кирхгофа, или закон Кирхгофа для контуров.
Сумма падений напряжения во всех ветвях любого замкнутого контура электрической цепи равна сумме ЭДС источников энергии, действующих в этом контуре.
Для составления уравнений согласно второму закону Кирхгофа должны быть заданы положительные направления токов ik и ЭДС ek источников энергии во всех ветвях.
Метод непосредственного применения законов Кирхгофа громоздок. Имеется возможность уменьшить количество совместно решаемых уравнений системы. Число уравнений, составленных по методу контурных токов, равно количеству уравнений, составляемых по второму закону Кирхгофа.
Метод контурных токов заключается в том, что вместо токов в ветвях определяются, на основании второго закона Кирхгофа, так называемые контурные токи, замыкающиеся в контурах.
На рисунке в качестве примера изображена двухконтурная схема, в которой I11 и I22 — контурные токи.
Токи в сопротивлениях R1 и R2 равны соответствующим контурным токам. Ток в сопротивлении R3, являющийся общим для обоих контуров, равен разности контурных токов I11 и I22, так как эти токи направлены в ветви с R3 встречно.
Порядок расчета
Выбираются независимые контуры, и задаются произвольные направления контурных токов.
В нашем случае эти токи направлены по часовой стрелке. Направление обхода контура совпадает с направлением контурных токов. Уравнения для этих контуров имеют следующий вид:
Перегруппируем слагаемые в уравнениях
Суммарное сопротивление данного контура называется собственным сопротивлением контура.
Собственные сопротивления контуров схемы
Сопротивление R3, принадлежащее одновременно двум контурам, называется общим сопротивлением этих контуров.
где R12 — общее сопротивление между первым и вторым контурами;
R21 — общее сопротивление между вторым и первым контурами.
E11 = E1 и E22 = E2 — контурные ЭДС.
В общем виде уравнения (4.4) и (4.5) записываются следующим образом:
Собственные сопротивления всегда имеют знак «плюс».
Общее сопротивление имеет знак «минус», если в данном сопротивлении контурные токи направлены встречно друг другу, и знак «плюс», если контурные токи в общем сопротивлении совпадают по направлению.
Решая уравнения (1) и (2) совместно, определим контурные токи I11 и I22, затем от контурных токов переходим к токам в ветвях.
Ветви схемы, по которым протекает один контурный ток, называются внешними, а ветви, по которым протекают несколько контурных токов, называются общими. Ток во внешней ветви совпадает по величине и по направлению c контурным. Ток в общей ветви равен алгебраической сумме контурных токов, протекающих в этой ветви.
УТОЧНЕНИЕ ЗАДАНИЯ:
В силу специфики итерационного метода Гаусса-Зейделя система составленная система уравнений может не сойтись. Скорее всего система уравнений, составленная просто применением законов Кирхгофа не сойдётся, так как в уравнениях, составленных для узлов системы модули диагональных коэффициентов будут либо равны нулю, либо единице. Но и в том и в другом случае они будут меньше сумм модулей всех остальных коэффициентов. Следовательно, метод Гаусса-Зейделя скорее всего не сойдётся на системе уравнений, составленной прямым применением законов Кирхгофа.
В связи с описанной выше проблемой система уравнений будет составляться методом контурных токов (хотя в определённых условиях метод Гаусса-Зейделя может не сойтись и для этой системы). Но прямое применение законов Кирхгофа всё равно необходимо, так как после применения метода контурных токов будут получены только контурные токи, но не сами токи схемы. По уравнениям, составленным по законам Кирхгофа, предполагается вычислять истинные значения токов схемы.
РУЧНОЙ МЕТОД РАСЧЁТА
Для расчёта обозначим на схеме элементы:
Приведённую выше схему можно упростить.
Резисторы R4 и R5 соединены последовательно, следовательно, их можно объединить в один. Объединённый резистор назовём R45. Его сопротивление будет равно R45=R4+R5.
Резисторы R7 и R10 соединены последовательно, следовательно, их можно объединить в один. Назовём его R710. Его сопротивление будет равно R710=R7+R10.
В результате преобразований получим следующую схему:
В схеме только резисторы и источники тока и напряжения. Решим схему методом контурных токов. Расставим направления токов, обозначим и обозначим направления контурных токов:
Непосредственно применим правила Кирхгофа. Это пригодится в дальнейшем для вычисления токов из контурных токов:
На рисунке изображено 6 узлов, но важны только 5. Шестой узел не даёт новой информации. Запишем уравнения по первому закону Кирхгофа для пяти узлов:
- i1+i4-i5=0
- –i1+i3+i2+I1=0
- –I1+i6-i7+i8=0
- –i8-i2+i9=0
- –i9+i7+i10+i5=0
Теперь запишем уравнения по второму закону Кирхгофа. Чтобы не загромождать рисунок на нём не были обозначены направления напряжений. Направления напряжения будем считать совпадающим с направлением токов. Например, uR1 имеет направление от узла 1 к узлу 2, uR2 имеет направление от узла 2 к узлу 4.
Уравнения, записанные по второму закону Кирхгофа:
uR2-uR6+uR45-uR3=E4
uR1+uR3=-E1
-uR45+uR8=-E3
uR6+uR9=E3
-uR8+uR710=E1+E2
Заменим напряжения через токи по формуле u=i*R:
i2*R2-i8*R6+i6*R45-i3*R3=E4
i1*R1+i3*R3=-E1
-i6*R45+i10*R8=-E3
i8*R6+i9*R9=E3
-i10*R8+i5*R710=E1+E2
Следовательно, исходное задание сводится к решению системы уравнений:
Теперь заменим источник тока I1 на эквивалентный источник ЭДС E5. E5=(R2+R6*R9/(R6+R9))I1. Тогда получится следующая схема:
Составим уравнения для полученных контуров:
Теперь выразим токи через контурные токи.
i1=I11
i2=i2*-I1=I22-I1
i3=I11-I22
i4=I55-I11
i5=I55
i6=X(2)-X(3)
i10=X(3)-X(5)
i8=-(E4+i3*R3-i6*(R45)-i2*R2)/R6
i7=-I1+i6+i8
i9=i2+i8
Для ручного метода расчёта уравнения были записаны в матричной форме.
Зададим значения:
R=1000;
R1=R;
R2=R;
R3=R;
R4=R;
R5=R;
R6=R;
R7=R;
R8=R;
R9=R;
R10=R;
R45=R4+R5;
R710=R7+R10;
E1=12;
E2=12;
E3=12;
E4=12;
I1=1;
Составим матрицу системы уравнений:
2000 -1000 0 0 0 -12
-1000 5000 -2000 -1000 0 1512
0 -2000 3000 0 -1000 -12
0 -1000 0 2000 0 12
0 0 -1000 0 3000 24
Решим её методом Жордана-Гаусса:
1.0000 0 0 0 -0.0000 0.2958
0 1.0000 0 0 0 0.6036
0 0 1.0000 0 0 4512
0 0 0 1.0000 0 0.3078
0 0 0 0 1.0000 0.1584
Теперь найдём токи по следующим формулам:
i1=I11
i2=I22-I1
i3=I11-I22
i4=I55-X(1)
i5=I55
i6=I22-I33
i10=I33-I55;
i8=-(E4+i3*R3-i6*(R45)-i2*R2)/R6;
i7=-I1+i6+i8
R69=R6*R9/(R6+R9);
i9=i2+i8
Получим следующие значения:
i1 = 0.2958 (А)
i2 = -0.3964 (А)
i3 = -0.3078 (А)
i4 = -0.1374 (А)
i5 = 0.1584 (А)
i6 = 0.1524 (А)
i7 = -0.6434 (А)
i8 = 0.2042 (А)
i9 = -0.1922 (А)
i10 = 0.2928 (А)
Затем был произведён расчёт для следующих входных данных:
R=2000;
R1=10000;
R2=2500;
R3=1000;
R4=1100;
R5=2900;
R6=5000;
R7=3400;
R8=7500;
R9=900;
R10=2300;
R45=R4+R5;
R710=R7+R10;
E1=2;
E2=1;
E3=20;
E4=12;
I1=1;
Запишем систему уравнений в матричной форме:
1.0e+004 *
1.1000 -0.1000 0 0 0 -0.0002
-0.1000 1.2500 -0.4000 -0.5000 0 0.3275
0 -0.4000 1.1500 0 -0.7500 -0.0020
0 -0.5000 0 0.5900 0 0.0020
0 0 -0.7500 0 1.3200 0.0003
Решим систему методом Жордана-Гаусса:
1.0000 0 -0.0000 0 0 0.0499
0 1.0000 -0.0000 0 0 0.5504
0 0 1.0000 0 0 0.3016
0 0 -0.0000 1.0000 -0.0000 0.4699
0 0 -0.0000 0 1.0000 0.1716
Найдём токи:
i1 = 0.0499 (А)
i2 = -0.4496 (А)
i3 = -0.5006 (А)
i4 = 0.1218 (А)
i5 = 0.1716 (А)
i6 = 0.2488 (А)
i7 = -0.6792 (А)
i8 = 0.0720 (А)
i9 = -0.3776 (А)
i10 = 0.1300 (А)
РАСЧЁТ ЦЕПИ С ПОМОЩЬЮ ПРОГРАММЫ:
Разработка необходимых структур данных
Для хранения коэффициентов будет использоваться матрица A. Для хранения элементов bi , будет использоваться матрица B, размера 10 на 1.
Например, для системы уравнений:
Матрица A будет выглядеть следующим образом:
2 3
5 6
А матрица B будет выглядеть так:
5
7
Для приведения системы к виду, необходимому методу Гаусса-Зейделя была создана матрица Dopust, о действиях с которой написано в пункте «Разработка алгоритма решения задачи»
Разработка алгоритма решения задачи
Для того, чтобы систему можно было решить методом Гаусса-Зейделя необходимо, чтобы её коэффициенты ai,j, расположенные на главной диагонали были отличны от нуля. Поэтому сначала необходимо привести систему к нужному нам виду.
Для приведения системы к такому виду была введена матрица Dopust, которая будет для каждого строки матрицы A хранить номера тех строк, которые могут встать на их место, чтобы элемент A(i,j) был отличен от нуля. Затем перебором комбинаций из Dopust получим ту комбинацию, которая делает матрицу A подходящей для решения методом Гаусса-Зейделя.
Например, для матрицы A^
0 2 0
3 0 4
0 0 3
Матрица Dopust будет следующей:
2 0 0
1 0 0
2 3 0
Что означает, что вместо первой строки может быть только вторая строка, вместо второй строки — только первая строка, вместо третьей строки могут быть вторая и третья строка. Теперь осталось перебрать все комбинации из Dopust (в данном случае это 2,1,2 и 2,1,3, но у первой комбинации есть повторяющиеся элементы 2 и 2, значит будет выбрана вторая комбинация) .
Однако в процессе реализации алгоритма оказалось, что проще для обработки сделать так. чтобы строки с одним элементом из Dopust повторили свой одиночный элемент. Тогда Dopust будет выглядеть так:
2 2 0
1 1 0
2 3 0
Алгоритм, реализующий перестановку строк (подготовка системы уравнений к решению методом Гаусса-Зейделя):
Приведённый выше алгоритм заполняет матрицу Dostup и инициализирует массив указателей Index.
Затем перебираем все комбинации из Dopust:
В результате действия приведённого выше алгоритма массив Index совместно с массивом Dopust будет указывать на номера строк, находящейся в той последовательности, которая необходима для получения системы уравнений, которую можно решить методом Гаусса-Зейделя. Например, Dopust(1,Index(1)) будет указывать на номер строки, которая должна быть первой. Приведение системы к нужному виду с помощью массивов Index и Dopust не является сложной задачей, поэтому здесь она рассматриваться не будет.
Алгоритм программы, реализующей алгоритм Гаусса-Зейделя:
Описание необходимых методов вычислительной математики
Далее для полученной системы уравнений, а выражаясь конкретнее матриц A и B применяется метод Гаусса-Зейделя. Алгоритм Гаусса-Зейделя применим для систем уравнений с элементами aij не равными 0. Но в случае, если элементы aij равны нулю, то можно переставить местами строки.
Описание метода Гаусса-Зейделя:
Пусть имеется система:
a11x1+a12x2+…a1jxj+…a1nxn=b1
a21x1+a22x2+…a2jxj+…a2nxn=b2
…
ai1x1+ai2x2+…aijxj+…ainxn=bi
…
am1x1+am2x2+…amjxj+…amnxn=bm
Задаются начальные (нулевые) приближения значений неизвестных: x1=x1(0), x2=x2(0), …
Затем из исходной системы выражаются x1, x2,…,xj,…xn.:
xi=1/aii*(bi—ai1x1—ai2x2-…-ai,i-1xi-1—ai,i+1xi+1+…+ai,nxn)
В эту формулу подставляются имеющиеся на данном этапе последние приближения x-ов и вычисляются новые значения x-ов.
Итерационный процесс продолжается до тех пор, пока значения x-ов(k) не станут близкими с заданной погрешностью к значениям x-ов(k-1).
Итерационный процесс сходится не всегда. Для сходимости итерационного процесса достаточно, чтобы модули диагональных коэффициентов для каждого уравнения системы были меньше сумм модулей всех остальных коэффициентов:
При этом хотя бы для одного уравнения неравенство должно выполняться строго. Эти условия являются достаточными для сходимости метода, но они не являются необходимыми, то есть для некоторых систем итерации сходятся и при нарушении этого условия.
Описание вспомогательных процедур и функций, используемых при решении задачи
Функция Podgotovka реализована на основе алгоритма, который приводит систему уравнений к виду, подходящему для решения методом Гаусса-Зейделя.
Функция GaussZeidel вызывает функцию Podgotovka в самом начале своей работы. Входными параметрами функции GaussZeidel является матрица A – матрица коэффициентов системы уравнений, матрица B – столбец правых частей уравнений, eps – точность, с которой необходимо решить систему уравнений, max – максимальное количество итераций, которое может сделать функция перед тем, как возвратить значение 0 (то есть система уравнений не имеет решения). После выполнения основного цикла алгоритма Гаусса-Зейделя , поскольку алгоритм сходится не всегда была сделана проверка на то, достигнута ли необходимая точность. Если точность не достигнута, то функция возвращает значение 0.
Вспомогательная функция WriteDecision вычисляет значения токов на основе контурных токов и выводит их на экрна. У этой функции только один входной параметр – матрица X, все остальные данные — глобальные переменные.
Тестирование программы:
A | B | Результат X | A*X= |
0 2 0
3 0 4 0 0 3 |
4
7 0 |
2.3333
2.0000 0 |
4
7 0 |
0 0 2
3 0 4 6 3 3 |
4
7 5 |
-0.3333
0.3333 2.0000 |
4
7 5 |
0 0 2 0
3 0 4 0 6 3 3 0 7 0 0 3 |
4
7 5 10 |
-0.3333
0.3333 2.0000 4.1111 |
4
7 5 10 |
0 0 2 1
3 0 4 0 6 3 0 0 7 0 0 3 |
2
3 5 10 |
0.7391
0.1884 0.1957 1.6087 |
2
3 5 10 |
Как видно в таблице A*X во всех строках равно B, следовательно программа работает верно.
Результаты расчёта электрической цепи с помощью разработанной программы:
Случай 1:
Исходные данные:
R=1000;
R1=R;
R2=R;
R3=R;
R4=R;
R5=R;
R6=R;
R7=R;
R8=R;
R9=R;
R10=R;
R45=R4+R5;
R710=R7+R10;
E1=12;
E2=12;
E3=12;
E4=12;
I1=1;
A=[
% i1 i2 i3 i4 i5 i6 i7 i8 i9 i10
1 0 0 1 -1 0 0 0 0 0
-1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 1 -1 1 0 0
0 -1 0 0 0 0 0 -1 1 0
0 0 0 0 1 0 1 0 -1 1
0 R2 -R3 0 0 R45 0 -R6 0 0
R1 0 R3 0 0 0 0 0 0 0
0 0 0 0 0 -R45 0 0 0 R8
0 0 0 0 0 0 0 R6 R9 0
0 0 0 0 R710 0 0 0 0 -R8
]
B=[
0
-I1
I1
0
0
E4
-E1
-E3
E3
E1+E2
]
Результат работы программы:
i1= 0.2958
i2= -0.3964
i3= -0.3078
i4= -0.1374
i5= 0.1584
i6= 0.1524
i7= -0.6434
i8= 0.2042
i9= -0.1922
i10= 0.2928
Случай 2:
Исходные данные:
R=2000;
R1=10000;
R2=2500;
R3=1000;
R4=1100;
R5=2900;
R6=5000;
R7=3400;
R8=7500;
R9=900;
R10=2300;
R45=R4+R5;
R710=R7+R10;
E1=2;
E2=1;
E3=20;
E4=12;
I1=1;
A=[
% I11 I22 I33 I44 I55
(R1+R3) -R3 0 0 0
-R3 (R3+R2+R6+R45) -R45 -R6 0
0 -R45 (+R45+R8) 0 -R8
0 -R6 0 (R6+R9) 0
0 0 -R8 0 (R7+R10+R8)
]
rr2=R6*R9;
rr3=R6+R9;
rr4=rr2/rr3;
rr5=rr4+R2;
B=[
-E1
rr5*I1+E4
-E3
E3
E1+E2
Результат работы программы:
i1 = 0.0499 (А)
i2 = -0.4496 (А)
i3 = -0.5006 (А)
i4 = 0.1218 (А)
i5 = 0.1716 (А)
i6 = 0.2488 (А)
i7 = -0.6792 (А)
i8 = 0.0720 (А)
i9 = -0.3776 (А)
i10 = 0.1300 (А)
МОДЕЛИРОВАНИЕ ЦЕПИ В СХЕМНОМ ЭМУЛЯТОРЕ Electronics Workbench 5.12
В результате моделирования схемы на схемном эмуляторе был получен следующий результат:
Случай1:
Случай 2:
На схемах на всех ветвях расставлены амперметры, которые будут выдавать значения токов.
АНАЛИЗ РЕЗУЛЬТАТОВ
Составим сводную таблицу результатов:
Случай 1:
Расчет вручную (А) | Расчёт программно (А) | Схемный эмулятор (А) | |
i1
i2 i3 i4 i5 i6 i7 i8 i9 i10 |
i1= 0.2958
i2= -0.3964 i3= -0.3078 i4= -0.1374 i5= 0.1584 i6= 0.1524 i7= -0.6434 i8= 0.2042 i9= -0.1922 i10= 0.2928 |
i1= 0.2958
i2= -0.3964 i3= -0.3078 i4= -0.1374 i5= 0.1584 i6= 0.1524 i7= -0.6434 i8= 0.2042 i9= -0.1922 i10= 0.2928 |
i1= 0.2958
i2= -0.3964 i3= -0.3078 i4= -0.1374 i5= 0.1584 i6= 0.1524 i7= -0.6434 i8= 0.2042 i9= -0.1922 i10= 0.2928 |
Случай 2:
Расчет вручную (А) | Расчёт программно (А) | Схемный эмулятор (А) | |
i1
i2 i3 i4 i5 i6 i7 i8 i9 i10 |
i1 = 0.0499
i2 = -0.4496 i3 = -0.5006 i4 = 0.1218 i5 = 0.1716 i6 = 0.2488 i7 = -0.6792 i8 = 0.0720 i9 = -0.3776 i10 = 0.1300
|
i1 = 0.0499
i2 = -0.4496 i3 = -0.5006 i4 = 0.1218 i5 = 0.1716 i6 = 0.2488 i7 = -0.6792 i8 = 0.0720 i9 = -0.3776 i10 = 0.1300
|
i1=0.04986
i2=-0.4496 i3=-0.5006 i4=0.1218 i5=0.1716 i6=0.2488 i7=-0.6792 i8=0.07197 i9=-0.3776 i10=0.1300 |
Как видно из таблицы токи совпадают с найденными значениями. Следовательно, все предыдущие вычисления были проделаны верно. Для некоторых токов получены отрицательные значения. Это значит, что данный ток течёт в направлении, отличном от выбранного.
ЗАКЛЮЧЕНИЕ
Мы изучили расчёт схем методом контурных токов и применением законов Кирхгофа. Также был изучен метод Гаусса-Зейделя, с помощью которого были решены системы уравнений, полученные методом контурных токов.
Поскольку результаты трёх видов расчёта совпали, то это значит, что методом Гаусса – Зейделя можно решать системы уравнений и основная сложность заключается в приведении системы уравнений к тому виду, в котором эта система уравнений необходима методу Гаусса-Зейделя. То есть в перестановке строк таким образом, что на главной диагонали будут отличные от нуля коэффициенты.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
- Турчак Л. И. Основы численных методов: Учеб. пособие. — М.: Наука, Гл. ред. физ.-мат. лит., 1987. — 320 с.
- Теоретические основы электротехники: В 3-х т. Учебник для вузов. Том 1. — 4-е издание. /К. С. Демирчян, Л. Р. Нейман, Н В. Коровкин, В. Л. Чечурин. — СПб.: Питер, 2004. — 463 с.: ил.
- Анализ сложных электрических цепей с несколькими источниками энергии (HTML документ)
- Анализ электрических цепей постоянного тока с одним источником энергии (HTML документ)
- Эквивалентные преобразования схем (HTML документ)
- Основные определения (HTML документ)
- Численные методы. Волков Е. А.: Учебное пособие. — М.: Наука. Главная редакция физико-математической литературы, 1982. — 256 с.
ПРИЛОЖЕНИЕ. ЛИСТИНГ ПРОГРАММЫ.
Файл «Data.m» (файл с исходными данными):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
R=1000; R1=R; R2=R; R3=R; R4=R; R5=R; R6=R; R7=R; R8=R; R9=R; R10=R; R45=R4+R5; R710=R7+R10; E1=12; E2=12; E3=12; E4=12; I1=1; A=[ % i1 i2 i3 i5 i6 i7 i8 i9 10 i11 1 0 0 1 -1 0 0 0 0 0 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 1 0 0 0 -1 0 0 0 0 0 -1 1 0 0 0 0 0 1 0 1 0 -1 1 % 0 0 -1 -1 0 -1 0 0 0 -1 0 R2 -R3 0 0 R45 0 -R6 0 0 R1 0 R3 0 0 0 0 0 0 0 0 0 0 0 0 -R45 0 0 0 R8 0 0 0 0 0 0 0 R6 R9 0 0 0 0 0 R710 0 0 0 0 -R8 ] B=[ 0 -I1 I1 0 0 % 0 E4 -E1 -E3 E3 E1+E2 ] |
Файл «kurs.m» (главный файл программы):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
DataKontT % A=[ % 0 0 2 1 % 3 0 4 0 % 6 3 0 0 % 7 0 0 3 % ] % B=[2 % 3 % 5 % 10 % ] % [k1,k2]=size(A) X=GaussZeidel(A,B,0.00001,200); WriteDecision |
Файл «GaussZeidel.m» (Реализация метода Гаусса-Зейделя):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
function X=GaussZeidel(A,B,eps,max); %Obyavleniye: %function X=GaussZeidel(A,B); %gde A i B vzyati iz matrichnogo uravneniya %A*X=B %Funkciya vozvrashaet matricuX, yavlyayusheysya resheniyem %sistemi uravneniy [k1,k2]=size(A); k=1; %Vizov proceduri podgotovka. %Procedura podgotovka perestavlyaet v sisteme uravneniy stroki tak, %chtobi na glavnoy diagonali stoyali otlichniye ot nulya znacheniya Podgotovka % A2(:,k1+1)=B2; % X=Gordan(A2,1,1,10,10) % X=X(:,k1+1); % pause %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if (yes==0) disp('ERROR: nedopustimoye znacheniye matrici A'); X=0; return end; A=A2 B=B2 X=0; X=zeros(1,k1); % X=A\B; %zapolyaem matricu X sluchaynimi znacheniyami %Eto budet nachalnim znacheniyem % X=rand(k1,1); % X=[ % 0.2950000000000 % -0.3960000000000 % -0.3070000000000 % -0.1370000000000 % 0.1580000000000 % 0.1520000000000 % -0.6430000000000 % 0.2040000000000 % -0.1920000000000 % 0.2920000000000] XL=X; ceps=eps*10; iter=0; while (ceps>eps) % X=A\B; X=X+eps*rand(1); iter=iter+1; if (iter>=max ) iter=0;break; end; for m=1:k1 X(m)=B(m); for n=1:k2 if n==m continue; end; X(m)=X(m)-A(m,n)*X(n); end; X(m)=X(m)/A(m,m); end % A % B % X % m % pause ceps=0; for m=1:k1 ceps=abs(X(m)-XL(m)); if ceps>eps break; end; end XL=X; % X % pause end; X=X'; %Teper esli ne udalos naiti resheniye metodom Gaussa-Zeildelya %To naidem ego metodom gaussa-Gordana if (ceps>eps) % A2(:,k1+1)=B2; % X=Gordan(A2,1,1,10,10) % X=X(:,k1+1); X=0; disp('NE UDALOS RESHIT METODOM AUSSA ZEIDELA') end % A % B % X % X=A\B % A*X |
Файл «Podgotovka.m» (подготовка системы уравнений к решению методом Гаусса-Зейделя):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
%Vichisleniya dopustimih perestanovok strok for n=1:k1 Dopust(n,1)=n; k=1; %Vichisleniye dopustimoy perestanovki strok dlya stroki m for m=1:k1 if (A(m,n)~=0) Dopust(n,k)=m; k=k+1; end; end; if (k==2) Dopust(n,k)=Dopust(n,k-1); k=k+1; end; Dopust(n,k)=0; end m=1; for n=1:k1 Index(n)=1; m=m+1; end; n=k1; yes=0; %Dalee sredi vseh dopustimoh znacheniy nahodim to %kotoroe dayet nam matricu s elementami naglavnoy %diagonali, otlichnimi ot nulya while n~=0 yes=1; for m=1:k1 yes2=1; for hj=1:k1 if (Dopust(m,Index(m))==Dopust(hj,Index(hj)) && (m~=hj)) yes=0; continue; end; end if yes2==0 yes=0; continue;end; end; if (yes==1) n=0; continue; end; if Dopust(n,Index(n)+1)~=0 Index(n)=Index(n)+1; n=k1; if (n>k1) n=n-1; end; else Index(n)=1; n=n-1; end; end; end; end; Dopust; Index; if (yes==0) disp('ERROR: nedopustimoye znacheniye matrici A'); end; %Teper perestavlyaem stroki v sootvetstvii s poluchenoy %perestanovkoy for m=1:k1 A2(m,:)=A(Dopust(m,Index(m)),:); B2(m)=B(Dopust(m,Index(m))); G(1,m)=Dopust(m,Index(m)); end; B2=B2'; |
Файл «WriteDecision.m» (Вывод результатов расчета на экран. То есть расчёт токов схемы и их вывод на экран.):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
%WriteDecision % %Funkciya vichislyaet i vivodit na ekran znacheniya % tokov shemi. i1=X(1) i2=X(2)-I1 i3=X(1)-X(2) i4=X(5)-X(1) i5=X(5) i6=X(2)-X(3) i10=X(3)-X(5); i8=-(E4+i3*R3-i6*(R45)-i2*R2)/R6; i7=-I1+i6+i8 R69=R6*R9/(R6+R9); i8 i9=i2+i8 i10 R=0; |
ZIP-архив с исходными кодами программы и файлами эмулятора Electronics Workbench 5.12