### The Maxima on-line user's manual

Algebra Calculator

#### Find_root

Function: find_root (<expr>, <x>, <a>, <b>)

Function: find_root (<f>, <a>, <b>) -- Option variable: find_root_error -- Option variable: find_root_abs -- Option variable: find_root_rel Finds 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. When the function evaluates to a number at both endpoints and these numbers have the same sign, 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```

There are also some inexact matches for `find_root`. Try `?? find_root` to see them.

```(%o1)                                true
(%i2) ```

### Related Examples

##### find_root-plot2d-sin

plot2d([x,1*sin(x*%pi...

find_root(x=1*sin(x*%...

Calculate

##### find_root

find_root(6.5*x+4.5*x...

Calculate

##### find_root-floor-plot2d-sin

f(x):=sin(x);

g(x):=x-1.1;

plot2d([f(x),g(x)],[x...

Calculate

##### find_root-plot2d

f1(x):=((x^3)/96)-((x...

f2(x):=f1(x)-(9/5);

find_root(f2(x),0,8);

Calculate

##### find_root-plot2d-sinh

plot2d(sinh(x)-x^2-x,...

find_root(sinh(x)-x^2...

Calculate

##### find_root-ratsimp

F(x) := ''( ratsimp((...

find_root(F(x)-18, x,...

F(0);

Calculate

##### find_root-solve

f:5*x^2-3*x-2;

solve(f,x);

find_root(f,x,0,1);

Calculate

##### find_root-floor-makelist-plot2d-transpose

"*"/* Ein Unternehmen...

"*"/* Lösung (n sind ...

ZPU:15+0.5*n /* linea...

Calculate

##### find_root-sin

find_root(sin(x)/x-0....

Calculate

##### find_root-float-sqrt

star(n):=sqrt(2*%pi*n...

float(star(20));

birth(n,p):=1-star(p)...

Calculate