Utilities.h 1.1 KB

1234567891011121314151617181920212223242526
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <LinearAlgebra.h>
  10. namespace NumericalMethods::Optimization
  11. {
  12. class Function;
  13. //! Helper function for evaluating a function at a point.
  14. double FunctionValue(const Function& function, const VectorVariable& point);
  15. //! The 1-dimensional rate of change of a function with respect to changing the independent variables along the specified direction.
  16. //! Note that some textbooks / authors define the directional derivative with respect to a normalized direction,
  17. //! but that convention is not used here.
  18. double DirectionalDerivative(const Function& function, const VectorVariable& point, const VectorVariable& direction);
  19. //! Vector of derivatives with respect to each of the independent variables of a function, evaluated at the specified point.
  20. VectorVariable Gradient(const Function& function, const VectorVariable& point);
  21. } // namespace NumericalMethods::Optimization