Nothing
# Copyright (c) Rob Carnell 2026
# Brown almost linear function
brown <- function(x) {
n <- length(x)
y <- numeric(n)
y[1:(n - 1)] <- x[1:(n - 1)] + sum(x) - (n + 1)
y[n] <- prod(x) - 1
y
}
# Analytic Jacobian
brownjac <- function(x) {
n <- length(x)
J <- matrix(1, nrow = n, ncol = n)
diag(J) <- 2
xprod <- prod(x)
J[n, ] <- xprod / x
J
}
test_that("Brown almost linear system converges for n = 50 and n = 100", {
for (n in c(50, 100)) {
xstart <- rep(0.5, n)
z <- nleqslv(
xstart,
brown,
jac = brownjac,
method = "Newton",
control = list(
trace = 0,
ftol = 1e-10,
delta = "cauchy",
allowSingular = TRUE
)
)
# Original output always showed:
# "Function criterion near zero"
# TRUE
#
# So we assert the same condition:
expect_true(all(abs(z$fvec) <= 1e-8))
# And ensure solver did not fail catastrophically
expect_equal(z$termcd, 1)
}
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.