There are many ways which one could exploit. For example let's use calculate o1''[t]
eliminating o1'[t], o2'[t], o3'[t]
. We can use Eliminate
:
#1/.( Eliminate[ Join[ D[Halp, t], Halp], {#2, #3}] //ToRules)&[o1''[t], o2''[t], o3''[t]]
2 o1[t] o2[t]^2 + 2 o1[t] o2[t] o3[t] - 2 o2[t]^2 o3[t] + 2 o1[t] o3[t]^2 - 2 o2[t] o3[t]^2
Changing the order in the square bracket we can calculate o2''[t]
and o3''[t]
.
For the third order derivative of e.g. o1[t]
we can eliminate other dependent variables in many different ways, let's point out one of them:
#1 /.(
Eliminate[ Join[ D[Halp, {t, 2}], D[Halp, t], Halp], {##2}]
//ToRules) &[o1'''[t], o2'''[t], o3'''[t], o2''[t], o3''[t], o1''[t]]
2 o1[t]^2 o2[t]^2 + 4 o1[t] o2[t]^3 - 4 o1[t]^2 o2[t] o3[t] + 8 o1[t] o2[t]^2 o3[t]
- 4 o2[t]^3 o3[t] + 2 o1[t]^2 o3[t]^2 + 8 o1[t] o2[t] o3[t]^2 - 10 o2[t]^2 o3[t]^2
+ 4 o1[t] o3[t]^3 - 4 o2[t] o3[t]^3
In the above we eliminated all dependent variables starting from the second position in the square bracket (note very useful sign ##n
i.e. SlotSequence
) and calculated o1'''[t]
. Of course you can try to get rid of different dependent variables. In general this is a difficult issue to decide which dependent variables could be eliminated and how they could be represented by another variables. I suggest to take a closer look at GroebnerBasis
with the MonomialOrder -> EliminationOrder
option.
GroebnerBasis[ polys, vars, elims, MonomialOrder -> EliminationOrder]
If given equations are relatively simple you can't observe a common problem in differential elimination - so called intermediate expresssion swell. For interesting mathematical issues related to the problem I'd suggest to study e.g. a recent monograph Involution by Werner Seiler (Springer 2009). However I couldn't mention interesting packages in Mathematica
related to differential elimination (there are such packages e.g. in Maple).