MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Unsolvable ODE

  • To: mathgroup at smc.vnet.net
  • Subject: [mg113112] Re: Unsolvable ODE
  • From: Daniel Lichtblau <danl at wolfram.com>
  • Date: Wed, 13 Oct 2010 12:39:45 -0400 (EDT)
  • References: <201010120830.EAA19575@smc.vnet.net>

István Zachar wrote:
> Dear All,
> 
> Consider the following set of ODEs which Mathematica can solve easily:
> 
> In[2]:= Solve[{
>   0 == f - 2 p m + q a + q b,
>   0 == p m - q a - kA a y2,
>   0 == p m - q b - kB b (x1 + x2 + y1),
>   0 == -kB b x1 + 2 kB b x2,
>   0 == kB b x1 - dtemp x2 - kB b x2,
>   0 == -kB b y1 + 2 kA a y2,
>   0 == kB b y1 - dtemp y2 - kA a y2},
>  {m, a, b, x1, x2, y1, y2}]
> 
> Out[2]= {{m -> (f kB + dtemp q)/(kB p), x1 -> (2 f)/(3 dtemp),
>   x2 -> f/(3 dtemp), y1 -> 0, y2 -> 0, a -> (f kB + dtemp q)/(kB q),
>   b -> dtemp/kB}, {m -> (f kA + 3 dtemp q)/(3 kA p), x1 -> 0, x2 -> 0,
>    y1 -> -((2 f kA q)/(kB (f kA - 3 dtemp q))), y2 -> f/(3 dtemp),
>   a -> dtemp/kA,
>   b -> (-f kA + 3 dtemp q)/(3 kA q)}, {m -> (
>    f + (dtemp q)/kA + (dtemp q)/kB)/(2 p),
>   x1 -> (-f + (3 dtemp q)/kA - (3 dtemp q)/kB)/(3 dtemp),
>   x2 -> (-f + (3 dtemp q)/kA - (3 dtemp q)/kB)/(6 dtemp),
>   y1 -> (f kA kB + dtemp kA q - dtemp kB q)/(dtemp kA kB),
>   y2 -> (f - (dtemp q)/kA + (dtemp q)/kB)/(2 dtemp), a -> dtemp/kA,
>   b -> dtemp/kB}}
> 
> Now rearrange some terms in the equations, but keep the complexity and
> order at the same level. Strangely, Mathematica 7.0.1.0 (and 6.0 as well)
> seems to have some problem solving it for all the variables.
> 
> In[1]:= Solve[{
>   0 == f - 2 m p + a q + b q,
>   0 == m p - a q - a kA (x1 + x2 + y2),
>   0 == m p - b q - b kB y1,
>   0 == -a kA x1 + 2 a kA x2,
>   0 == a kA x1 - dtemp x2 - a kA x2,
>   0 == -b kB y1 + 2 a kA y2,
>   0 == b kB y1 - dtemp y2 - a kA y2
>   }, {m, a, b, x1, x2, y1, y2}]
> 
> During evaluation of In[1]:= Solve::svars: Equations may not give
> solutions for all "solve" variables. >>
> 
> Out[1]= {{m -> (f + b q + (dtemp q)/kA)/(2 p),
>   x1 -> (f + 3 b q - (3 dtemp q)/kA)/(6 dtemp),
>   x2 -> (f + 3 b q - (3 dtemp q)/kA)/(12 dtemp),
>   y1 -> (f - b q + (dtemp q)/kA)/(2 b kB),
>   y2 -> (f - b q + (dtemp q)/kA)/(4 dtemp), a -> dtemp/kA}}
> 
> Note that the solution contains 'b', thus the whole ODE set is not
> solved for every variable, just as the error message states. Now I
> have a very strong feeling about this ODE set being equivalent to the
> first one, and being soluble for all variables. Does anyone have any
> idea what could go wrong here? Is it the internal algorithm of Solve?
> Can anyone prove analytically that this latter ODE system cannot be
> solved for all variables WITHOUT using Mathematica?
> 
> Istvan

First, these are systems of algebraic, not differential, equations.

The solutions are readily seen to satisfy their respective systems. We 
see this below. Rewriting the two sets of polynomials n Mathematica 
InputForm we have

p1 = {f - 2*m*p + a*q + b*q, m*p - a*q - a*kA*y2,
   m*p - b*q - b*kB*(x1 + x2 + y1),
  -(b*kB*x1) + 2*b*kB*x2, b*kB*x1 - dtemp*x2 - b*kB*x2,
  -(b*kB*y1) + 2*a*kA*y2, b*kB*y1 - dtemp*y2 - a*kA*y2};

p2 = {f - 2*m*p + a*q + b*q, m*p - a*q - a*kA*(x1 + x2 + y2),
   m*p - b*q - b*kB*y1,
  -(a*kA*x1) + 2*a*kA*x2, -(dtemp*x2) - a*kA*x2, -(b*kB*y1) + 2*a*kA*y2,
  -(dtemp*y2) - a*kA*y2};

vars = {m, a, b, x1, x2, y1, y2};

In[37]:= InputForm[sol1 = Solve[p1==0, vars]]

Out[37]//InputForm=
{{m -> (f*kA*kB + dtemp*kA*q + dtemp*kB*q)/(2*kA*kB*p), a -> dtemp/kA,
   b -> dtemp/kB, x1 -> (-(f*kA*kB) - 3*dtemp*kA*q + 3*dtemp*kB*q)/
     (3*dtemp*kA*kB), x2 -> (-(f*kA*kB) - 3*dtemp*kA*q + 3*dtemp*kB*q)/
     (6*dtemp*kA*kB), y1 -> (f*kA*kB + dtemp*kA*q - 
dtemp*kB*q)/(dtemp*kA*kB),
   y2 -> (f*kA*kB + dtemp*kA*q - dtemp*kB*q)/(2*dtemp*kA*kB)},
  {m -> (f*kB + dtemp*q)/(kB*p), a -> (f*kB + dtemp*q)/(kB*q), b -> 
dtemp/kB,
   x1 -> (2*f)/(3*dtemp), x2 -> f/(3*dtemp), y1 -> 0, y2 -> 0},
  {m -> (f*kA + 3*dtemp*q)/(3*kA*p), a -> dtemp/kA,
   b -> (-(f*kA) + 3*dtemp*q)/(3*kA*q), x1 -> 0, x2 -> 0,
   y1 -> (-2*f*kA*q)/(kB*(f*kA - 3*dtemp*q)), y2 -> f/(3*dtemp)}}

In[38]:= InputForm[sol2 = Solve[p2==0, vars]]

Solve::svars: Equations may not give solutions for all "solve" variables.

Out[38]//InputForm=
{{m -> (f*kA - dtemp*q + b*kA*q)/(2*kA*p), a -> -(dtemp/kA),
   x1 -> (-(f*kA) - 3*dtemp*q - 3*b*kA*q)/(6*dtemp*kA),
   x2 -> (-(f*kA) - 3*dtemp*q - 3*b*kA*q)/(12*dtemp*kA),
   y1 -> (f*kA - dtemp*q - b*kA*q)/(2*b*kA*kB),
   y2 -> (-(f*kA) + dtemp*q + b*kA*q)/(4*dtemp*kA)}}

Now we check that the two sets of solutions are valid.

In[39]:= Together[p1/.sol1]
Out[39]= {{0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0}}

In[40]:= Together[p2/.sol2]
Out[40]= {{0, 0, 0, 0, 0, 0, 0}}

That is the consistency check. It shows, among other things, that the 
second set of polynomials was indeed underdetermined.

Daniel Lichtblau
Wolfram Research


  • Prev by Date: Re: Limitations of Minimize? Time to buy a new PC for Mathematica?
  • Next by Date: Re: Programing tips: What is faster?
  • Previous by thread: Unsolvable ODE
  • Next by thread: Re: Solving a non-linear system to find coefficients