Message Boards Message Boards

0
|
2012 Views
|
2 Replies
|
4 Total Likes
View groups...
Share
Share this post:

Turn this system of differential equations into a single equation?

Anonymous User
Anonymous User
Posted 6 years ago

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: Anonymous User
2 Replies

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
Anonymous User
Anonymous User
Posted 6 years ago

Thanks. I appreciate the explanation and demonstration very much.

POSTED BY: Anonymous User
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract