Welcome to Calculus.
I'm professor Greist. And we're about to begin Lecture 9, Bonus
Material. In our main lesson, we considered growth
rates of functions and ordered them in a hierarchy, as x goes to infinity.
This led to a language for discussing and controlling that growth, both as x goes
to infinity, and as x goes to 0. This language is called Big-O.
Before we get to that, there's one thing that we need to reconsider a little bit.
One of the things we discussed was the factorial function or factorial growth.
But what exactly do we mean by factorial functions?
What is x factorial when x is not an integer?
Well there is a real definition for it. It's going to look a little complicated,
the definition of x factorial Is the integral as t goes from zero to infinity,
t to the x times e to the minus t dt. Oh, what in the world is that?
Well, we're not going to explain that now.
We'll get to that later in this course, maybe in Chapter Three.
But, for the moment, one thing to know is that this definition satisfies the
property that factorials have, namely that x factorial equals x times quantity
x minus 1 factorial, at least for x positive.
And also, n factorial for an integer agrees with this definition.
Now, I'm not going to prove that now, we'll talk about that later in the
course. What I want to argue is that this
factorial growth beats exponential growth, in the case where x is an
integer, a positive integer. Then, we get x factorial being the
familiar, x times x minus 1 times x minus 2, et cetera.
All the way down. If we look at e to the x, well, this is
some number of copies of e multiplied together.
Now for values of x hm, very large, we see that terms in the numerator and terms
in the denominator pair perfectly. And almost all of the terms in the
numerator are much bigger than the terms in the denominator.
And this means that in the limit, as x goes to infinity, we get something that
is infinite. That means that x factorial grows much
faster than e to the x. If you're curious about this unusual sort
of definition, look up information about the gamma function.
We'll return to that a little bit later in this course.
What I'd like to spend some time on is a bit of discussion about Big-O.
How is this language used? Why is this language Used.
It is ubiquitous in Applied Mathematics. And you're going to see it at various
points throughout this course. So let's take some time and review, and
extend what we know. Recall that a function f is said to be in
Big-O in the function g. If, in the appropriate limit, f, in
absolute value is less than g in absolute value times some constant c, we don't
care about what the constant is, we just want to know that there is some upper
bound. Again, this holds in the limit as x is
going to wherever were interested in looking at.
Maybe x is going to zero or maybe x is going to infinity.
One of the reasons Big-O is so useful is that it forms an efficient language.
For example, f is in Big-O of 1 is means the same thing, as saying that f is
bounded in the limit, as x is going to zero or infinity or whatever, there are
other applications as well, real applications.
For example, in computer science one is often interested in specifying how much
effort it takes to execute a certain algorithm.
This is the subject of computational complexity.
Consider the following. Let's say you have two n digit numbers
and you want to multiply them together. How much work are you going to have to
do? How many individual mathematical
computations is that going to take? Well, let's consider what it takes to
multiply two numbers together using the standard algorithm that you learned in
primary school. And let's count this as a function of n.
And consider what happens as n is going to infinity.
To multiply these two numbers together I need to take each digit of the second
number. And multiply it by the entire first
number. That is n elementary mathematical
operations? Well, maybe it's not n.
Maybe we should call it 2n because of the fact that you have to multiply 6 times 3,
18, write the 8, carry the 1, et cetera. We'll pick some constant times n.
But we need to do that for each of the n digits in the second number.
Now, we're still not done because we need to take all of those resulting products,
and add them together. And I'll let you try to figure out how
much effort is involved in that addition. It's, you know, some number times n,
times [INAUDIBLE] maybe n, maybe n minus 1, I don't know.
I'm not a computer scientist. I'm a mathematician.
But neither I nor the computer scientist needs to worry about these exact
constants. If all we care about is what happens as n
is going to infinity, we can say that this algorithm is in Big-O of n squared.
It's going to take a quadratic amount of effort.
So, as your numbers get bigger and bigger, you're doing a lot more work to
multiply them together. Is there an algorithm that is better,
that is, say, n times log n? Well that is what Big-O is good for.
Error analysis in engineering, physics, other sciences, is another excellent
application. Let's say that you know the kinetic
energy of your body is one half the mass times the velocity squared, but let's say
that your measurement of the velocity has some error associated with it.
Epsilon, we'll call that error. And we'll assume that epsilon is very
small. What is the induced error in our kinetic
energy? Well, of course, if we expand that out,
one half mv squared plus m times v times epsilon plus something that is in Big-O
of epsilon squared, what we really care about is the leading-order term in
epsilon. That is going to dictate what the error
to the kinetic energy is, and we can see that that is really the momentum, m times
v in this case. Now, other examples are relevant to what
we began this lesson with. Let's consider x factorial.
We argued that its growth rate is pretty big, that x factorial is not in Big-O of
e to the x. But we can say more is a wonderfully
useful and powerful formula in mathematics called Stirling's Formula
that says exactly how fast x factorial grows.
One form of this says that log of x factorial equals x times log of x minus x
plus some remainder term that is in Big-O of log of x.
Perhaps the stronger version of Stirling's Formula will be a bit more
transparent. It says that x factorial equals square
root of 2 pi x times quantity x over e to the x power times 1 plus something in
Big-O of 1 over x. Now you don't need to memorize either of
these. They're wonderfully useful in probability
in combinatorics in the lots of areas. But what I want you to see is that the
appropriate language for expressing how fast x factorial grows as x goes to
infinity is Big-O. Pure mathematics uses Big-O as well.
If we define the function pi of x to be the number of prime numbers less than x.
Let's restrict to the positive primes of course and x is going to be, let's say,
integer valued. Doesn't matter.
Then, one thing we could say is that the number of primes is Big-O of x.
But that's a vacuous statement. Not every integer is prime.
We'd like some idea of how many primes there are.
Well, of course there are infinitely many primes.
But we'd like to know a bit finer information.
What kind of density do the prime numbers have within the natural numbers?
Well. we can use the language of Big-O to state
the prime number theorem, which says that pi of x is to leading order x over log of
x. That's not exactly what it is, it's just
the leading order term, but pi of x is x over log x times quantity 1 plus
something in Big-O, 1 over log of x. And that's one example of how this
language appears in everything from pure mathematics to applied mathematics.
To the physical and computational sciences.
It'll take a little while to get used to this language, and it's going to take a
bit of practice. Most students find it a bit unlike things
that they've learned in the past, because of this arbitrary constant.
But do a few practice problems and you'll see Big-O cropping up later in the
course.