ph-math/src/main/java/com/helger/numbercruncher/mathutils/RungeKuttaDiffEqSolver.java
@Override
  public DataPoint nextPoint (final float h)
  {
    final float k1 = m_aEquation.at (m_fX, m_fY);
    final float k2 = m_aEquation.at (m_fX + h / 2, m_fY + k1 * h / 2);
    final float k3 = m_aEquation.at (m_fX + h / 2, m_fY + k2 * h / 2);
    final float k4 = m_aEquation.at (m_fX + h, m_fY + k3 * h);

    m_fY += (k1 + 2 * (k2 + k3) + k4) * h / 6;
    m_fX += h;

    return new DataPoint (m_fX, m_fY);
  }
@Override
  public DataPoint nextPoint (final float h)
  {
    final float k1 = m_aEquation.at (m_fX, m_fY);
    final float k2 = m_aEquation.at (m_fX + h / 2, m_fY + k1 * h / 2);
    final float k3 = m_aEquation.at (m_fX + h / 2, m_fY + k2 * h / 2);
    final float k4 = m_aEquation.at (m_fX + h, m_fY + k3 * h);

    m_fY += (k1 + 2 * (k2 + k3) + k4) * h / 6;
    m_fX += h;

    return new DataPoint (m_fX, m_fY);
  }
@ Override public DataPoint nextPoint ( final float h ) { final float k1 = m_aEquation . at ( m_fX , m_fY ) ; final float k2 = m_aEquation . at ( m_fX + h / 2 , m_fY + k1 * h / 2 ) ; final float k3 = m_aEquation . at ( m_fX + h / 2 , m_fY + k2 * h / 2 ) ; final float k4 = m_aEquation . at ( m_fX + h , m_fY + k3 * h ) ; m_fY += ( k1 + 2 * ( k2 + k3 ) + k4 ) * h / 6 ; m_fX += h ; return new DataPoint ( m_fX , m_fY ) ; }
Return the next data point in the approximation of the solution.

@param h
the width of the interval
Return the next data point in the approximation of the solution .