MathGroup Archive 2002

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

Search the Archive

Re: DSolve validation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg34020] Re: [mg33989] DSolve validation
  • From: BobHanlon at aol.com
  • Date: Fri, 26 Apr 2002 03:28:08 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

In a message dated 4/25/02 5:38:34 AM, vvb at mail.strace.net writes:

>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?
>

You have to substitute for the function as well as the derivatives.  In 
general use,

          NestList[D[#,x]&, sol, n]

where n is the highest order derivative required.

ode1=y''[x]+x y'[x]==0;
sol1=DSolve[ode1,y[x],x]//Flatten;
drv1 = NestList[D[#,x]&, sol1, 2]//Flatten;
ode1 /. drv1

True

ode2=y''[x]+x y[x]==0;
sol2=DSolve[ode2,y[x],x]//Flatten;
drv2 = NestList[D[#,x]&, sol2, 2]//Flatten;
ode2 /. drv2 // Simplify

True


Bob Hanlon
Chantilly, VA  USA


  • Prev by Date: RE: Definite Integrals & Hidden Cells
  • Next by Date: Re: DSolve validation
  • Previous by thread: Re: DSolve validation
  • Next by thread: Re: DSolve validation