# Propagating uncertainty with the slope of a tangent line

I have done an experiment that found the initial reaction rate for a reaction that created gas in $$\pu{kPa s^-1}$$ by finding the slope of the tangent line at time = 0. How do I propagate uncertainty for this? Is there any uncertainty propagation that has to be done?

$$\text{slope} = \frac{\pu{(99.726 ± 0.01) kPa} - \pu{(99.71753 ± 0.01) kPa}}{\pu{0.076 s} - \pu{0.061 s}} = \pu{0.56 ± 0.02 kPa s^-1}$$

This is what I have so far. My teacher said that the error for the time was so small that it is negligible (but not a perfect number). I do not think using percentage uncertainty would make sense here because you could measure the slope with however big or small numbers you wanted, depending on what two points you chose to use.

I got Vernier Logger Pro to do the tangent and slope calculations for me which is why there are more decimal places than uncertainty. Not rounding until the end. Is that wrong?

These are the instructions I was given: only a simple treatment is required. For functions such as addition and subtraction, absolute uncertainties can be added; for multiplication, division and powers, percentage uncertainties can be added. If one uncertainty is much larger than the others, the approximate uncertainty in the calculated result can be taken as due to that quantity alone.

You have not propagated your errors properly. Note that the sum in your nominator evaluates to a small number with an error of roughly the same size (99.73±0.01 - 99.72±0.01 = 0.01±0.01). Also, error propagation cannot be done by simply adding up the errors.

Instead of calculating the error propagation manually (cumbersome, and prone to errors, hehe ;-) I think it's better to use suitable software. Both R and Python (both are freely available, commonly used tools) can handle error propagation.

Here's how to do it with R (the code below should be reproducible, assuming you have installed R).

install.packages("errors")
library(errors)
options(errors.notation="plus-minus", errors.digits=1)
y1 <- set_errors(99.726, 0.01)
y2 <- set_errors(99.71753, 0.01)
t1 <- set_errors(0.076, 0)
t2 <- set_errors(0.061, 0)
(y1 - y2) / (t1 - t2)
# 0.6 ± 0.9


The value of the slope is 0.56 kPa/s, but since the error is 0.9 kPa/s, we should report just a single significant digit, so that makes it 0.6 ± 0.9 kPa/s.

And not rounding till the end is not wrong, in fact, it's good practice. As long as you handle your uncertainties correctly, too many significant digits (due to intermediate calculation steps or whatnot) become practically irrelevant, since your value cannot be more precise than the size of your uncertainty anyway.

Good luck!

• Thank you! I am thinking that that might be a bit too advanced for me... The instructions I was given is " Only a simple treatment is required. For functions such as addition and subtraction, absolute uncertainties can be added; for multiplication, division and powers, percentage uncertainties can be added. If one uncertainty is much larger than the others, the approximate uncertainty in the calculated result can be taken as due to that quantity alone" I forgot that it's more complicated irl. I realize I probably should have put that in my original question, oops! Does this change your answer? – HoneyBee Mar 1 at 1:35
• Thanks for the clarification. Assuming the errors you reported were absolute errors, then no, the answer is the same (mostly). The simplified error propagation method you suggested is probably fine for homework, but would underestimate the final error in this case. First we need to determine the relative error in the nominator: 0.01 / 0.0085 = 118%. Then we can perform the division while adding the relative errors: 0.0085±118% / 0.015±0% = 0.565±118%. So using the simplified method, the final value becomes 0.6±0.7 kPa/s, by my reckoning. – solarchemist Mar 1 at 21:26
• I feel like using R for a calculation as small as this is a bit of an overkill. – Shoubhik R Maiti Mar 7 at 22:27