Условие
Задана электрическая схема из некоторого количества узлов и N резисторов, их
соединяющих. Напишите программу, вычисляющую сопротивление между
двумя заданными узлами A и B этой схемы. Допускается частичное решение
задачи для случая параллельно-последовательных схем.
Пояснения для тех, кто плохо учил в школе физику:
1. Сила тока равна напряжению, поделенному на сопротивление: I = U
/
R.
2. Сумма токов, втекающих в узел, равна сумме токов, вытекающих из него.
3. Сумма падений напряжений I · R на отдельных участках произвольного
замкнутого контура равна сумме всех ЭДС в этом контуре.
Как следствие, получаем следующие формулы:
1. При последовательном соединении резисторов с сопротивлениями R1
и R2 общее сопротивление R вычисляется по формуле R = R1
+
R2;
2. При параллельном соединении резисторов с сопротивлениями R1
и R2
общее сопротивление R вычисляется по формуле 1
/
R = 1
/
R1
+
1
/
R2.
Входные данные
В первой строке входного файла содержится целое число N – количество
резисторов в схеме (1 ≤ N ≤ 50). Во второй строке записаны номера узлов A и B
(узлы нумеруются начиная с 1). Каждая из следующих N строк содержит
описание очередного резистора в виде тройки целых чисел из диапазона
[0, 32767], записанных через пробел. Первые два числа задают номера двух
различных узлов схемы, которые этот резистор соединяет, а третье – его
сопротивление. Между двумя узлами схемы могут располагаться несколько
резисторов.
Выходные данные
Выведите в выходной файл искомое сопротивление не менее чем с 6 верными
значащими цифрами.
Пример входного файла
4
1 2
1 3 1
3 4 1
4 3 1
2 4 1
Пример выходного файла
2.50
Решение
Скачать архив тестов и решений
К заданному в условии задачи мультиграфу дополнительно добавим ребро от A
к B, на котором располагается источник ЭДС. Для каждого ребра заведем
неизвестную, равную току, протекающему по этому ребру в каком-то
фиксированном направлении. Используем теперь алгоритм нахождения фундаментального множества
циклов в графе [Липский 88, п. 2.5]. Для каждого построенного цикла
выпишем в виде уравнения на введенные неизвестные закон Кирхгофа для напряжений,
указанный в условии задачи. (Ясно, что уравнения для всех остальных циклов
будут линейными комбинациями выписанных.) Кроме того, для каждого узла
можно записать уравнение равенства сумм токов, втекающих и вытекающих из
него. Такое уравнение нужно записать для всех узлов схемы, кроме любого
одного (докажите, что уравнение для него равно сумме предыдущих с обратным
знаком). Полученную систему из N+1 линейного уравнения на N+1 неизвестную
решаем, например, методом Гаусса.
Упражнения
1. Докажите, что общее количество построенных уравнений (т.е. количество
циклов в фундаментальном множестве циклов плюс количество узлов в схеме)
равняется N+1.
2. Докажите, что полученная система линейных уравнений является
невырожденной, т.е. будет иметь единственное решение.
Источники и прецеденты использования
|
|
|
книга |
|
предмет |
информатика |
|
Автор |
Беров В., Лапунов А., Матюхин В., Пономарев А. |
|
Название |
Особенности национальных задач по информатике |
|
Издательство |
Триада-С |
|
Год издания |
2000 |
|
глава |
|
Номер |
3 |
|
Название |
Алгоритмы на графах |
|
Задача |
|
Номер |
17 |