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



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

我最初只给定电池电压和电阻:

我的问题是,并联电路和串联电路的电压计算方式不同。
A somewhat similar question asked on 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/RR = V/IV is voltage (volts)I is current (amps)R is resistance (ohms)
我在互联网上找到的每个教程都由人们在概念上将并联电路分组在一起以获得总电阻,然后使用该电阻来计算串联电阻。



对于较小的示例来说,这很好,但是对于大规模电路,很难从中推导算法。

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

我目前将系统作为图形数据结构。
所有节点都代表一个ID号(并可以通过ID号进行查找)。

因此,对于上面的示例,如果运行遍历,我将获得如下路径列表:

[[0,1,2,4,0]
,[0,1,3,4,0]]

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

电路的某些部分很可能是复合部分,这些复合部分可能会发现自己与其他复合部分处于并联或串联状态。

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

最佳答案

有些电路甚至无法按串联和并联方式进行分析,例如,包含edges of a cube的电路(该页面底部的一些代码可能会有所帮助;我没有看过)。不能分析为串联/并联的另一个例子是五边形/五角星形。

与考虑串行和并行相比,更健壮的解决方案是使用Kirchhoff's laws

  • 您需要为每个线性部分中的电流制作变量
    的电路。
  • 将基尔霍夫现行定律(KCL)应用于以下节点
    线性部分相遇。
  • 将基尔霍夫电压定律(KVL)应用于尽可能多的
    您可以找到循环。
  • 使用高斯消除来解决
    所得的线性方程组。

  • 棘手的部分是确定周期。在您给出的示例中,有三个循环:通过电池和左侧电阻器,通过电池和右侧电阻器以及通过左侧和右侧电阻器。对于平面电路,找到完整的循环集并不难。对于三维电路,这可能很难。

    您实际上并不需要所有的周期。在上面的示例中,两个就足够了(对应于电路将平面划分成的两个有界区域)。然后,您将具有三个变量(电路的三个线性部分中的电流)和三个方程式(三个线性段相交的顶部节点处的电流总和,并且电压降大约两个周期)。这足以通过高斯消除法解决系统中的电流问题,然后可以从电流中计算出电压。

    如果您投入了太多的方程式(例如,示例中两个节点上的电流,以及三个周期而不是两个周期上的电压),事情仍然会奏效:高斯消除将消除冗余,并且您仍将获得唯一性,正确答案。真正的问题是方程式是否太少。例如,如果在示例中的两个节点上使用KCL,并且仅在一个周期内使用KVL,则将具有三个方程式,但是一个方程式是多余的,因此实际上只有两个独立的方程式,这是不够的。因此,我想说一下,您可以找到所有方程式,然后让高斯消除法将其分类。

    希望您可以将其限制在平面电路中,因为这很容易找到一组不错的周期。否则,您将需要一个图循环枚举算法。我敢肯定,如果需要,您可以找到一个。

    10-08 12:41