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