MathGroup Archive 2002

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

Search the Archive

Re: DSolve validation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg34006] Re: [mg33989] DSolve validation
  • From: Andrzej Kozlowski <andrzej at platon.c.u-tokyo.ac.jp>
  • Date: Fri, 26 Apr 2002 03:27:30 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

First of all, you forgot something.


In[1]:=
ode1 = Derivative[2][y][x] + x*y[x] == 0;

In[2]:=
sol1 = DSolve[ode1, y[x], x]

Out[2]=
{{y[x] -> AiryAi[(-1)^(1/3)*x]*C[1] + AiryBi[(-1)^(1/3)*x]*
       C[2]}}

In[3]:=
FullSimplify[ode1 /. D[sol1, x, x] /. D[sol1, x] /. sol1]

Out[3]=
{{{True}}}}

But actually this method will only work in relatively simple cases. When 
the answer is complicated enough there is no algorithm to verify it 
symbolically because there is no algorithm which reduces one complicated 
expression to another. So you have to resort to trying to obtain 
numerical confirmation of the validity of your solutions.

Andrzej Kozlowski
Toyama International University
JAPAN
http://platon.c.u-tokyo.ac.jp/andrzej/

On Thursday, April 25, 2002, at 04:00  PM, Vladimir Bondarenko wrote:

> Gentlemen,
>
> It's easy to double check the DSolve output here:
>
>       In[1] := ode1 = y''[x] + x y'[x] == 0;
>
>       In[2] := sol1 = DSolve[ode1, y[x], x]
>       Out[2] = {{y[x] -> C[2] + Sqrt[Pi/2]*C[1]*Erf[x/Sqrt[2]]}}
>
>       In[3] := ode1 /. D[sol1, x, x] /. D[sol1, x]
>       Out[3] = {{True}}
>
> Life is great! Inspirited with the success, let's consider this ODE.
>
>       In[4] := ode1 = y''[x] + x y[x] == 0;
>
>       In[5] := sol1 = DSolve[ode1, y[x], x]
>       Out[5] = {{y[x] -> AiryAi[(-1)^(1/3)*x]*C[1] + AiryBi
> [(-1)^(1/3)*x]*C[2]}}
>
>       In[6] := ode1 /. D[sol1, x, x] /. D[sol1, x]
>       Out[6] = {{-(x*AiryAi[(-1)^(1/3)*x]*C[1]) - x*AiryBi
> [(-1)^(1/3)*x]*C[2] + x*y[x] == 0}}
>
>
> (* Oops! The trick does not work ;-( *)
>
>       In[7] := ode1 /. D[sol1, x, x] /. D[sol1, x]//FullSimplify
>       Out[7] = {{x*(AiryAi[(-1)^(1/3)*x]*C[1] + AiryBi
> [(-1)^(1/3)*x]*C[2] - y[x]) == 0}}
>
>
> (* Not great, again *)
>
>       In[8] := ode1 /. D[sol1, x, x] /. D[sol1, x] // ComplexExpand // 
> FullSimplify
>       Out[8] = {{x*(AiryAi[(-1)^(1/3)*x]*C[1] + AiryBi
> [(-1)^(1/3)*x]*C[2] - y[x]) == 0}}
>
> (* etc etc etc *)
>
>
> 'Fraid, the same double check trouble holds for the hundreds ODEs I 
> have tried 8-(
>
> What might be a more or less streamlined way to validate the DSolve 
> solutions?
> Any module (publicly) available? Any (including halp-baked & raw) 
> ideas & hints?
>
> Thank you a lot for your time and efforts in advance.
>
>
> Sincerely,
>
> Vladimir Bondarenko
>
>
>
>
>



  • Prev by Date: Aligned Axes Labels on Plot3D
  • Next by Date: Re: invisible graphics
  • Previous by thread: Re: DSolve validation
  • Next by thread: Re: DSolve validation