class_docstr: Geodesic boundary value problem using an ODE solver.
  
  Parameters
  ----------
  n_nodes : Number of mesh nodes.
  integrator : ScipySolveBVP
      Instance of ScipySolveBVP.
  initialization : callable
      Function to provide initial solution. `f(space, point, base_point)`.
      Defaults to linear initialization.
class_docstr_tok: ["Geodesic","boundary","value","problem","using","an","ODE","solver",".","Parameters","--","--","--","--","--","n_nodes",":","Number","of","mesh","nodes",".","integrator",":","ScipySolveBVP","Instance","of","ScipySolveBVP",".","initialization",":","callable","Function","to","provide","initial","solution",".","`","f","(","space",",","point",",","base_point",")","`",".","Defaults","to","linear","initialization","."]
docstr: Geodesic curve for boundary value problem.
  
  Parameters
  ----------
  space : Manifold
      Equipped manifold.
  end_point : array-like, shape=[..., dim]
      Point on the manifold.
  base_point : array-like, shape=[..., dim]
      Point on the manifold.
  
  Returns
  -------
  path : callable
      Time parametrized geodesic curve. `f(t)`. 0 <= t <= 1.
code: def geodesic_bvp(self, space, point, base_point):
      """Geodesic curve for boundary value problem.
  
      Parameters
      ----------
      space : Manifold
          Equipped manifold.
      end_point : array-like, shape=[..., dim]
          Point on the manifold.
      base_point : array-like, shape=[..., dim]
          Point on the manifold.
  
      Returns
      -------
      path : callable
          Time parametrized geodesic curve. `f(t)`. 0 <= t <= 1.
      """
      if point.ndim != base_point.ndim:
          point, base_point = gs.broadcast_arrays(point, base_point)
  
      is_batch = point.ndim > space.point_ndim
      if not is_batch:
          result = self._solve(space, point, base_point)
      else:
          results = [
              self._solve(space, point_, base_point_)
              for point_, base_point_ in zip(point, base_point)
          ]
  
      def path(t):
          """Time parametrized geodesic curve.
  
          Parameters
          ----------
          t : float or array-like, shape=[n_times,]
  
          Returns
          -------
          geodesic_points : array-like, shape=[..., n_times, dim]
              Geodesic points evaluated at t.
          """
          if not gs.is_array(t):
              t = gs.array([t])
  
          if gs.ndim(t) == 0:
              t = gs.expand_dims(t, axis=0)
  
          if not is_batch:
              return self._simplify_result_t(result.sol(t), space)
  
          return gs.array(
              [
                  self._simplify_result_t(result.sol(t), space)
                  for result in results
              ]
          )
  
      return path
  
imports: import math
  from abc import ABC, abstractmethod
  import geomstats.backend
  from geomstats.numerics.bvp import ScipySolveBVP
  from geomstats.numerics.ivp import GSIVPIntegrator
  from geomstats.numerics.optimizers import ScipyMinimize
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 9 for calling the LogODESolver obj's underlying member method code with example usage: obj.geodesic_bvp(space, point, base_point) and returns: path, gs, self