我使用什么算法来计算组合电路的电压?

Tre*_*key 10 algorithm tree graph graph-traversal graph-algorithm

我正在尝试以编程方式计算非常大的电路上的电压变化.

*这个问题似乎可能面向电子产品,但更多的是将算法应用于一组数据.

为了简单起见,
这是一个完整的电路,电压已经计算过:

在此输入图像描述

我原本只给出了电池电压和电阻:

在此输入图像描述

我的问题是并联和串联电路之间的电压计算方式不同.
在SO上提出了一个类似的问题.

一些公式:

When resistors are in parallel:
Rtotal = 1/(1/R1 + 1/R2 + 1/R3 ... + 1/Rn)

When resistors are in series:
Rtotal = R1 + R2 + R3 ... + Rn

欧姆定律:

V = IR
I = V/R
R = V/I

V is voltage (volts)
I is current (amps)
R is resistance(ohms)

我在互联网上找到的每个教程都包括人们在概念上将并联电路分组以获得总电阻,然后使用该电阻来计算串联电阻.

在此输入图像描述

这对于小例子来说很好,但是对于大规模电路来说很难从中推导出算法.

我的问题:
给定一个包含所有完整路径的矩阵,
我有办法计算所有电压降吗?

我目前将系统作为图形数据结构.
所有节点都表示(并且可以通过查找)id号.

所以对于上面的例子,如果我运行遍历,我会得到一个像这样的路径列表:

[[0,1,2,4,0]
,[0,1,3,4,0]]
Run Code Online (Sandbox Code Playgroud)

每个数字都可用于导出实际节点及其相应的数据.我需要对这组数据执行什么样的转换/算法?


电路的某些部分很可能是复合的,而这些复合部分可能会发现它们与其他复合部分并联或串联.

我认为我的问题类似于:http:
//en.wikipedia.org/wiki/Series-parallel_partial_order

sha*_*cov 0

我认为去这里的方法是这样的:

  1. 将所有路径分成相同长度的组。
  2. 当有多个组时,选择长度最大的组:
    2a。找到两条有一项差异的路径。
    2b. 将它们“合并”成长度小一的路径 - 合并取决于不同的实际项目。
    2c. 将新路径添加到相关组中。
    2d. 如果仅存在具有多个项目差异的路径,请合并不同的项目,以便路径之间只有一项不同的项目。
    2e. 当只剩下一个项目时,从“较低”(=长度较小)中找到差异最小的项目,并合并项目以匹配。
  3. 当一组人剩下一件以上的物品时,继续执行#2,直到一组人剩下一件物品。
  4. 直接计算该物品的价值。

这是非常初步的,但我认为主要思想是明确的。
欢迎任何改进。