Description Usage Arguments Value Examples
Find the root of a function using the secant method.
1 2 3 | unisecant(f, x0, x1, tol = 10 * .Machine$double.eps, maxit = 100L)
simple_unisecant(f, x0, x1, tol = 10 * .Machine$double.eps, maxit = 100L)
|
f |
function |
x0 |
initial value |
x1 |
second initial value |
tol |
tolerance, defaults to 10*.Machine$double.eps |
maxit |
maximum number of iterations |
a list
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | f <- function(x) x^2 - 2
x0 <- 0; x1 <- 1
unisecant(f, x0, x1)
simple_unisecant(f, x0, x1)
(out <- unisecant(f, x0, x1))
curve(f(x), col = "red", from = .9, to = 2.1)
with(out$evals, points(x, fx))
for(k in 2:out$n_evals) {
with(out$evals, abline(
a = fx[k-1] - (fx[k]-fx[k-1]) / (x[k]-x[k-1]) * x[k-1],
b = (fx[k]-fx[k-1]) / (x[k]-x[k-1]),
col = "blue"
))
Sys.sleep(.5)
}
f <- sin
x0 <- 2; x1 <- 1.9
(out <- unisecant(f, x0, x1))
curve(f(x), col = "red", from = 0, to = 2*pi)
with(out$evals, points(x, fx))
for(k in 2:out$n_evals) {
with(out$evals, abline(
a = fx[k-1] - (fx[k]-fx[k-1]) / (x[k]-x[k-1]) * x[k-1],
b = (fx[k]-fx[k-1]) / (x[k]-x[k-1]),
col = "blue"
))
Sys.sleep(.5)
}
f <- log
x0 <- .40; x1 <- .50
(out <- unisecant(f, x0, x1))
curve(f(x), col = "red", from = .25, to = 1.5)
with(out$evals, points(x, fx))
for(k in 2:out$n_evals) {
with(out$evals, abline(
a = fx[k-1] - (fx[k]-fx[k-1]) / (x[k]-x[k-1]) * x[k-1],
b = (fx[k]-fx[k-1]) / (x[k]-x[k-1]),
col = "blue"
))
Sys.sleep(.5)
}
f <- function(x) (x-.24) * (x - .51) * (x - .76)
x0 <- .40; x1 <- .45
(out <- unisecant(f, x0, x1))
curve(f(x), col = "red", from = .15, to = .85)
with(out$evals, points(x, fx))
for(k in 2:out$n_evals) {
with(out$evals, abline(
a = fx[k-1] - (fx[k]-fx[k-1]) / (x[k]-x[k-1]) * x[k-1],
b = (fx[k]-fx[k-1]) / (x[k]-x[k-1]),
col = "blue"
))
Sys.sleep(.5)
}
f <- function(x) pbeta(x, 6, 4) - .5
x0 <- .30; x1 <- .40
(out <- unisecant(f, x0, x1))
curve(f(x), col = "red", from = 0, to = 1)
with(out$evals, points(x, fx))
for(k in 2:out$n_evals) {
with(out$evals, abline(
a = fx[k-1] - (fx[k]-fx[k-1]) / (x[k]-x[k-1]) * x[k-1],
b = (fx[k]-fx[k-1]) / (x[k]-x[k-1]),
col = "blue"
))
Sys.sleep(.5)
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.