2
$\begingroup$

Per the elegant solution of this Phys.SE question we can find the equivalent resistance between nodes $k$ and $l$ of a resistor network like this:

$$R_{kl} = {{\rm det}A^{(kl)} \over {\rm det} A^{(l)}}$$

Here $A$ is a matrix defined as

$$A_{ij} = \begin{cases} \sum_{k \neq i} C_{ik} & i = j \\ -C_{ij} & i \neq j \end{cases}$$

Where $C_{ij}$ is the conductivity between nodes $i$ and $j$, where $C = \frac{1}{R}$.

$A_{kl}$ is the matrix where the row and column $k$ and $l$ are removed from matrix $A$, idem dito for $A_l$.

I'm using this formula on large resistor networks - but these networks get too large in order to calculate the determinant. I've tried a few tricks - calculate all eigenvalues, take the logarithm of all values, sum those, and then perform the division. Finally to get the answer we take $e^{answer}$.

However, even these eigenvalues go to infinity at large networks.

Are there any approximation methods available? I'm thinking about 'tricks' used in power electronics, where an 'iterative solution' is used to solve the load-flow calculations. I've been thinking about doing something similar: at node $k$ put a fixed voltage $V_{ext}$ = 1. Now calculate all currents which will flow. Since there are now places where charge is "lost", we can spread these currents out even more, and repeat this until the system is "stable": there are no points in the system which violates Kirchoffs laws. However, this also scales very bad as there are many paths to consider.

So, are there any approximation methods available?

$\endgroup$
  • $\begingroup$ How many resistors do you have? $\endgroup$ – Massimo Ortolano Jun 15 '17 at 14:44
  • $\begingroup$ I'm running it on 2D and 3D lattices. A 100x100 lattice corresponds to a matrix size of 10k. (This is not the same as the number of resistors, if you want to know this I can figure that out for you - the main point is that they are a lot of resistors. While smaller lattices are a possibility, this is not what I want to do) $\endgroup$ – JBrouwer Jun 15 '17 at 14:51
  • $\begingroup$ That doesn't seem such a big matrix, and its determinant can be calculated quite smoothly by programs like Mathematica and Matlab, which can handle even much larger matrices. Are you sure that you have set up the program in a proper way? $\endgroup$ – Massimo Ortolano Jun 15 '17 at 15:31
  • $\begingroup$ The matrix size is 10k by 10k. I run into problems when using this method, as the determinants go to infinity. The main point of this question is to look for an approximation method. The program is setup correctly as I am able to get the right results for setups which I can calculate by hand. $\endgroup$ – JBrouwer Jun 15 '17 at 15:39
  • $\begingroup$ Before looking for an approximation you have two relatively easy choices: i) scale all matrix elements by a constant factor $a<1$ so that the determinant remains bounded , and then rescale the result by $a$ (the determinant at the numerator scales as $a^{n-1}$, where $n$ is the size of the matrix, and that at the denominator scale as $a^n$); ii) use a software that allows arbitrary precision arithmetic. i) is really easy to implement and it is worth a try. $\endgroup$ – Massimo Ortolano Jun 15 '17 at 15:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.