Big O Notation and Polynomials
Date: 04/12/2001 at 10:17:29 From: Paul Statham Subject: Big O Notation and polynomials I have a sample question I have been practicing. It gives the function: f(x) = (x^3 - (4x^2) + 12)/(x^2 + 2) It then asks me to plot this on an Excel worksheet and explain the behaviour for increasing values of x, where 0 <= x <= 20 for intervals of 0.2. This part I have no problem with. It then tells me to find a polynomial function g(x) such that both these conditions apply. .f(x) is O(g(x)) .g(x) is O(f(x)) From this I presume that f(x) is the same as it was defined before, and have done the following calculations to get O(g(x)). For x > 1 we have the numerator x^3 - 4x^2 + 12 <= x^3 + 0 + 12x^3 For x > 2 we have the denominator x^2 + 2 <= x^2 + 2x^2 Hence we have |f(x)| <= 13x^3/3x^2 = 13x/3 giving f(x) as O(x) First of all, is that correct? And if it is, does it mean that g(x) = x ? This bit is confusing me because if that is the case, then how can g(x) be O(f(x)) ?
Date: 04/12/2001 at 17:31:19 From: Doctor Rob Subject: Re: Big O Notation and polynomials Thanks for writing to Ask Dr. Math, Paul. You have a minor problem in the above analysis because of the following fact. It is false that a <= b and 0 < c <= d implies that a/c <= b/d. (Try a = 9, b = 10, c = 1, d = 2.) What is true is that a <= b and c >= d > 0 implies that a/c <= b/d. Thus you need to find a function that is smaller than x^2 + 2, not greater, and still positive. x^2 will do, and then you get |f(x)| <= 13*x^3/x^2 = 13*x. This still gives f(x) = O(x), which is correct. To prove that x = O(f(x)), you need to find a constant C and a bound X such that x >= X implies that x <= C*f(x). One way I like to deal with rational functions is to divide the polynomial of larger degree by the one of smaller degree, with remainder, and express the function that way. In this case, f(x) = (x^3-4*x^2+12)/(x^2+2) = x - 6 + (2*x+4)/(x^2+2) Now I want to know when the fraction is smaller than a constant. The constant 2 happens to be convenient, but I could use any other positive one I want. That happens when (2*x+4)/(x^2+2) < 2 x + 2 < x^2 + 2 0 < x^2 - x which is true for all x > 1. Thus for all x > 1, f(x) < x - 4 < x. This proves that f(x) = O(x). On the other hand, the fraction is positive for all x > -2. That implies that for all x > -2, f(x) > x - 6. Now I want x - 6 > C*x for some C and all x >= X. That happens if and only if (1-C)*x > 6, that is, x > 6/(1-C) (for C < 1). That means that I can choose, for example, C = 1/2, and X = 12, and then for x >= 12, x - 6 >= (1/2)*x, so for x >= 12, f(x) > x - 6 >= (1/2)*x x < 2*f(x) This means that x = O(f(x)). You can choose g(x) = x. It may be worth noticing that *any* polynomial g(x) of degree 1 would do here. You would have to adjust the constants C and bounds X, but that does not affect the validity of the relation, which just needs them to exist, and doesn't specify their sizes. g(x) and f(x) can have that relation if |f(x)/g(x)| is bounded above and below by positive constants for large x. In this case, the constants 1 and 1/2 will do, and when you use those constants, "large" means x >= 12. - Doctor Rob, The Math Forum http://mathforum.org/dr.math/
Search the Dr. Math Library:
Ask Dr. MathTM
© 1994- The Math Forum at NCTM. All rights reserved.