I'm writing a computer program to calculate the order of a chemical reaction with respect to each reactant. When I do this by hand, it's easy to isolate which reactant concentration stays relatively the same while the others change. However, when you don't have an isolation method available, is there a non-guess and check way to determine rate orders?

For example, with the sample data of a 1st order reaction with respect to A and B, and second order overall

| Trial# | [A] | [B] | Rate |
|      1 |   1 |   1 |   10 | 
|      2 |   2 |   3 |   60 | 
|      3 |   3 |   2 |   60 |

There isn't a trial with two constant values, so I'm not sure how you would programmatically determine the orders with respect to each of the reactants without manually trying every possibility until one fit (I realize that this wouldn't take too much computing time to do, but it won't scale well for multiple trials, and I also would prefer a non-brute force solution if possible). If there is no way to determine the rate with respect to each reactant, is there a way to determine the overall rate? This would greatly reduce the number of possibilities of orders when faced with larger rates

  • $\begingroup$ I think this is more of a programming/maths problem than specific to chemistry... Have you tried asking on Math.SE? $\endgroup$
    – tschoppi
    Feb 15, 2014 at 16:28

1 Answer 1


Although this is indeed a bit more a math problem than chemistry, I think it is useful to answer it, because this is a commonly encountered problem in reaction kinetics.

First of all, Yes it is possible to get the rates with respect to each reactant separately, as long as you have sufficient experimental data. With sufficient I mean: $1+\text{number of reactants}$. This is because you don't only need the order for each reactant, but also the rate constant for the total reaction

The rate equation

In general a rate equation will have the following structure: $$ r = k [A]^\alpha [B]^\beta[C]^\gamma...\text{etc}$$ where with etc I mean that you can continue for as many reactants that you have. In your example you have 2 reactants so your rate equation in general will look like this: $$ r = k [A]^\alpha [B]^\beta $$ To find the reaction order with respect to each reactant we need experimental data on $r$ for given $[A]%$ and $[B]$ like you provided.

The fitting procedure

You will have to write a short program that takes an initial guess for $k$, $\alpha$ and $\beta$ and checks how good or bad that guess is by comparing the calculated rates $R$ with the experimental rates $r$ for each set of $[A]$ and $[B]$. The normal way to make this comparison is based on least-squares: $$S = \sum_{i=1}^N (r_i-R_i)^2 $$ So you sum up the squared differences between the reaction rate you found experimentally and the calculated rates for all $N$ experimental datasets.

To get the reaction orders and rate constant you want $S$ to be minimal, preferably 0 (although that normally doesn't happen with experimental data due to small measurement errors). Normally $S$ is not immediately optimal on your first guess for $k$, $\alpha$ and $\beta$, so you have to 'guess again'. You could indeed really guess again, but there are much smarter ways of determining the new guess, which will make sure your new guess is a better one than the old one. A common technique for this is called Newton's method. With the new guess you again check the value of $S$. You then repeat the cycle until you cannot find a lower value for $S$, which means that you have found the values of $k$, $\alpha$ and $\beta$ that are optimal for this experimental dataset and thus should be the correct reaction orders for the reaction.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.