Fix a few typos in the documentation.
Change-Id: I541db56b2b81ae758e233ce850d78c3cbb4b6fa3
diff --git a/docs/source/building.rst b/docs/source/building.rst
index 4860b0d..a34c1fc 100644
--- a/docs/source/building.rst
+++ b/docs/source/building.rst
@@ -500,7 +500,7 @@
#. ``OPENMP [Default: ON]``: On certain platforms like Android,
multi-threading with ``OpenMP`` is not supported. Turn this ``OFF``
- to disable multithreading.
+ to disable multi-threading.
#. ``BUILD_SHARED_LIBS [Default: OFF]``: By default Ceres is built as
a static library, turn this ``ON`` to instead build Ceres as a
@@ -623,7 +623,7 @@
If Ceres was installed in a non-standard path by specifying
-DCMAKE_INSTALL_PREFIX="/some/where/local", then the user should add
-the **PATHS** option to the ``FIND_PACKAGE()`` command. e.g.,
+the **PATHS** option to the ``FIND_PACKAGE()`` command, e.g.,
.. code-block:: cmake
diff --git a/docs/source/contributing.rst b/docs/source/contributing.rst
index b169dbf..fa36d2c 100644
--- a/docs/source/contributing.rst
+++ b/docs/source/contributing.rst
@@ -114,7 +114,7 @@
git push origin HEAD:refs/for/master
When the push succeeds, the console will display a URL showing the
- address of the review. Go to the URL and add atleast one of the
+ address of the review. Go to the URL and add at least one of the
maintainers (Sameer Agarwal, Keir Mierle, or Alex Stewart) as reviewers.
3. Wait for a review.
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 26b318a..0349eb9 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -35,7 +35,7 @@
* Solve `bundle adjustment`_ and SLAM problems in `Project Tango`_.
Outside Google, Ceres is used for solving problems in computer vision,
-computer graphics, astronomy and physics. e.g., `Willow Garage`_ uses
+computer graphics, astronomy and physics. For example, `Willow Garage`_ uses
it to solve SLAM problems and `Blender`_ uses it for for planar
tracking and bundle adjustment.
diff --git a/docs/source/modeling.rst b/docs/source/modeling.rst
index 4b333c4..b88d62e 100644
--- a/docs/source/modeling.rst
+++ b/docs/source/modeling.rst
@@ -758,8 +758,8 @@
.. math:: cost(x) = ||A(x - b)||^2
- where, the matrix A and the vector b are fixed and x is the
- variable. In case the user is interested in implementing a cost
+ where, the matrix :math:`A` and the vector :math:`b` are fixed and :math:`x`
+ is the variable. In case the user is interested in implementing a cost
function of the form
.. math:: cost(x) = (x - \mu)^T S^{-1} (x - \mu)
@@ -913,7 +913,7 @@
Given a loss function :math:`\rho(s)` and a scalar :math:`a`, :class:`ScaledLoss`
implements the function :math:`a \rho(s)`.
- Since we treat the a ``NULL`` Loss function as the Identity loss
+ Since we treat a ``NULL`` Loss function as the Identity loss
function, :math:`rho` = ``NULL``: is a valid input and will result
in the input being scaled by :math:`a`. This provides a simple way
of implementing a scaled ResidualBlock.
@@ -930,7 +930,7 @@
This templated class allows the user to implement a loss function
whose scale can be mutated after an optimization problem has been
- constructed. e.g,
+ constructed, e.g,
.. code-block:: c++
@@ -1141,7 +1141,7 @@
.. math:: x' = \boxplus(x, \Delta x),
For example, Quaternions have a three dimensional local
- parameterization. It's plus operation can be implemented as (taken
+ parameterization. Its plus operation can be implemented as (taken
from `internal/ceres/autodiff_local_parameterization_test.cc
<https://ceres-solver.googlesource.com/ceres-solver/+/master/internal/ceres/autodiff_local_parameterization_test.cc>`_
)
@@ -1178,7 +1178,7 @@
}
};
- Then given this struct, the auto differentiated local
+ Given this struct, the auto differentiated local
parameterization can now be constructed as
.. code-block:: c++
@@ -1619,7 +1619,7 @@
.. function:: void QuaternionRotatePoint<T>(const T q[4], const T pt[3], T result[3])
- With this function you do not need to assume that q has unit norm.
+ With this function you do not need to assume that :math:`q` has unit norm.
It does assume that the norm is non-zero.
.. function:: void QuaternionProduct<T>(const T z[4], const T w[4], T zw[4])
diff --git a/docs/source/solving.rst b/docs/source/solving.rst
index 91713e0..c80e88d 100644
--- a/docs/source/solving.rst
+++ b/docs/source/solving.rst
@@ -13,7 +13,7 @@
============
Effective use of Ceres requires some familiarity with the basic
-components of a nonlinear least squares solver, so before we describe
+components of a non-linear least squares solver, so before we describe
how to configure and use the solver, we will take a brief look at how
some of the core optimization algorithms in Ceres work.
@@ -21,7 +21,7 @@
variables, and
:math:`F(x) = \left[f_1(x), ... , f_{m}(x) \right]^{\top}` be a
:math:`m`-dimensional function of :math:`x`. We are interested in
-solving the following optimization problem [#f1]_ .
+solving the optimization problem [#f1]_
.. math:: \arg \min_x \frac{1}{2}\|F(x)\|^2\ . \\
L \le x \le U
@@ -120,8 +120,8 @@
:label: trp
There are a number of different ways of solving this problem, each
-giving rise to a different concrete trust-region algorithm. Currently
-Ceres, implements two trust-region algorithms - Levenberg-Marquardt
+giving rise to a different concrete trust-region algorithm. Currently,
+Ceres implements two trust-region algorithms - Levenberg-Marquardt
and Dogleg, each of which is augmented with a line search if bounds
constraints are present [Kanzow]_. The user can choose between them by
setting :member:`Solver::Options::trust_region_strategy_type`.
@@ -247,7 +247,7 @@
the point that minimizes the trust region problem in this subspace
[ByrdSchnabel]_.
-The key advantage of the Dogleg over Levenberg Marquardt is that if
+The key advantage of the Dogleg over Levenberg-Marquardt is that if
the step computation for a particular choice of :math:`\mu` does not
result in sufficient decrease in the value of the objective function,
Levenberg-Marquardt solves the linear approximation from scratch with
@@ -265,7 +265,7 @@
Some non-linear least squares problems have additional structure in
the way the parameter blocks interact that it is beneficial to modify
-the way the trust region step is computed. e.g., consider the
+the way the trust region step is computed. For example, consider the
following regression problem
.. math:: y = a_1 e^{b_1 x} + a_2 e^{b_3 x^2 + c_1}
@@ -521,7 +521,7 @@
.. math:: H = \left[ \begin{matrix} B & E\\ E^\top & C \end{matrix} \right]\ ,
:label: hblock
-where, :math:`B \in \mathbb{R}^{pc\times pc}` is a block sparse matrix
+where :math:`B \in \mathbb{R}^{pc\times pc}` is a block sparse matrix
with :math:`p` blocks of size :math:`c\times c` and :math:`C \in
\mathbb{R}^{qs\times qs}` is a block diagonal matrix with :math:`q` blocks
of size :math:`s\times s`. :math:`E \in \mathbb{R}^{pc\times qs}` is a
@@ -560,7 +560,7 @@
observe at least one common point.
-Now, eq-linear2 can be solved by first forming :math:`S`, solving for
+Now, :eq:`linear2` can be solved by first forming :math:`S`, solving for
:math:`\Delta y`, and then back-substituting :math:`\Delta y` to
obtain the value of :math:`\Delta z`. Thus, the solution of what was
an :math:`n\times n`, :math:`n=pc+qs` linear system is reduced to the
@@ -622,7 +622,7 @@
reduced camera matrix :math:`S` instead of :math:`H`. One reason to do
this is that :math:`S` is a much smaller matrix than :math:`H`, but
more importantly, it can be shown that :math:`\kappa(S)\leq
-\kappa(H)`. Cseres implements PCG on :math:`S` as the
+\kappa(H)`. Ceres implements PCG on :math:`S` as the
``ITERATIVE_SCHUR`` solver. When the user chooses ``ITERATIVE_SCHUR``
as the linear solver, Ceres automatically switches from the exact step
algorithm to an inexact step algorithm.
@@ -709,7 +709,7 @@
For bundle adjustment problems arising in reconstruction from
community photo collections, more effective preconditioners can be
constructed by analyzing and exploiting the camera-point visibility
-structure of the scene [KushalAgarwal]. Ceres implements the two
+structure of the scene [KushalAgarwal]_. Ceres implements the two
visibility based preconditioners described by Kushal & Agarwal as
``CLUSTER_JACOBI`` and ``CLUSTER_TRIDIAGONAL``. These are fairly new
preconditioners and Ceres' implementation of them is in its early
@@ -747,14 +747,14 @@
lowest numbered elimination group are eliminated first, and then the
parameter blocks in the next lowest numbered elimination group and so
on. Within each elimination group, Ceres is free to order the
-parameter blocks as it chooses. e.g. Consider the linear system
+parameter blocks as it chooses. For example, consider the linear system
.. math::
x + y &= 3\\
2x + 3y &= 7
There are two ways in which it can be solved. First eliminating
-:math:`x` from the two equations, solving for y and then back
+:math:`x` from the two equations, solving for :math:`y` and then back
substituting for :math:`x`, or first eliminating :math:`y`, solving
for :math:`x` and back substituting for :math:`y`. The user can
construct three orderings here.
@@ -1001,7 +1001,7 @@
During the bracketing phase of a Wolfe line search, the step size
is increased until either a point satisfying the Wolfe conditions
- is found, or an upper bound for a bracket containinqg a point
+ is found, or an upper bound for a bracket containing a point
satisfying the conditions is found. Precisely, at each iteration
of the expansion:
@@ -1094,7 +1094,7 @@
Default: ``1e6``
The ``LEVENBERG_MARQUARDT`` strategy, uses a diagonal matrix to
- regularize the the trust region step. This is the lower bound on
+ regularize the trust region step. This is the lower bound on
the values of this diagonal matrix.
.. member:: double Solver::Options::max_lm_diagonal
@@ -1102,7 +1102,7 @@
Default: ``1e32``
The ``LEVENBERG_MARQUARDT`` strategy, uses a diagonal matrix to
- regularize the the trust region step. This is the upper bound on
+ regularize the trust region step. This is the upper bound on
the values of this diagonal matrix.
.. member:: int Solver::Options::max_num_consecutive_invalid_steps
@@ -1347,7 +1347,7 @@
on each Newton/Trust region step using a coordinate descent
algorithm. For more details, see :ref:`section-inner-iterations`.
-.. member:: double Solver::Options::inner_itearation_tolerance
+.. member:: double Solver::Options::inner_iteration_tolerance
Default: ``1e-3``
@@ -1410,7 +1410,7 @@
#. ``|gradient|`` is the max norm of the gradient.
#. ``|step|`` is the change in the parameter vector.
#. ``tr_ratio`` is the ratio of the actual change in the objective
- function value to the change in the the value of the trust
+ function value to the change in the value of the trust
region model.
#. ``tr_radius`` is the size of the trust region radius.
#. ``ls_iter`` is the number of linear solver iterations used to
@@ -1419,7 +1419,7 @@
``ITERATIVE_SCHUR`` it is the number of iterations of the
Conjugate Gradients algorithm.
#. ``iter_time`` is the time take by the current iteration.
- #. ``total_time`` is the the total time taken by the minimizer.
+ #. ``total_time`` is the total time taken by the minimizer.
For ``LINE_SEARCH_MINIMIZER`` the progress display looks like
@@ -1438,7 +1438,7 @@
#. ``h`` is the change in the parameter vector.
#. ``s`` is the optimal step length computed by the line search.
#. ``it`` is the time take by the current iteration.
- #. ``tt`` is the the total time taken by the minimizer.
+ #. ``tt`` is the total time taken by the minimizer.
.. member:: vector<int> Solver::Options::trust_region_minimizer_iterations_to_dump
@@ -1530,7 +1530,7 @@
Callbacks that are executed at the end of each iteration of the
:class:`Minimizer`. They are executed in the order that they are
specified in this vector. By default, parameter blocks are updated
- only at the end of the optimization, i.e when the
+ only at the end of the optimization, i.e., when the
:class:`Minimizer` terminates. This behavior is controlled by
:member:`Solver::Options::update_state_every_variable`. If the user
wishes to have access to the update parameter blocks when his/her
@@ -1840,7 +1840,7 @@
``values[rows[i]]`` ... ``values[rows[i + 1] - 1]`` are the values
of the non-zero columns of row ``i``.
-e.g, consider the 3x4 sparse matrix
+e.g., consider the 3x4 sparse matrix
.. code-block:: c++
@@ -2078,7 +2078,7 @@
`True` if the user asked for inner iterations to be used as part of
the optimization and the problem structure was such that they were
- actually performed. e.g., in a problem with just one parameter
+ actually performed. For example, in a problem with just one parameter
block, inner iterations are not performed.
.. member:: vector<int> inner_iteration_ordering_given
diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst
index 79714f6..2d8da68 100644
--- a/docs/source/tutorial.rst
+++ b/docs/source/tutorial.rst
@@ -527,7 +527,7 @@
Starting from parameter values :math:`m = 0, c=0` with an initial
objective function value of :math:`121.173` Ceres finds a solution
:math:`m= 0.291861, c = 0.131439` with an objective function value of
-:math:`1.05675`. These values are a a bit different than the
+:math:`1.05675`. These values are a bit different than the
parameters of the original model :math:`m=0.3, c= 0.1`, but this is
expected. When reconstructing a curve from noisy data, we expect to
see such deviations. Indeed, if you were to evaluate the objective
@@ -562,9 +562,9 @@
:align: center
To deal with outliers, a standard technique is to use a
-:class:`LossFunction`. Loss functions, reduce the influence of
+:class:`LossFunction`. Loss functions reduce the influence of
residual blocks with high residuals, usually the ones corresponding to
-outliers. To associate a loss function in a residual block, we change
+outliers. To associate a loss function with a residual block, we change
.. code-block:: c++