findZeros | R Documentation |
Compute numerically zeros of a function or simultaneous zeros of multiple functions.
findZeros(
expr,
...,
xlim = c(near - within, near + within),
near = 0,
within = Inf,
nearest = 10,
npts = 1000,
iterate = 1,
sortBy = c("byx", "byy", "radial")
)
## S3 method for class 'formula'
solve(
form,
...,
near = 0,
within = Inf,
nearest = 10,
npts = 1000,
iterate = 1,
sortBy = c("byx", "byy", "radial")
)
expr |
A formula. The right side names the variable with respect to which the zeros should be found.
The left side is an expression, e.g. |
... |
Formulas corresponding to additional functions to use in simultaneous zero finding and/or specific numerical values for the free variables in the expression. |
xlim |
The range of the dependent variable to search for zeros. |
near |
a value near which zeros are desired |
within |
only look for zeros at least this close to near. |
nearest |
the number of nearest zeros to return. Fewer are returned if fewer are found. |
npts |
How many sub-intervals to divide the |
iterate |
maximum number of times to iterate the search. Subsequent searches take place with the range
of previously found zeros. Choosing a large number here is likely to kill performance without
improving results, but a value of 1 (the default) or 2 works well when searching in |
sortBy |
specifies how the zeros found will be sorted. Options are 'byx', 'byy', or 'radial'. |
form |
Expression to be solved |
Searches numerically using uniroot
.
Uses findZerosMult of findZeros to solve the given expression
A dataframe of zero or more numerical values. Plugging these into the expression on the left side of the formula should result in values near zero.
a dataframe with solutions to the expression.
Daniel Kaplan (kaplan@macalester.edu)
Cecylia Bocovich
findZeros( sin(t) ~ t, xlim=c(-10,10) )
# Can use tlim or t.lim instead of xlim if we prefer
findZeros( sin(t) ~ t, tlim=c(-10,10) )
findZeros( sin(theta) ~ theta, near=0, nearest=20)
findZeros( A*sin(2*pi*t/P) ~ t, xlim=c(0,100), P=50, A=2)
# Interval of a normal at half its maximum height.
findZeros( dnorm(x,mean=0,sd=10) - 0.5*dnorm(0,mean=0,sd=10) ~ x )
# A pathological example
# There are no "neareset" zeros for this function. Each iteration finds new zeros.
f <- function(x) { if (x==0) 0 else sin(1/x) }
findZeros( f(x) ~ x, near=0 )
# Better to look nearer to 0
findZeros( f(x) ~ x, near=0, within=100 )
findZeros( f(x) ~ x, near=0, within=100, iterate=0 )
findZeros( f(x) ~ x, near=0, within=100, iterate=3 )
# Zeros in multiple dimensions (not run: these take a long time)
# findZeros(x^2+y^2+z^2-5~x&y&z, nearest=3000, within = 5)
# findZeros(x*y+z^2~z&y&z, z+y~x&y&z, npts=10)
solve(3*x==3~x)
# plot out sphere (not run)
# sphere = solve(x^2+y^2+z^2==5~x&y&z, within=5, nearest=1000)
# cloud(z~x+y, data=sphere)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.