Repository: scipy/scipy

Issue:
DOC: Method "bisect" for root_scalar lacks correct argument list
### Describe your issue.

In the [documentation](https://docs.scipy.org/doc/scipy/reference/optimize.root_scalar-bisect.html#optimize-root-scalar-bisect) for `root_scalar` with `method='bisect'`, there is no mention of having to use the `bracket` argument. This is also the case for other methods, such as `brentq`, which take a `bracket` argument not shown by the documentation sub-page. 

### Reproducing Code Example

```python
NA
```


### Error message

```shell
NA
```


### SciPy/NumPy/Python version information

SciPy 1.9.0


Discussion:
Hi @asberk thank you for reporting. Indeed it's missing. Would you like to make a PR to improve the doc?

Resolving patch:
diff --git a/scipy/optimize/_root_scalar.py b/scipy/optimize/_root_scalar.py
--- a/scipy/optimize/_root_scalar.py
+++ b/scipy/optimize/_root_scalar.py
@@ -138,6 +138,27 @@ def root_scalar(f, args=(), method=None, bracket=None,
     select one of the derivative-based methods.
     If no method is judged applicable, it will raise an Exception.
 
+    Arguments for each method are as follows (x=required, o=optional).
+
+    +-----------------------------------------------+---+------+---------+----+----+--------+---------+------+------+---------+---------+
+    |                    method                     | f | args | bracket | x0 | x1 | fprime | fprime2 | xtol | rtol | maxiter | options |
+    +===============================================+===+======+=========+====+====+========+=========+======+======+=========+=========+
+    | :ref:`bisect <optimize.root_scalar-bisect>`   | x |  o   |    x    |    |    |        |         |  o   |  o   |    o    |   o     |
+    +-----------------------------------------------+---+------+---------+----+----+--------+---------+------+------+---------+---------+
+    | :ref:`brentq <optimize.root_scalar-brentq>`   | x |  o   |    x    |    |    |        |         |  o   |  o   |    o    |   o     |
+    +-----------------------------------------------+---+------+---------+----+----+--------+---------+------+------+---------+---------+
+    | :ref:`brenth <optimize.root_scalar-brenth>`   | x |  o   |    x    |    |    |        |         |  o   |  o   |    o    |   o     |
+    +-----------------------------------------------+---+------+---------+----+----+--------+---------+------+------+---------+---------+
+    | :ref:`ridder <optimize.root_scalar-ridder>`   | x |  o   |    x    |    |    |        |         |  o   |  o   |    o    |   o     |
+    +-----------------------------------------------+---+------+---------+----+----+--------+---------+------+------+---------+---------+
+    | :ref:`toms748 <optimize.root_scalar-toms748>` | x |  o   |    x    |    |    |        |         |  o   |  o   |    o    |   o     |
+    +-----------------------------------------------+---+------+---------+----+----+--------+---------+------+------+---------+---------+
+    | :ref:`newton <optimize.root_scalar-newton>`   | x |  o   |         | x  |    |   x    |         |  o   |  o   |    o    |   o     |
+    +-----------------------------------------------+---+------+---------+----+----+--------+---------+------+------+---------+---------+
+    | :ref:`secant <optimize.root_scalar-secant>`   | x |  o   |         | x  | x  |        |         |  o   |  o   |    o    |   o     |
+    +-----------------------------------------------+---+------+---------+----+----+--------+---------+------+------+---------+---------+
+    | :ref:`halley <optimize.root_scalar-halley>`   | x |  o   |         | x  |    |   x    |    x    |  o   |  o   |    o    |   o     |
+    +-----------------------------------------------+---+------+---------+----+----+--------+---------+------+------+---------+---------+
 
     Examples
     --------
@@ -157,7 +178,8 @@ def root_scalar(f, args=(), method=None, bracket=None,
     >>> sol.root, sol.iterations, sol.function_calls
     (1.0, 10, 11)
 
-    The `newton` method takes as input a single point and uses the derivative(s)
+    The `newton` method takes as input a single point and uses the
+    derivative(s).
 
     >>> sol = optimize.root_scalar(f, x0=0.2, fprime=fprime, method='newton')
     >>> sol.root, sol.iterations, sol.function_calls
@@ -168,11 +190,15 @@ def root_scalar(f, args=(), method=None, bracket=None,
     >>> def f_p_pp(x):
     ...     return (x**3 - 1), 3*x**2, 6*x
 
-    >>> sol = optimize.root_scalar(f_p_pp, x0=0.2, fprime=True, method='newton')
+    >>> sol = optimize.root_scalar(
+    ...     f_p_pp, x0=0.2, fprime=True, method='newton'
+    ... )
     >>> sol.root, sol.iterations, sol.function_calls
     (1.0, 11, 11)
 
-    >>> sol = optimize.root_scalar(f_p_pp, x0=0.2, fprime=True, fprime2=True, method='halley')
+    >>> sol = optimize.root_scalar(
+    ...     f_p_pp, x0=0.2, fprime=True, fprime2=True, method='halley'
+    ... )
     >>> sol.root, sol.iterations, sol.function_calls
     (1.0, 7, 8)
 
@@ -293,6 +319,9 @@ def _root_scalar_brentq_doc():
     -------
     args : tuple, optional
         Extra arguments passed to the objective function.
+    bracket: A sequence of 2 floats, optional
+        An interval bracketing a root.  `f(x, *args)` must have different
+        signs at the two endpoints.
     xtol : float, optional
         Tolerance (absolute) for termination.
     rtol : float, optional
@@ -312,6 +341,9 @@ def _root_scalar_brenth_doc():
     -------
     args : tuple, optional
         Extra arguments passed to the objective function.
+    bracket: A sequence of 2 floats, optional
+        An interval bracketing a root.  `f(x, *args)` must have different
+        signs at the two endpoints.
     xtol : float, optional
         Tolerance (absolute) for termination.
     rtol : float, optional
@@ -330,6 +362,9 @@ def _root_scalar_toms748_doc():
     -------
     args : tuple, optional
         Extra arguments passed to the objective function.
+    bracket: A sequence of 2 floats, optional
+        An interval bracketing a root.  `f(x, *args)` must have different
+        signs at the two endpoints.
     xtol : float, optional
         Tolerance (absolute) for termination.
     rtol : float, optional
@@ -429,6 +464,9 @@ def _root_scalar_ridder_doc():
     -------
     args : tuple, optional
         Extra arguments passed to the objective function.
+    bracket: A sequence of 2 floats, optional
+        An interval bracketing a root.  `f(x, *args)` must have different
+        signs at the two endpoints.
     xtol : float, optional
         Tolerance (absolute) for termination.
     rtol : float, optional
@@ -448,6 +486,9 @@ def _root_scalar_bisect_doc():
     -------
     args : tuple, optional
         Extra arguments passed to the objective function.
+    bracket: A sequence of 2 floats, optional
+        An interval bracketing a root.  `f(x, *args)` must have different
+        signs at the two endpoints.
     xtol : float, optional
         Tolerance (absolute) for termination.
     rtol : float, optional


Test patch: