Key Concepts: Economic Computation, Part II

Similar documents
Numerical Optimization

Chapter 14 Global Search Algorithms

Numerical Methods Lecture 7 - Optimization

Constrained and Unconstrained Optimization

1. Practice the use of the C ++ repetition constructs of for, while, and do-while. 2. Use computer-generated random numbers.

Today. Golden section, discussion of error Newton s method. Newton s method, steepest descent, conjugate gradient

Principles of Algorithm Design

Introduction to optimization methods and line search

MATH3016: OPTIMIZATION

The Bisection Method versus Newton s Method in Maple (Classic Version for Windows)

An interesting related problem is Buffon s Needle which was first proposed in the mid-1700 s.

MATH2070: LAB 3: Roots of Equations

Combinatorial Gems. Po-Shen Loh. June 2009

Design and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute

Modern Methods of Data Analysis - WS 07/08

4.1 COMPUTATIONAL THINKING AND PROBLEM-SOLVING

Programming, numerics and optimization

Remember Java Data Types

Lecture 2: SML Basics

9. The Disorganized Handyman

Definition: A data structure is a way of organizing data in a computer so that it can be used efficiently.

POLYHEDRAL GEOMETRY. Convex functions and sets. Mathematical Programming Niels Lauritzen Recall that a subset C R n is convex if

1.00 Lecture 19. Numerical Methods: Root Finding

16 Greedy Algorithms

A GRAPH FROM THE VIEWPOINT OF ALGEBRAIC TOPOLOGY

Attack on DES. Jing Li

10.4 Linear interpolation method Newton s method

Polynomial-Time Approximation Algorithms

Lecture 2 September 3

Optimization I : Brute force and Greedy strategy

Part 4. Decomposition Algorithms Dantzig-Wolf Decomposition Algorithm

Fondamenti di Informatica

D-Optimal Designs. Chapter 888. Introduction. D-Optimal Design Overview

Lecture 25 Spanning Trees

31.6 Powers of an element

More about The Competition

16.410/413 Principles of Autonomy and Decision Making

15. Cutting plane and ellipsoid methods

COMP 352 FALL Tutorial 10

Formal Model. Figure 1: The target concept T is a subset of the concept S = [0, 1]. The search agent needs to search S for a point in T.

Lecture 1 Contracts : Principles of Imperative Computation (Fall 2018) Frank Pfenning

Notes on Minimum Spanning Trees. Red Rule: Given a cycle containing no red edges, select a maximum uncolored edge on the cycle, and color it red.

(Refer Slide Time: 02:59)

Open and Closed Sets

Lecture 20 : Trees DRAFT

Chapter Four: Loops. Slides by Evan Gallagher. C++ for Everyone by Cay Horstmann Copyright 2012 by John Wiley & Sons. All rights reserved

Simplex of Nelder & Mead Algorithm

3.3 Function minimization

Applied Algorithm Design Lecture 3

(Refer Slide Time: 1:27)

Advanced Operations Research Techniques IE316. Quiz 1 Review. Dr. Ted Ralphs

Today s class. Roots of equation Finish up incremental search Open methods. Numerical Methods, Fall 2011 Lecture 5. Prof. Jinbo Bi CSE, UConn

26 The closest pair problem

Lecture 6: Spectral Graph Theory I

Today: Matrix Subarray (Divide & Conquer) Intro to Dynamic Programming (Rod cutting) COSC 581, Algorithms January 21, 2014

Lecture 11 COVERING SPACES

Final Exam, F11PE Solutions, Topology, Autumn 2011

15-451/651: Design & Analysis of Algorithms November 4, 2015 Lecture #18 last changed: November 22, 2015

Orientation of manifolds - definition*

5.5 Newton s Approximation Method

Sorting. There exist sorting algorithms which have shown to be more efficient in practice.

(Refer Slide Time: 00:02:00)

MA651 Topology. Lecture 4. Topological spaces 2

Computer Graphics Prof. Sukhendu Das Dept. of Computer Science and Engineering Indian Institute of Technology, Madras Lecture - 14

1.00 Lecture 19. Packaging Functions in Objects

Bisecting Floating Point Numbers

Lecture 1 August 31, 2017

Lecture 1 Contracts. 1 A Mysterious Program : Principles of Imperative Computation (Spring 2018) Frank Pfenning

EL2310 Scientific Programming

6 Distributed data management I Hashing

Multidimensional Divide and Conquer 2 Spatial Joins

CMSC 451: Lecture 10 Dynamic Programming: Weighted Interval Scheduling Tuesday, Oct 3, 2017

Tuning. Philipp Koehn presented by Gaurav Kumar. 28 September 2017

COMP Analysis of Algorithms & Data Structures

Hi everyone. Starting this week I'm going to make a couple tweaks to how section is run. The first thing is that I'm going to go over all the slides

Reals 1. Floating-point numbers and their properties. Pitfalls of numeric computation. Horner's method. Bisection. Newton's method.

Revisiting the Upper Bounding Process in a Safe Branch and Bound Algorithm

SYSTEMS OF NONLINEAR EQUATIONS

Lecture 25: Bezier Subdivision. And he took unto him all these, and divided them in the midst, and laid each piece one against another: Genesis 15:10

11.1 Facility Location

Reflector profile optimisation using Radiance

Improved Bounds for Intersecting Triangles and Halving Planes

Practical 4: The Integrate & Fire neuron

Polygon Partitioning. Lecture03

The Geodesic Integral on Medial Graphs

Vertex Cover Approximations

The angle measure at for example the vertex A is denoted by m A, or m BAC.

Introduction to Software Testing Chapter 4 Input Space Partition Testing

1.00 Lecture 25. Root Finding

Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi

Figure : Example Precedence Graph

lecture notes September 2, How to sort?

specified or may be difficult to handle, we often have a tabulated data

Lecture 2 - Introduction to Polytopes

Divide and Conquer. playing divide and conquer. searching in a sorted list membership in a sorted list

On the Max Coloring Problem

Computer Science 102 Lab 13. Suppose an online telephone book is comprised of structures of the following form:

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Approximation algorithms Date: 11/27/18

Sorting and Selection

Lecture 7: the quotient topology

Transcription:

Key Concepts: Economic Computation, Part II Brent Hickman Fall, 2009 The purpose of the second section of these notes is to give you some further practice with numerical computation in MATLAB, and also to help you begin to develop a numerical mindset (as opposed to an analytic one). 1 Naive Search vs. Divide and Conquer In this section we will talk about some simple algorithms for looking up items in a sorted list. Broadly speaking, an algorithm is a group of instructions that completely characterize the process of converting a set of inputs into desired outputs. To illustrate this concept, we shall solve a basic search problem. Let L = {l 1, l 2,..., l K } denote a set of ordered objects, where l k precedes l k+1 in the ordering for all k. For example, the list L can be a list of alphabetized words or a set of real numbers ordered from least to greatest. Let l denote a single object similar to those in the list L. Our objective is to find the correct placement for l in the list L. In other words, we wish to devise an algorithm that accepts inputs L and l, and produces an output k N such that the list L = {l 1,..., l k 1, l, l k,..., l K } is an ordered list. There are many possible algorithms we could select for producing the desired University of Iowa Brent-Hickman@UIowa.Edu 1

output from our specified inputs. In order to qualify as a valid algorithm, the proposed process need only satisfy two criteria: 1) It must be able to handle arbitrary inputs satisfying the definition of the problem. 2) It must correctly produce the specified output in a finite number of operations. However, not all algorithms are created equal, and the criterion typically used to rank algorithms is computational cost, or the number of operations required for the algorithm to terminate. Moreover, the computational cost of an algorithm is commonly measured in terms of the worst possible case, or in other words, the set of inputs that would maximize the workload required for termination. Note that two different algorithms may differ by their worst cases: a scenario that requires the maximal number of steps for one need not maximize computational burden for another. For example, consider two alternative algorithms for the search problem: naive search and divide and conquer. Naive search is the brute force approach. In words, it works by simply comparing l to each successive element of L, beginning with the first, until one is found that succeeds l in the ordering. The index of the first such element is k. It is easy to see that the worst case for naive search is some l that succeeds all elements of L; this would require exactly K comparisons of l with other objects. Divide and conquer is a more efficient algorithm that takes advantage of the fact that the list L comes pre-sorted. This means that if l succeeds l k for some k, then it must be that l also succeeds l k for any k < k. Similarly, if l precedes l k for some k, then it must be that l also precedes l k for any k > k. Thus, at each step the algorithm divides the list into two equal parts (hence the name), and compares l to the first element of the second half of the list. If l succeeds that object, then the first half of the list can be discarded. Otherwise, the second half is discarded. This process is repeated until only a single object remains, at which point k is the index of that element of the list. 2

So what is the computational cost of adopting divide and conquer as our solution to the search problem? Note that with each successive step, we decrease the number of possible comparisons which could be made by half. From this fact it follows that the algorithm will always require log 2 (K) comparisons, where denotes the ceiling operator that rounds its argument upward. To illustrate the difference between naive search and divide and conquer, suppose that the length K of the list was 1, 000, 000. Then the worst case for the former involves performing 1, 000, 000 comparisons, whereas the worst case for the latter involves only 20. Exercise 1 For the purpose of this exercise, let L be a list of K real numbers sorted in increasing order, and let l be a real number. Below are two blocks of pseudo code (rough drafts of a computer program) for naive search and divide and conquer. NAIVE SEARCH: DEFINE i*=k+1 for i=1:k if L(i)>l* RESET i*=i BREAK END END 3

DIVIDE AND CONQUER (here, thefloor function rounds its argument down): DEFINE i_hi = K, i_lo = 0, i* = floor(k/2) while i_hi ~= i_lo if l* <= L(i*) RESET i_hi = i*, RESET i* = floor((i_lo+i*)/2) else RESET i_lo = i*, i* = floor((i_hi+i*)/2) END END a. There are two main types of errors that programmers commit when designing a program. The first type is syntactical error, being specific to the particular programming language in use. The other type is algorithmic error, which is a mistake that causes a computer program to violate one of the two criteria above. In other words, an algorithmic error is a mistake that either (i) renders a program incapable of handling some relevant inputs or (ii) causes to the process to terminate with an incorrect output, or not to terminate at all. Algorithmic errors are very common for beginning programmers, and can often be difficult to identify. One of the two blocks of pseudo code above contains an algorithmic error. Identify the error, state whether it violates criterion 1) or 2) above, and propose a solution for the error. (HINT: strategically choose some different inputs and check the processes with them. Try defining a list of, say 4 ordered numbers, and pick an l that precedes everything on the list, one that succeeds everything, and another that goes somewhere in the middle.) b. Write a MATLAB program that randomly generates a set of inputs L and l. Code up the solution to the search problem using both naive search and divide and 4

conquer. Devise a block of code to test whether the output is correct, and output the number of iterations to the screen after termination. 2 Finding Zeros of Real-Valued Functions: The Bisection Method In this section, we return to the idea of numerical convergence that we touched on in Part I. Specifically, we will find the zero of a function by the bisection algorithm. The bisection algorithm accepts as inputs a real-valued, monotonic function f(x), and an ordered pair (a 0, b 0 ), such that a 0 < b 0, and f(x) = 0 for some x [a 0, b 0 ]. To simplify the discussion, we will assume for now that f is a decreasing function. The algorithm computes an approximate zero x (the output) by computing a sequence of successively closer guesses. Specifically, it begins with an initial guess of x 0 = (a 0 + b 0 )/2 and successively updates a, b, x by the following recursion: If f(x k ) > 0 then a k+1 = x k, b k+1 = b k, and x k+1 = (a k+1 + b k+1 )/2, and if f(x k ) < 0 a k+1 = a k, b k+1 = x k, and x k+1 = (a k+1 + b k+1 )/2, until a pre-defined stopping rule is satisfied. In order to complete the definition of the algorithm, we must specify a stopping rule. There are two main options in this case. For some tolerance level, τ > 0 we could terminate the recursion when f(x k+1 ) < τ, or alternatively, we could choose to terminate when b k+1 a k+1 < τ. One might ask which stopping rule is preferable, and the answer depends on the context of the problem. The former stopping rule is preferable when the primary concern is (I) computing an x with a functional value very close to zero, and the latter is preferred when the primary concern is (II) computing an x very close to the true zero. Since one can only approximate the true zero of the function on a computer, targeting one of these criteria does not 5

automatically ensure that the other will be satisfied too. It s also important to recognize that the quality of the approximation along either dimension will be affected by the input function f. For example, if f is very steep within a neighborhood of the zero, then a stopping rule of b k+1 a k+1 < τ may not deliver much precision in terms of criterion (I). Alternatively, if the slope and functional values of f are very close to zero on a non-trivial subset of the interval [a 0, b 0 ], then a stopping rule of f(x k+1 ) < τ may not deliver much precision along criterion (II). Thus, if both criteria are important, or if little is known about the behavior of the input function close to the zero, the programmer may wish to incorporate both stopping rules into the algorithm. Bisection provides a convenient way of illustrating factors that influence selection of a stopping rule, but these concepts apply to broader settings as well. Exercise 2 In this exercise you will code up a bisection algorithm in MATLAB, using the composite stopping rule f(x k+1 ) < τ && b k+1 a k+1 < τ. a. Code up a MATLAB script file to find the zeros of the following two functions by the bisection method: f(x) = (10 10 )x and g(x) = (10 10 )x. Note that f is DECREASING and g is INCREASING. Use the inline utility in MATLAB to define f and g. When the algorithm terminates, have your script output to the screen the number of iterations, the approximate zero, and the functional value of the approximate zero. b. Code up a function file to find the zero of an arbitrary function via the bisection method. The first line of your function file should be the following: function [xstar,f0,iter] = bisect0(func,var,direction,tol,a0,b0). In other words, the function name is bisect0 and the inputs are: func, a character string defining a function (as in the syntax for the inline utility); var, a string giving the name of the variable in func; direction, a string being either increasing or decreasing to indicate the type of monotonicity of func 6

(if something else is supplied, then the function should abort and return an error message; type help error on the MATLAB command line for more info); tol, a tolerance for the stopping rule; a0, an initial guess on the lower bound of the search region; and b0, an initial guess on the upper bound. The output arguments are xstar, the approximate zero; f0, the functional value at the approximate zero anditer, the number of iterations required for convergence. Coding this function should be mostly a matter of simply cutting and pasting from your script in part a. c. Finally, once part b is done, execute the command [xstar,f0,iter] = bisect0( sqrt(exp(1)*pi)+xˆ 3, x, increasing,tol,-10*c,10*c) several times in MATLAB and experiment with different tolerances (by choosing values for tol) and different initial guesses (by choosing different values for c > 1). Which one seems to have a greater effect on the number of iterations required to converge under bisection? Is it tolerance or initial guess? Come to class ready to talk about the results. 3 Derivative-Free Optimization: The Golden Search Method One major application of zero finding in economics is optimization, although bisection is rarely used. In Part I of these notes, we touched on Newton s method, which uses information on derivatives in order to locate the zero of, say a first-order condition. In part III we will cover Newton s method in greater detail but before moving on, we shall start with a simple optimization algorithm that is conceptually similar to bisection and does not require computation of derivatives: golden search. This method is useful in cases where there is a need to optimize a continuous univariate objective function with derivatives that are either ill-behaved or intractable. 1 1 Although multi-variate, derivative-free optimization is beyond the scope of this introductory course, the interested reader is directed to Miranda and Fackler (2002) for an introduction to the 7

Like bisection, golden search accepts as inputs a continuous function f and an ordered pair (α, α) defining the bounds on the initial search region. The first step is to evaluate the objective function at two interior points α < α. After comparing the functional values, the sub-optimal interior point is used to replace the nearest endpoint of the search region, and the process is repeated until the length of the search region collapses to a pre-specified tolerance, τ. The algorithm has some unique and attractive characteristics because the interior points are chosen as α = ϕα + (1 ϕ)α, and α = (1 ϕ)α + ϕα, where ϕ = ( 5 1)/2.62 is the inverse of the golden ratio, a number famously venerated by ancient Greek philosophers (hence, the name golden search ). By choosing the interior points in this way, each successive iteration carries over one interior point from the previous iteration, meaning that only one new objective function evaluation is required. This is one of the seemingly magical properties of the golden ratio: by choosing α and α as golden means of the endpoints, it turns out that α is a golden mean of α and α, and also α is a golden mean of α and α. Although derivative-free methods are typically not the first tool of choice in optimization, golden search does have some advantages. First, it requires only that the objective function be continuous, so it can handle some non-differentiable inputs. Second, golden search is guaranteed to converge to a local optimum. This, of course, is subject to the caveat that multiple re-starts (from different initial guesses on the search region) are required if the objective is not unimodal on [α, α]. Third, golden search terminates in a known number of iterations, since at each step the length of the search region contracts by a factor of exactly ϕ. This means that numerical convergence obtains in (log(τ) log(α α)) / log(ϕ) iterations. Exercise 3 Consider the following objective function: f(x) = x 2 + 2πx π 2. Nelder-Mead algorithm, also known as the simplex algorithm. 8

a. What is the maximizer of this function? b. How many iterations are required for golden search to converge with a tolerance of τ = 10 8 and an initial search region of [ 10, 10]? c. Code up a golden search algorithm in MATLAB to optimize f. Compare your numerical solution and computational cost with your answers to parts a and b. 4 References: Miranda, Mario J. and Paul L. Fackler. Applied Computational Economics and Finance. MIT Press, 2002. 9