algorithm - 卡在交叉线 - 算法

标签 algorithm

我正在研究粘膜的导电率 - 系统**。在我的算法(N 根)中,我有交集图矩阵 M(M 是 NxN 矩阵,如果“i”和“j”相交,则 M_ij=1,如果“i”和“j”相交,则 M_ij=0不是)。

我还有 2 个列表,其中包含每根棍子的终点。此外,我可以计算出棍子之间的交点(如果存在)。

我想计算下图中交点 (1,2,3,...N) 之间的所有距离而不丢失连接信息(哪个交点连接到哪个):

enter image description here

图中(A)是带棍子的系统。

有没有代码可以做到这一点?

我是 python + numpy 用户。

等待您的回答!

很多


现在我有:

  • Q个节点(Q个棒棒交叉点)
  • 一个列表 'NODES'=[(x,y,i,j)_1,......., (x,y,i,j)_Q],其中每个元素 (x,y, i,j)表示木棒i和j的交点(x,y)。
  • 具有 Q 个元素 {H_k,l} 的矩阵“H”。 H_k,l=0 如果节点 'k' 和 'l' 没有被边连接,并且 H_k,l = R_k,l = 与节点 'k' 和 'l' 的并集相关联的电阻(直接与连接这些节点的边的长度成正比)。
  • 列表 'nodes_resistances'=[R_1, ....., R_Q]。

“j”(或“i”)= N+1 的所有节点都具有电位“V”,与“j”或“i”= N 的所有节点相关。

现在我必须应用节点分析来确定通过每条边的电流和净电流。我不知道该怎么做。你能帮帮我吗?

非常感谢!

最好的问候, 何塞·路易斯

最佳答案

第一步是确定存储网络信息所需的数据结构。例如,在 C 编程语言中,我将从 3 个结构数组开始(afaik python 等价物是元组列表)。

第一个结构将包含有关每个路口的信息,包括路口 ID 和 (x,y) 坐标。

第二个结构将包含棒信息,包括棒 ID 和每单位长度的电阻。

最终的结构将是连接结构,它将包含两个交叉点 ID(连接的端点)和一个棍子 ID(建立连接的棍子)。

该数据集完整地描述了网络,设置好后,您应该能够继续下一步:求解网络。


下一步是将基尔霍夫定律和欧姆定律应用于网络,以在大量(希望相等)变量中创建大量线性方程。在下图中,基尔霍夫定律告诉我们

 i13 + i23 - i34 = 0

enter image description here

换句话说,流入节点 3 的电流总和必须为零。 (由于 i34 从节点 3 流出,它的符号发生了变化。)

那么根据欧姆定律我们知道

i13 = (V1 - V3) / R13
i23 = (V2 - V3) / R23
i34 = (V3 - V4) / R34

代回第一个方程,我们有

V1/R13 + V2/R23 + V3*(-1/R13 + -1/R23 + -1/R34) + V4/R34 = 0

因此我们有 1 个包含 4 个变量的方程。我们所需要的只是另外 3 个方程,我们应该能够解出所有的 V。在 N 个变量中找到 N 个方程后,您需要想出解决该方程组的软件。我无法帮助你。祝你好运:)

关于algorithm - 卡在交叉线 - 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24865683/

相关文章:

java - 此生产者消费者的非法监视器状态异常?

Java ArrayList的合并函数复杂度

java - 在堆有限的列表中查找重复项

algorithm - 什么是 DFS-Forest 组件?

algorithm - 带着购物 list 逛超市,最快买到所有商品?

algorithm - 时间段不一致的平滑值

c++ - 如何在 C++ 中精确显示 double 的小数位?

algorithm - 最长公共(public)子串算法 O(n*m) 蛮力

javascript - 将传单标记放置在圆周上的参数方程不精确?

java - 二进制字符串到整数转换器中的错误