0
$\begingroup$

To solve a system of nonlinear equations which are equal to zero, ${f_i}(X) = 0\forall i \in 1:n,X = \left[ {{x_1},{x_2}, \cdots ,{x_n}} \right]$, we use Jacobian matrix and Newton algorithm. Hence, at each iteration, updated $X$ can be find by the following equation

${X^{(k + 1)}} = {X^{(k)}} + {J^{ - 1}}\left[ {\begin{array}{*{20}{c}} {{f_i}({X^{(k)}})} \\ {{f_2}({X^{(k)}})} \\ \vdots \\ {{f_m}({X^{(k)}})} \end{array}} \right]k = 0:j$

Where $J = \left[ {\begin{array}{*{20}{c}} {\frac{{\partial {f_1}({X^k})}}{{\partial {x_1}}}}&{\frac{{\partial {f_1}({X^k})}}{{\partial {x_2}}}}& \cdots &{\frac{{\partial {f_1}({X^k})}}{{\partial {x_n}}}}\\ {\frac{{\partial {f_2}({X^k})}}{{\partial {x_1}}}}&{\frac{{\partial {f_2}({X^k})}}{{\partial {x_2}}}}& \cdots &{\frac{{\partial {f_2}({X^k})}}{{\partial {x_n}}}}\\ \vdots & \vdots & \vdots & \vdots \\ {\frac{{\partial {f_m}({X^k})}}{{\partial {x_1}}}}&{\frac{{\partial {f_m}({X^k})}}{{\partial {x_2}}}}& \cdots &{\frac{{\partial {f_m}({X^k})}}{{\partial {x_n}}}} \end{array}} \right]$

After finding the solution ${X^j}$ Jacobian is a known and constant matrix. I am wondering if there is a way to find minimum singular value of $J(X^j)$ before running the algorithm.

$\endgroup$

1 Answer 1

0
$\begingroup$

If you're using python / scipy, see svds:

# k smallest singular values --
from scipy.sparse.linalg import svds
k = 1
sing = svds( AA, which="SM", k=k, tol=1e-4, return_singular_vectors=False )

This uses the Arpack software package, fast and solid. (sparse.linalg is a red herring: svds does dense, sparse, and LinOps too.)

$\endgroup$

You must log in to answer this question.