diff options
| author | 2016-03-28 13:45:45 +0200 | |
|---|---|---|
| committer | 2016-03-28 13:48:28 +0200 | |
| commit | 628cef3d97103a7a7348f66c1a9f6a7680b64443 (patch) | |
| tree | 9ba0d3f636bafb8eaeb87394210dad46977eadfe /src/lib/netlist/solver | |
| parent | 8c69d3ad1562d79790bd48e3fe4521db304efceb (diff) | |
Added some notes about Sherman-Morrison.
Diffstat (limited to 'src/lib/netlist/solver')
| -rw-r--r-- | src/lib/netlist/solver/nld_ms_sm.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/lib/netlist/solver/nld_ms_sm.h b/src/lib/netlist/solver/nld_ms_sm.h index 81395a11492..7336e060510 100644 --- a/src/lib/netlist/solver/nld_ms_sm.h +++ b/src/lib/netlist/solver/nld_ms_sm.h @@ -3,6 +3,31 @@ /* * nld_ms_direct.h * + * + * Sherman-Morrison Solver + * + * Computes the updated inverse of A given that the change in A is + * + * A <- A + (u x v) u,v vectors + * + * In this specific implementation, u is a unit vector specifying the row which + * changed. Thus v contains the changed column. + * + * Than z = A⁻¹ u , w = transpose(A⁻¹) v , lambda = v z + * + * A⁻¹ <- 1.0 / (1.0 + lambda) * (z x w) + * + * The approach is iterative and applied for each row changed. + * + * The performance for a typical circuit like kidniki compared to Gaussian + * elimination is poor: + * + * a) The code needs to be run for each row change. + * b) The inverse of A typically is fully occupied. + * + * It may have advantages for circuits with a high number of elements and only + * few dynamic/active components. + * */ #ifndef NLD_MS_SM_H_ |
