Yes, you need the kinematical equation. What you have is a coupled system of ordinary differential equations (ODEs). ODE integrators like you'll find in MATLAB (or Mathematica, SciPy, Maple, GSL, etc.) can integrate systems of equations that look like this:
\begin{align}
\dot{s}_1 &= f_1(t, s_1, s_2, \ldots, s_n), \\
\dot{s}_2 &= f_2(t, s_1, s_2, \ldots, s_n), \\
\vdots \\
\dot{s}_n &= f_n(t, s_1, s_2, \ldots, s_n),
\end{align}
where the $s_i$ variables represent the state of your system, and you have to provide the functions $f_i$. Note that there is precisely one derivative on the left-hand side, and precisely zero derivatives on the right-hand side — although the $s_i$ may themselves represent first derivatives. But the crucial point is that your ODE integrator will only return the functions $s_1(t), \ldots, s_n(t)$; it will not return the integrals of those functions. Now, in your case,
\begin{align}
s_1 &= \dot{q}_0, \\
s_2 &= \dot{q}_1, \\
s_3 &= \dot{q}_2, \\
s_4 &= \dot{q}_3,
\end{align}
and your dynamical equation gives you expressions for $f_1, \ldots, f_4$. But plugging this system into an ODE integrator would only give you results for these quantites: $s_1(t), \ldots, s_4(t)$, which is just $\dot{\mathbf{q}}(t)$. You will not get $\mathbf{q}(t)$ itself. Now, at this point, you might reasonably think to yourself "Well, that's fine; I'll just take $\dot{\mathbf{q}}(t)$, then go back and integrate it as usual to get $\mathbf{q}(t)$." But you needed to know $\mathbf{q}(t)$ to integrate the equations in the first place, since it appears via $\mathbf{H}$ on the right-hand side of the equation for $\ddot{\mathbf{q}}$. That is, you need to evolve $\mathbf{q}(t)$ right along with the rest of the system, which means that you have to include it in your list of $s_i$'s:
\begin{align}
s_5 &= {q}_0, \\
s_6 &= {q}_1, \\
s_7 &= {q}_2, \\
s_8 &= {q}_3.
\end{align}
And the functions $f_5, \ldots, f_8$ are only given by the kinematical equation; not the dynamical.
There's an important subtlety here: Your $f_i$ equations really have to be written in terms of the $s_i$ variables; you can't have them in terms of $\dot{s}_i$ or $\dot{q}_i$. Only $s_1, \ldots, s_8$ are allowed on the right-hand sides. This may seem a bit confusing and weird, since you and I know that $s_1$ and $\dot{s}_5$, for example, are supposed to be the same things. But the ODE solver can't understand this fact, and has to treat them as completely separate and independent things.
Ultimately the reason is that we have theorems establishing the existence and uniqueness of solutions to systems of ODEs in this form (if we also have initial values). That is, the theorems tell us that the ODE integrator should work. There are no such theorems for systems like $\ddot{s}_i = f_i(t, s_1, \ldots, s_4, \dot{s}_1, \ldots, \dot{s}_4)$ — at least not directly. It is possible to reduce such a system to first order, but that basically amounts to extending the system like I showed above by adding four more state variables to it.
This should be enough for you to figure out exactly how to write your MATLAB code, but I'll just point out one thing that may make it easier. You give a dynamical equation for $\ddot{\mathbf{q}}$, but ultimately that comes from a much simpler equation for $\dot{\Omega}_B$, which is the derivative of the angular velocity in the body frame. That equation and the equation for $\dot{\mathbf{q}}$ can be written very easily in terms of just $\Omega_B$ and $\mathbf{q}$, so you could make those your state variables, instead of $\dot{\mathbf{q}}$ and $\mathbf{q}$. That would eliminate a lot of matrix multiplies and inversions, leading to more efficient and possibly more accurate code.
\mathbf
for the hamiltonian and other variables like the quaternions? I've never seen that before; if I recall correctly, it's usually used as a way to show vectors. You should consider changing that to normal math. People frequently use bold text as a substitute for mathjax (though that isn't encouraged), but you seem to be familiar with mathjax. $\endgroup$