Maxima Function
find_root (expr, x, a, b)
find_root(f,a,b)
find_root_errorfind_root_absfind_root_relFinds a root of the expression expr or the function f
over the closed interval [a, b].
The expression expr may be an equation,
in which case find_root seeks a root of lhs(expr) - rhs(expr).
Given that Maxima can evaluate expr or f over [a, b]
and that expr or f is continuous,
find_root is guaranteed to find the root,
or one of the roots if there is more than one.
find_root initially applies binary search.
If the function in question appears to be smooth enough,
find_root applies linear interpolation instead.
The accuracy of find_root is governed by find_root_abs and find_root_rel.
find_root stops when the function in question
evaluates to something less than or equal to find_root_abs,
or if successive approximants x_0, x_1 differ by no more than
find_root_rel * max(abs(x_0), abs(x_1)).
The default values of find_root_abs and find_root_rel are both zero.
find_root expects the function in question to have a different sign at the endpoints
of the search interval.
If this condition is not met,
the behavior of find_root is governed by find_root_error.
When find_root_error is true,
find_root prints an error message.
Otherwise find_root returns the value of find_root_error.
The default value of find_root_error is true.
If f evaluates to something other than a number at any step in the search algorithm,
find_root returns a partially-evaluated find_root expression.
The order of a and b is ignored; the region in which a root is sought is [min(a, b), max(a, b)].
Examples:
(%i1) f(x) := sin(x) - x/2; x (%o1) f(x) := sin(x) - - 2 (%i2) find_root (sin(x) - x/2, x, 0.1, %pi); (%o2) 1.895494267033981 (%i3) find_root (sin(x) = x/2, x, 0.1, %pi); (%o3) 1.895494267033981 (%i4) find_root (f(x), x, 0.1, %pi); (%o4) 1.895494267033981 (%i5) find_root (f, 0.1, %pi); (%o5) 1.895494267033981 (%i6) find_root (exp(x) = y, x, 0, 100); x (%o6) find_root(%e = y, x, 0.0, 100.0) (%i7) find_root (exp(x) = y, x, 0, 100), y = 10; (%o7) 2.302585092994046 (%i8) log (10.0); (%o8) 2.302585092994046