# Avoiding zero (empty set) solution with NDSolve

I'm trying to use NDSolve for a chemical kinetics equation where the rate of conversion is given by this relationship as typed in Mathematica:

NDSolve[{X'[t] == k*(X[t])^m*(1 - X[t])^n, X[0] == 0}, {X}, {t, 0, 10000}]


The problem is that at the initial condition (t=0) the conversion should be zero (X=0), but this just returns the empty set X[t]=0 for all times rather than a solution for conversion vs. time.

Is there a way to get NDSolve to solve this differential equation while avoiding the empty set solution?

Additional info: I've determined the values for k, m, and n experimentally. k will be a function of temperature, but I'm just setting it equal to 1 for now for simplicity, m = 1.8, and n= 1.2. I can get NDSolve to give me a solution if I set the initial conditions such that the conversion at time t=0 is a small number rather than zero (i.e. X[0]==0.01), however the solution I get for the conversion vs. time is highly dependent on just how small I make the conversion value at time t=0 and I'm not sure what the most realistic value would be. I hope this makes sense.

Update from original poster (I now have a registered account):

I just wanted to say thanks for all the helpful responses to my question. The answers below make sense, mathematically the solution from NDsolve is correct. It's just a matter of what initial value other than zero makes the most sense for this situation, which I was getting hung up on. By the way, the reaction model is for an autocatalyzed reaction, more specifically a free-radical polymerization, where the initial rate is slow, but then shoots up rapidly at a certain conversion.

• Can you give a numerical example with appropriate values plugged in for all your constants? If a diff eq really does have two solutions, you can force NDSolve to avoid the all-zero one by specifying a non-zero "initial" condition. Note that you can specify a value for x at other positions than the start and beginning of the time interval. You can have x[100]==1 and {t,0,200} or you can have x[0]==1 and {t, -100, 100}. Sep 20, 2013 at 21:04
• (I'm not sure this approach will work. I can construct a first order diff eq where it would work with difficulties. It'll be easier if you give an actual numerical example and show us that it does have a non-zero solution.) Sep 20, 2013 at 21:21
• @Szabolcs Thanks for the comment. I added some additional information to the question regarding your comment. Hope that will help to clarify the problem. Sep 20, 2013 at 21:33
• Thanks for the edit (and welcome to Mathematica.SE). Can you explain why you think that this equation will have a non-zero solution if at some time t x[t]==0? It looks like it would reach 1 and 0 at -Infinity and Infinity. Notice that the equation does not contain the time at all, only x. This means that the solutions you get for different initial conditions have exactly the same shape and are only translated in time relative to each other. The shape of the solution doesn't depend on x[0] at all. Sep 20, 2013 at 21:38
• Actually, I think you are right. The shape of the solution does not depend on the initial conditions, the different initial values would just translate the solution in time relative to each other. I guess it's just a matter of picking the right initial value to match the experimental data? In theory though at t=0 the conversion should be zero (X=0), so I think that is what is confusing me. By the way, I corrected the original version of the equation to remove the negative sign, so that at Infinity the conversion should be X=1. Sep 20, 2013 at 21:45