class_docstr: Class to solve the initial value problem (IVP) for exp.
class_docstr_tok: ["Class","to","solve","the","initial","value","problem","(","IVP",")","for","exp","."]
docstr: Solve initial value problem (IVP).
  
  Given an initial point and an initial vector, solve the geodesic equation.
  
  Parameters
  ----------
  initial_point : array-like, shape=[n_vertices, 3]
      Initial point, i.e. initial discrete surface.
  initial_tangent_vec : array-like, shape=[n_vertices, 3]
      Initial tangent vector.
  
  Returns
  -------
  geod : array-like, shape=[n_times, n_vertices, 3]
      Geodesic discretized along the times given as inputs.
docstr_tok: ["Solve","initial","value","problem","(","IVP",")",".","Given","an","initial","point","and","an","initial","vector",",","solve","the","geodesic","equation",".","Parameters","--","--","--","--","--","initial_point",":","array-like",",","shape=","[","n_vertices",",","3","]","Initial","point",",","i.e",".","initial","discrete","surface",".","initial_tangent_vec",":","array-like",",","shape=","[","n_vertices",",","3","]","Initial","tangent","vector",".","Returns","--","--","--","-","geod",":","array-like",",","shape=","[","n_times",",","n_vertices",",","3","]","Geodesic","discretized","along","the","times","given","as","inputs","."]
code: def _ivp(self, space, initial_point, initial_tangent_vec):
      """Solve initial value problem (IVP).
  
      Given an initial point and an initial vector, solve the geodesic equation.
  
      Parameters
      ----------
      initial_point : array-like, shape=[n_vertices, 3]
          Initial point, i.e. initial discrete surface.
      initial_tangent_vec : array-like, shape=[n_vertices, 3]
          Initial tangent vector.
  
      Returns
      -------
      geod : array-like, shape=[n_times, n_vertices, 3]
          Geodesic discretized along the times given as inputs.
      """
      initial_tangent_vec = initial_tangent_vec / (self.n_steps - 1)
  
      next_point = initial_point + initial_tangent_vec
      geod = [initial_point, next_point]
      for _ in range(2, self.n_steps):
          next_next_point = self._stepforward(
              space, initial_point, next_point
          )
          geod += [next_next_point]
          initial_point, next_point = next_point, next_next_point
      return gs.stack(geod, axis=0)
  
imports: import math
  import geomstats.backend
  from geomstats.geometry.euclidean import Euclidean
  from geomstats.geometry.manifold import Manifold
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.numerics.optimizers import ScipyMinimize
label_desc: Use image node_id 3 for calling the _ExpSolver obj's underlying member method code with example usage: obj._ivp(space, initial_point, initial_tangent_vec) and returns: gs