DSolve validation

• To: mathgroup at smc.vnet.net
• Subject: [mg33989] DSolve validation
• From: Vladimir Bondarenko <vvb at mail.strace.net>
• Date: Thu, 25 Apr 2002 03:00:18 -0400 (EDT)
• Sender: owner-wri-mathgroup at wolfram.com

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

Sincerely,