Community Tip - When posting, your subject should be specific and summarize your question. Here are some additional tips on asking a great question. X
Hmm, with your range variable you demand a precision of 20000 points, but odesolve by default has only a resolution of 1000 points!
So what you get to see is mostly the effect of (nonlinear) interpolation.
If you need a precision that high, you must also tell the solve block so by adding the last optional argument in "odesolve".
The difference is quite significant as you can see here:
I also prefer using "CreateSpace" instead of defining a range variable, but this may be a matter of personal preference.