Added some notes about Sherman-Morrison.

This commit is contained in:
couriersud 2016-03-28 13:45:45 +02:00
parent 8c69d3ad15
commit 628cef3d97
2 changed files with 27 additions and 2 deletions

View File

@ -14,8 +14,8 @@ NETLIST_START(dummy)
PARAM(Solver.NR_LOOPS, 300)
PARAM(Solver.GS_LOOPS, 1)
PARAM(Solver.GS_THRESHOLD, 6)
PARAM(Solver.ITERATIVE, "SM")
//PARAM(Solver.ITERATIVE, "MAT")
//PARAM(Solver.ITERATIVE, "SM")
PARAM(Solver.ITERATIVE, "MAT")
//PARAM(Solver.ITERATIVE, "GMRES")
//PARAM(Solver.ITERATIVE, "SOR")
PARAM(Solver.DYNAMIC_TS, 0)

View File

@ -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_