Class JacobianMatrices

    • Field Detail

      • index

        private int index
        Index of the instance in the expandable set.
      • pode

        private ParameterizedODE pode
        FODE without exact parameter Jacobian computation skill.
      • stateDim

        private int stateDim
        Main state vector dimension.
      • selectedParameters

        private ParameterConfiguration[] selectedParameters
        Selected parameters for parameter Jacobian computation.
      • jacobianProviders

        private java.util.List<ParameterJacobianProvider> jacobianProviders
        FODE with exact parameter Jacobian computation skill.
      • paramDim

        private int paramDim
        Parameters dimension.
      • dirtyParameter

        private boolean dirtyParameter
        Boolean for selected parameters consistency.
      • matricesData

        private double[] matricesData
        State and parameters Jacobian matrices in a row.
    • Constructor Detail

      • JacobianMatrices

        public JacobianMatrices​(FirstOrderDifferentialEquations fode,
                                double[] hY,
                                java.lang.String... parameters)
                         throws DimensionMismatchException
        Simple constructor for a secondary equations set computing Jacobian matrices.

        Parameters must belong to the supported ones given by Parameterizable.getParametersNames(), so the primary set of differential equations must be Parameterizable.

        Note that each selection clears the previous selected parameters.

        Parameters:
        fode - the primary first order differential equations set to extend
        hY - step used for finite difference computation with respect to state vector
        parameters - parameters to consider for Jacobian matrices processing (may be null if parameters Jacobians is not desired)
        Throws:
        DimensionMismatchException - if there is a dimension mismatch between the steps array hY and the equation dimension
      • JacobianMatrices

        public JacobianMatrices​(MainStateJacobianProvider jode,
                                java.lang.String... parameters)
        Simple constructor for a secondary equations set computing Jacobian matrices.

        Parameters must belong to the supported ones given by Parameterizable.getParametersNames(), so the primary set of differential equations must be Parameterizable.

        Note that each selection clears the previous selected parameters.

        Parameters:
        jode - the primary first order differential equations set to extend
        parameters - parameters to consider for Jacobian matrices processing (may be null if parameters Jacobians is not desired)
    • Method Detail

      • addParameterJacobianProvider

        public void addParameterJacobianProvider​(ParameterJacobianProvider provider)
        Add a parameter Jacobian provider.
        Parameters:
        provider - the parameter Jacobian provider to compute exactly the parameter Jacobian matrix
      • setParameterizedODE

        public void setParameterizedODE​(ParameterizedODE parameterizedOde)
        Set a parameter Jacobian provider.
        Parameters:
        parameterizedOde - the parameterized ODE to compute the parameter Jacobian matrix using finite differences
      • setParameterStep

        public void setParameterStep​(java.lang.String parameter,
                                     double hP)
                              throws UnknownParameterException
        Set the step associated to a parameter in order to compute by finite difference the Jacobian matrix.

        Needed if and only if the primary ODE set is a ParameterizedODE.

        Given a non zero parameter value pval for the parameter, a reasonable value for such a step is pval * FastMath.sqrt(Precision.EPSILON).

        A zero value for such a step doesn't enable to compute the parameter Jacobian matrix.

        Parameters:
        parameter - parameter to consider for Jacobian processing
        hP - step for Jacobian finite difference computation w.r.t. the specified parameter
        Throws:
        UnknownParameterException - if the parameter is not supported
        See Also:
        ParameterizedODE
      • setInitialMainStateJacobian

        public void setInitialMainStateJacobian​(double[][] dYdY0)
                                         throws DimensionMismatchException
        Set the initial value of the Jacobian matrix with respect to state.

        If this method is not called, the initial value of the Jacobian matrix with respect to state is set to identity.

        Parameters:
        dYdY0 - initial Jacobian matrix w.r.t. state
        Throws:
        DimensionMismatchException - if matrix dimensions are incorrect
      • setInitialParameterJacobian

        public void setInitialParameterJacobian​(java.lang.String pName,
                                                double[] dYdP)
                                         throws UnknownParameterException,
                                                DimensionMismatchException
        Set the initial value of a column of the Jacobian matrix with respect to one parameter.

        If this method is not called for some parameter, the initial value of the column of the Jacobian matrix with respect to this parameter is set to zero.

        Parameters:
        pName - parameter name
        dYdP - initial Jacobian column vector with respect to the parameter
        Throws:
        UnknownParameterException - if a parameter is not supported
        DimensionMismatchException - if the column vector does not match state dimension
      • getCurrentMainSetJacobian

        public void getCurrentMainSetJacobian​(double[][] dYdY0)
        Get the current value of the Jacobian matrix with respect to state.
        Parameters:
        dYdY0 - current Jacobian matrix with respect to state.
      • getCurrentParameterJacobian

        public void getCurrentParameterJacobian​(java.lang.String pName,
                                                double[] dYdP)
        Get the current value of the Jacobian matrix with respect to one parameter.
        Parameters:
        pName - name of the parameter for the computed Jacobian matrix
        dYdP - current Jacobian matrix with respect to the named parameter
      • checkDimension

        private void checkDimension​(int expected,
                                    java.lang.Object array)
                             throws DimensionMismatchException
        Check array dimensions.
        Parameters:
        expected - expected dimension
        array - (may be null if expected is 0)
        Throws:
        DimensionMismatchException - if the array dimension does not match the expected one