Message Boards Message Boards

Turn this system of differential equations into a single equation?

GROUPS:

Consider the following code:

{
             0 == -voltageC0[t] - 2*voltageC0''[t] + 2*voltageC1''[t],
             0 == -voltageC1[t] - 2*voltageC1''[t] + 2*voltageC0''[t]
             }

I am able to solve this system using DSolve, but now I want to do something different. I want to convert it into a single differential equation, expressed in terms of voltageC0 without reference to voltageC1, in this form:

0 == a0*voltageC0[t] + a1*voltageC0'[t] + a2*voltageC0''[t] + a3*voltageC0'''[t]

I show a 3rd-order solution as an example, but that is just for example of the target form, and the actual order may turn out to be more or less than 3 for all I know.

I want to find what the values of a0, a1, etc. are. Does Mathematica have facilities to help with this? I believe the conversion should be possible, but I don't understand the process for converting.

POSTED BY: Joe Donaldson
Answer
23 days ago

This requires differential elimination, which in turn requires prolongation. The latter simply involves taking derivatives of the existing expressions and setting them to zero. The former is a matter of algebraic elimination of variables.

Rule of thumb: elimination of n variables requires n+1 equations. We have two equations initially, and voltageC0 appears up to order 2. Noticing that each new derivative gives two new equations and adds one to the highest derivative of the term being eliminated, we decide we need to take two derivatives (so we get six equations and voltageC0 might appear in derivatives to order zero through 4, that is, five terms to eliminate).

With these considerations, the code below does the prolongation (twice), and obtains the variables to eliminate and the ones to keep.

odes = {-voltageC0[t] - 2 voltageC0''[t] + 
    2 voltageC1''[t], -voltageC1[t] - 2 voltageC1''[t] + 
    2 voltageC0''[t]};
prolonged = Join[odes, D[odes, t], D[odes, {t, 2}]]
allvars = Variables[prolonged];
elims = Select[allvars, ! FreeQ[#, voltageC1] &]
keepvars = Complement[allvars, elims]

(* Out[102]= {-voltageC0[t] - 2*Derivative[2][voltageC0][t] + 
  2*Derivative[2][voltageC1][t], 
   -voltageC1[t] + 2*Derivative[2][voltageC0][t] - 
  2*Derivative[2][voltageC1][t], 
   -Derivative[1][voltageC0][t] - 2*Derivative[3][voltageC0][t] + 
     2*Derivative[3][voltageC1][t], -Derivative[1][voltageC1][t] + 
     2*Derivative[3][voltageC0][t] - 2*Derivative[3][voltageC1][t], 
   -Derivative[2][voltageC0][t] - 2*Derivative[4][voltageC0][t] + 
     2*Derivative[4][voltageC1][t], -Derivative[2][voltageC1][t] + 
     2*Derivative[4][voltageC0][t] - 2*Derivative[4][voltageC1][t]}

Out[104]= {voltageC1[t], Derivative[1][voltageC1][t], 
 Derivative[2][voltageC1][t], 
   Derivative[3][voltageC1][t], Derivative[4][voltageC1][t]}

Out[105]= {voltageC0[t], Derivative[1][voltageC0][t], 
 Derivative[2][voltageC0][t], 
   Derivative[3][voltageC0][t], Derivative[4][voltageC0][t]} *)

Now Eliminate or GroebnerBasis can be used to do the elimination step.

GroebnerBasis[prolonged, keepvars, elims]

(* Out[106]= {voltageC0[t] + 4*Derivative[2][voltageC0][t]} *)
POSTED BY: Daniel Lichtblau
Answer
23 days ago

Thanks. I appreciate the explanation and demonstration very much.

POSTED BY: Joe Donaldson
Answer
23 days ago

Group Abstract Group Abstract