diff options
Diffstat (limited to 'examples/quadratic.cc')
-rw-r--r-- | examples/quadratic.cc | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/examples/quadratic.cc b/examples/quadratic.cc deleted file mode 100644 index 8527af3..0000000 --- a/examples/quadratic.cc +++ /dev/null @@ -1,90 +0,0 @@ -// Ceres Solver - A fast non-linear least squares minimizer -// Copyright 2010, 2011, 2012 Google Inc. All rights reserved. -// http://code.google.com/p/ceres-solver/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// * Neither the name of Google Inc. nor the names of its contributors may be -// used to endorse or promote products derived from this software without -// specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -// Author: keir@google.com (Keir Mierle) -// -// A simple example of using the Ceres minimizer. -// -// Minimize 0.5 (10 - x)^2 using analytic jacobian matrix. - -#include <vector> -#include "ceres/ceres.h" -#include "gflags/gflags.h" -#include "glog/logging.h" - -using ceres::SizedCostFunction; -using ceres::Problem; -using ceres::Solver; -using ceres::Solve; - -class SimpleCostFunction - : public SizedCostFunction<1 /* number of residuals */, - 1 /* size of first parameter */> { - public: - virtual ~SimpleCostFunction() {} - virtual bool Evaluate(double const* const* parameters, - double* residuals, - double** jacobians) const { - double x = parameters[0][0]; - - // f(x) = 10 - x. - residuals[0] = 10 - x; - - // f'(x) = -1. Since there's only 1 parameter and that parameter - // has 1 dimension, there is only 1 element to fill in the - // jacobians. - if (jacobians != NULL && jacobians[0] != NULL) { - jacobians[0][0] = -1; - } - return true; - } -}; - -int main(int argc, char** argv) { - google::ParseCommandLineFlags(&argc, &argv, true); - google::InitGoogleLogging(argv[0]); - - // The variable with its initial value that we will be solving for. - double x = 5.0; - - // Build the problem. - Problem problem; - // Set up the only cost function (also known as residual). - problem.AddResidualBlock(new SimpleCostFunction, NULL, &x); - - // Run the solver! - Solver::Options options; - options.max_num_iterations = 10; - options.linear_solver_type = ceres::DENSE_QR; - options.minimizer_progress_to_stdout = true; - Solver::Summary summary; - Solve(options, &problem, &summary); - std::cout << summary.BriefReport() << "\n"; - std::cout << "x : 5.0 -> " << x << "\n"; - return 0; -} |