I think the issue behind this question is actually interesting. Not-so-experienced Mathematica users often suffer an illusion: the internal functions will merge when they are used together.
In your case, you probably felt that NDSolve together with the equations and initial conditions have merged to something that will solve the ODE. "So, what happened inside this something?" "Hmm, I don't know, and I believe no body knows, it happened internally." Unfortunately, as said above, it's generally not true. When functions are used together, they will just execute from inner to outer. (This order will be adjusted by attributes like HoldAll, HoldFirst, etc. of course.)
A choice to show the process is to use Trace, you can also try the functions in this post. Here I'll use WReach's traceView2:
NDSolve[{r/g y''[x] + (k r/g + b r^2/mg) y'[x]^2 + Cos[x] - k Sin[x] == 0,
y[0] == π/2, y'[0] == ω}, y, {x, 0, 2}] // traceView2
Pictured by Simon Wood's shadow.
As you see, the equation inside NDSolve is executed before NDSolve begins to work.
NDSolve. Take the equation and evaluate it withoutNDSolve. Theb*...part will disappear due tobbeing 0. Essentially you are asking: "Is it correct that0/mgautomatically evaluates to0withoutmghaving a value?" – Szabolcs Oct 14 '15 at 10:300/mggetting auto-simplified has been brought up before. Here's one related thread. There are others I cannot find right now. – Szabolcs Oct 14 '15 at 10:32mgcan betextor anything and yetl it will be solved!NDSolve[{r/g*y''[x] + (k*r/g + b*r^2/"abc ")*y'[x]^2 + Cos[x] - k*Sin[x] == 0, y[0] == \[Pi]/2, y'[0] == \[Omega]}, y, {x, 0, 2}]– Oct 14 '15 at 11:450/mg, it is NDSolve, a numeric processor. Before it solves, all variables must be known as numeric. – Oct 14 '15 at 12:45NDSolvenever sees0/mgbecause0/mgimmediately evaluates to0. What you see has absolutely nothing to do withNDSolve. When you typeNDSolve[args], firstargsare evaluated,NDSolveis only processed afterwards. – Szabolcs Oct 14 '15 at 12:50