Differences

This shows you the differences between two versions of the page.

Link to this comparison view

gnucap:user:gnucap_linear_solver [2015/12/11 15:39] (current)
Line 1: Line 1:
 +=== GNucap Linear Solver ===
 +Gnucal linear solver is implemented in file m_matrix.h - that is C++ template.
  
 +Most things are depicted in very extensive comments to this file.
 +Some things which are discovered and are listed here.
 +
 +== No zero diagonal element allowed ==
 +
 +Solver has an issue if diagonal element is zero. lets consider system:
 +
 +<code>
 +  | eps   -1|        | -1 |
 +  |         | *X  =  |    |
 +  | 10   -10|        |  0 |  
 +</code>
 +
 +if eps =0 or close to 0 (like 1.e-20 or so) current solver gives wrong answer of {1,0}.
 +
 +having eps=1.e-6 answer id ok = {1,1}
 +
 +This may be explained that during LU decomposition with no permutations with very small eps some values may grow higher 1/machine_eps and mask significant digits.
 +
 +Practical advice: 
 +Do not use .options gmin smaller than 1.e-6 .. 1.e-8 unless you know what you do.
 +With current solver in my distort results .
 +
 +Note - spice circuit which creates this system:
 +<code>
 +* circuit - close to Rozenbrok
 +.options nobypass
 +.options gmin = 1.e-6
 +* i1 = 10 *( v2 - v1^2)
 +* i2 = 1 - v1
 +
 +I1  1 0      dc 0
 +G11 1 0 1 0  -10
 +G11 1 0 2 0   10
 +
 +G21 2 0 1 0   -1
 +I2  2 0      dc 1
 +
 +.print op v(1) v(2) i(I1) i(I2)
 +
 +.op
 +.end
 +
 +</code>
gnucap/user/gnucap_linear_solver.txt · Last modified: 2015/12/11 15:39 (external edit)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Run by Debian Driven by DokuWiki