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

Algorithm 我使用什么算法来计算组合电路上的电压?,algorithm,graph,tree,graph-algorithm,graph-traversal,Algorithm,Graph,Tree,Graph Algorithm,Graph Traversal,我试图通过编程计算一个非常大的电路上的电压变化 *这个问题似乎是针对电子学的,但它是 更多关于在一组数据上应用算法的信息 为了让事情变得简单, 这是一个完整的电路,已经计算了电压: 我最初只知道电池电压和电阻: 我遇到的问题是,并联电路和串联电路的电压计算方式不同。 一些公式: 当电阻器并联时: Rtotal=1/(1/R1+1/R2+1/R3…+1/Rn) 当电阻器串联时: Rtotal=R1+R2+R3…+Rn 欧姆定律: V=IR I=V/R R=V/I V是电压(伏特) I为当前电

我试图通过编程计算一个非常大的电路上的电压变化

*这个问题似乎是针对电子学的,但它是 更多关于在一组数据上应用算法的信息

为了让事情变得简单,
这是一个完整的电路,已经计算了电压:

我最初只知道电池电压和电阻:

我遇到的问题是,并联电路和串联电路的电压计算方式不同。

一些公式:

当电阻器并联时:

Rtotal=1/(1/R1+1/R2+1/R3…+1/Rn)

当电阻器串联时:

Rtotal=R1+R2+R3…+Rn

欧姆定律:

V=IR

I=V/R

R=V/I

V是电压
(伏特)

I为当前电流
(安培)

R是电阻
(欧姆)

我在互联网上找到的每个教程都是由人们在概念上把并联电路组合在一起得到总电阻,然后用这个电阻来计算串联电阻

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

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

我目前将该系统设置为图形数据结构。
所有节点都由一个id号表示(并且可以通过id号查找)

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

[[0,1,2,4,0]
,[0,1,3,4,0]]
每个数字都可以用来导出实际节点及其对应的数据。我需要对这组数据执行什么样的转换/算法


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

我认为我的问题与此类似:

我认为这条路应该是这样的:

  • 将所有路径排序为相同长度的组
  • 如果有多个组,请选择长度最大的组,并:
    2a。找到两条有一项差异的路径。
    2b。将它们“合并”到长度小于1的路径中-合并取决于不同的实际项目。
    2c。将新路径添加到相关组中。
    2d。如果只有多个项目差异的路径,请合并不同的项目,以便路径之间只有一个不同的项目。
    2e。当只剩下一个项目时,从差异最小的“较低”(=长度较小)中查找一个项目,然后合并项目以进行匹配
  • 当有一组剩下一个以上的项目时,继续执行#2,直到有一组剩下一个项目
  • 直接计算该项的值
  • 这是非常初步的,但我认为主要思想是明确的。

    欢迎任何改进。

    使用最大流量算法(Dijkstra是您的朋友)


    你假装面对一个水流问题(其实这是一个水流问题)。你必须计算每段(水流)上的水流。然后你可以很容易地计算每个电阻的压降(水压)。

    有些电路甚至不能从串联和并联的角度进行分析,例如,一个电路包括(在该网页底部有一些代码可能会有所帮助;我还没有看)。另一个不能分析为串联/并联的例子是五边形/五角星形

    比考虑串联和并联更可靠的解决方案是使用

  • 您需要为每个线性段中的电流创建变量 电路的一部分
  • 将基尔霍夫电流定律(KCL)应用于节点,其中 直线段相交
  • 尽可能多地应用基尔霍夫电压定律(KVL) 你能找到的周期
  • 用高斯消去法求解该问题 得到的线性方程组
  • 棘手的部分是识别周期。在您给出的示例中,有三个循环:通过蓄电池和左电阻器、蓄电池和右电阻器以及通过左电阻器和右电阻器。对于平面电路来说,找到一套完整的循环并不太难;对于三维电路来说,这可能很困难

    实际上,你并不需要所有的周期。在上面的示例中,两个就足够了(对应于电路将平面分割成的两个有界区域)。然后有三个变量(电路三个线性部分中的电流)和三个方程(三个线性段相交的顶部节点处的电流之和,以及两个周期左右的电压降)。这就足够用高斯消去法求解电流系统了,然后你可以从电流中计算出电压

    如果你加入了太多的方程(例如,在你的例子中,两个节点上的电流,以及三个周期而不是两个周期上的电压),事情仍然会成功:高斯消去法只会消除冗余,你仍然会得到唯一、正确的答案。真正的问题是如果方程太少。例如,如果您在示例中的两个节点上使用KCL,并且仅在一个周期内使用KVL,您将有三个方程,但其中一个是冗余的,因此您实际上只有两个独立的方程,这是不够的。所以我想说,把你们能找到的每一个方程都放进去,让高斯消去法来解决它

    希望你们能限制在平面电路上,这样很容易找到一组很好的cy