diff --git a/Solverz/solvers/nlaesolver/sicnm.py b/Solverz/solvers/nlaesolver/sicnm.py index 9455e37..30dfec3 100644 --- a/Solverz/solvers/nlaesolver/sicnm.py +++ b/Solverz/solvers/nlaesolver/sicnm.py @@ -28,7 +28,7 @@ def sicnm(ae: nAE, \begin{aligned} \dot{y}&=z \\ 0&=J(y)z+g(y) - \end{aligned}, + \end{aligned} with $y_0$ being the initial value guess and $z_0=-J(y_0)^{-1}g(y_0)$, where $z$ is an intermediate variable introduced. Then the DAEs are solved by Rodas. SICNM is found to be more robust than the Newton's method, for which the theoretical proof can be found in my paper [1]_. In addition, the non-iterative nature of Rodas guarantees the efficiency. @@ -41,10 +41,10 @@ def sicnm(ae: nAE, Parameters ========== - eqn : nAE + ae : nAE Numerical AE object. - y : np.ndarray + y0 : np.ndarray The initial values of variables opt : Opt diff --git a/docs/src/gettingstart.md b/docs/src/gettingstart.md index 6cbaa49..dc3d6bb 100644 --- a/docs/src/gettingstart.md +++ b/docs/src/gettingstart.md @@ -21,7 +21,7 @@ The basic steps of a simple modeling and solution process are: 3. Apply solver 4. Interrogate solver results -These steps and the philosophy behind Soverz are explained as follows. +These steps and the philosophy behind Solverz are explained as follows. ## Symbolic Modelling The modelling starts with declaring an empty Model with ```python @@ -139,7 +139,7 @@ Moreover, by overloading operators, `y0` can be used for addition, subtraction, ## From Symbolic to Numerical ### Numerical Equations To directly use the symbolic equations for computation is too slow. Alternatively, you should use the numerical equations -derived by the Solverz, which are optimized for efficient simulation. +derived by Solverz, which are optimized for efficient simulation. Specifically, Solverz prints all the symbolic expressions to well-organized python functions based on mature libraries such as numpy, scipy and numba. @@ -272,12 +272,15 @@ Currently, dynamic compilation is not supported in `made_numerical`. Solverz provides basic solvers for the solutions of AE, FDAE and DAE. We are working hard on implementing more mature solvers. Please feel free to contact us if you have any good idea~ -The current solvers are summarized below. +Below is an overview of the built-in solvers. + ### AE solvers 1. `nr_method()` the Newton-Raphson method 2. `continuous_nr()` the continuous Newton method, which is more robust compared with the Newton-Raphson 3. `lm()` the Levenberg-Marquardt method provided by `scipy.optimize.root`. Only dense Jacobian is allowed, which may be time-consuming. +4. `sicnm()` the semi-implicit version of continuous Newton method. It possesses both the implicit stability and explicit computation overhead, which shows both robustness and efficiency. Please make Hessian-vector product if you want to use it. + ### FDAE solver `fdae_solver()` ### DAE solvers diff --git a/docs/src/index.rst b/docs/src/index.rst index 56a4b7b..029c760 100644 --- a/docs/src/index.rst +++ b/docs/src/index.rst @@ -14,7 +14,7 @@ If you are new to Solverz, start with the :ref:`introductory example `. If you find Solverz intriguing, just :ref:`get started `. Additional Solverz paradigms covering multiple areas can be found in -`Solverz' Cookbook `_: +`Solverz' Cookbook `_: ================================================================== diff --git a/docs/src/reference/index.rst b/docs/src/reference/index.rst index 26020b7..bfcac2e 100644 --- a/docs/src/reference/index.rst +++ b/docs/src/reference/index.rst @@ -23,6 +23,10 @@ Functions .. autoclass:: Solverz.sym_algebra.functions.Saturation +.. autoclass:: Solverz.sym_algebra.functions.heaviside + +.. autoclass:: Solverz.sym_algebra.functions.ln + Solvers -------