helpers
=======

.. py:module:: smolgp.helpers


Functions
---------

.. autoapisummary::

   smolgp.helpers.block_view
   smolgp.helpers.Q_from_VanLoan
   smolgp.helpers.Phibar_from_VanLoan
   smolgp.helpers.VanLoan


Module Contents
---------------

.. py:function:: block_view(A, b)

.. py:function:: Q_from_VanLoan(F: tinygp.helpers.JAXArray, L: tinygp.helpers.JAXArray, Qc: tinygp.helpers.JAXArray, dt: tinygp.helpers.JAXArray) -> tinygp.helpers.JAXArray

   Compute the process noise covariance via the Van Loan method.

   Evaluates

   .. math::

       Q_k = \int_0^{\Delta t} e^{F(\Delta t - s)}\, L\, Q_c\, L^T\, e^{F^T(\Delta t - s)}\, ds

   See `Van Loan (1978) <https://ecommons.cornell.edu/items/cba38b2e-6ad4-45e6-8109-0a019fe5114c>`_,
   "Computing Integrals Involving the Matrix Exponential" (`PDF <https://www.olemartin.no/artikler/vanloan.pdf>`_).

   :param F: Feedback (design) matrix :math:`F` from :meth:`~smolgp.kernels.StateSpaceModel.design_matrix`.
   :param L: Noise effect matrix :math:`L` from :meth:`~smolgp.kernels.StateSpaceModel.noise_effect_matrix`.
   :param Qc: Spectral density :math:`Q_c` from :meth:`~smolgp.kernels.StateSpaceModel.noise`.
   :param dt: Time step :math:`\Delta t = X_2 - X_1`.

   :returns: Process noise covariance matrix :math:`Q_k` over time step :math:`\Delta t`.


.. py:function:: Phibar_from_VanLoan(F: tinygp.helpers.JAXArray, dt: tinygp.helpers.JAXArray) -> tinygp.helpers.JAXArray

   Compute the integrated transition matrix via the Van Loan method.

   Evaluates

   .. math::

       \bar{\Phi} = \int_0^{\Delta t} e^{F s}\, ds

   See `Van Loan (1978) <https://ecommons.cornell.edu/items/cba38b2e-6ad4-45e6-8109-0a019fe5114c>`_,
   "Computing Integrals Involving the Matrix Exponential" (`PDF <https://www.olemartin.no/artikler/vanloan.pdf>`_).

   :param F: Feedback (design) matrix :math:`F` from :meth:`~smolgp.kernels.StateSpaceModel.design_matrix`.
   :param dt: Time step :math:`\Delta t = X_2 - X_1`.

   :returns: Integrated transition matrix :math:`\bar{\Phi}` over time step :math:`\Delta t`.


.. py:function:: VanLoan(F: tinygp.helpers.JAXArray, L: tinygp.helpers.JAXArray, Qc: tinygp.helpers.JAXArray, dt: tinygp.helpers.JAXArray) -> dict[str, tinygp.helpers.JAXArray]

   Compute all submatrices of the Van Loan matrix exponential.

   Assembles the block matrix :math:`C` and returns its matrix exponential,
   partitioned into the submatrices ``F1``-``F4``, ``G1``-``G3``, ``H1``-``H2``,
   ``K1`` (see Van Loan 1978 for notation), from which various integrals such as
   :func:`Q_from_VanLoan` and :func:`Phibar_from_VanLoan` can be derived.

   See `Van Loan (1978) <https://ecommons.cornell.edu/items/cba38b2e-6ad4-45e6-8109-0a019fe5114c>`_,
   "Computing Integrals Involving the Matrix Exponential" (`PDF <https://www.olemartin.no/artikler/vanloan.pdf>`_).

   :param F: Feedback (design) matrix :math:`F`.
   :param L: Noise effect matrix :math:`L`.
   :param Qc: Spectral density :math:`Q_c`.
   :param dt: Time step :math:`\Delta t = X_2 - X_1`.

   :returns: Dictionary of named submatrices of the Van Loan exponential.


