How to | Check the Results of DSolve
While
DSolve usually returns the correct solution to a differential equation it is given, it is common practice to verify the solution returned by any differential equation solver. The solution given by
DSolve can be verified using various methods. The easiest method involves substituting the solution back into the equation. If the result is
True, the solution is valid.
In this example, the solution is verified by substitution.
For convenience later, assign the first argument of
DSolve to

:
When the second argument to
DSolve is specified as

instead of

, the solution is returned as a pure function. This form is useful both for verifying the solution and using it in further work:
| Out[14]= |  |
Use

(the short form for
ReplaceAll) to substitute the solution back into the equation:
| Out[15]= |  |
Here, the same method is used to verify that the solution satisfies the equation and an initial condition:
| Out[17]= |  |
| Out[18]= |  |
Sometimes the result of the substitution is too complicated to give an immediate
True or
False. Such examples can be verified by using
Simplify to simplify the result of the substitution. If the simplified result is
True, the solution is valid.
Get the solution to a second-order inhomogeneous equation:
| Out[20]= |  |
Substitute the solution back into the equation:
| Out[21]= |  |
Use
Simplify to verify the solution:
| Out[22]= |  |
Here, the same method is used to verify the solution to a linear PDE:
| Out[24]= |  |
| Out[25]= |  |
If the equation involves special functions, it may be necessary to use
FullSimplify to verify the solution.
For example, this solution contains Bessel functions:
| Out[2]= |  |
Using
Simplify does not verify the solution:
| Out[3]= |  |
| Out[4]= |  |
Another important verification technique is to do a numerical check for all the variables and parameters in the problem. It is advisable in such cases to repeat the check with several sets of random values.
Here is an example where numerical verification is useful:
| Out[2]= |  |
| Out[3]= |  |
Although numerical checks cannot verify a solution with certainty, more rigorous checks can be made by using higher precision or by allowing the variables to take complex values.
This verifies the previous solution with higher precision:
| Out[33]= |  |
This uses complex random values to verify the previous solution:
| Out[35]= |  |