--- title: "Newton's Method Can Fail" author: "Luke Tierney" output: html_document --- The function $$ f(x) = \frac{1}{2} \log(x^2+1) + x \arctan(x) $$ is convex with a minimum at $x = 0$: ```{r} f <- function(x) 1/2 * log(1 + x^2) + x * atan(x) x <- seq(-5, 5, len = 101) plot(x, f(x), type = "l") ``` The first derivative is $$ f'(x) = d_1(x) = \arctan(x) $$ ```{r} d1 <- atan plot(x, d1(x), type = "l") ``` The second derivative is $$ f''(x) = d_2(x) = \frac{1}{1 + x^2} $$ ```{r} d2 <- function(x) 1 / (1 + x^2) plot(x, d2(x), type = "l") ``` A single Newton step is taken by ```{r} ns <- function(x) x - d1(x) / d2(x) ``` A set of `n` steps is returned by ```{r} run <- function(x, step, n = 10) { v <- matrix(0, nrow = n, ncol = length(x)) for (i in seq_len(n)) { x <- step(x) v[i, ] <- x } v } ``` For a starting point close enough to zero convergence is very fast: ```{r} run(1.3, ns) ``` Start a little too far away: ```{r} run(1.4, ns) ``` This plot shows the range of convergence: ```{r} plot(x, ns(x), type = "l", xlim = c(-2, 2), ylim = c(-5, 5)) lines(x, -x, lty = 2) ```