numerical-collection-cpp
0.10.0
A collection of algorithms in numerical analysis implemented in C++
Loading...
Searching...
No Matches
vibrated_quadratic_function.h
Go to the documentation of this file.
1
/*
2
* Copyright 2021 MusicScience37 (Kenta Kabashima)
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
20
#pragma once
21
22
#include <cmath>
23
24
namespace
num_prob_collect::opt
{
25
29
class
vibrated_quadratic_function
{
30
public
:
32
using
variable_type
= double;
34
using
value_type
= double;
36
using
hessian_type
= double;
37
43
void
evaluate_on
(
double
variable) {
44
value_
=
coeff_
* variable * variable - std::cos(variable);
45
constexpr
double
two = 2.0;
46
grad_
= two *
coeff_
* variable + std::sin(variable);
47
hessian_
= two *
coeff_
+ std::cos(variable);
48
}
49
55
[[nodiscard]]
auto
value
() const -> const
double
& {
return
value_
; }
56
62
[[nodiscard]]
auto
gradient
() const -> const
double
& {
return
grad_
; }
63
69
[[nodiscard]]
auto
hessian
() const -> const
double
& {
return
hessian_
; }
70
71
private
:
73
double
coeff_
{0.25};
// NOLINT
74
76
double
value_
{0.0};
77
79
double
grad_
{};
80
82
double
hessian_
{};
83
};
84
85
}
// namespace num_prob_collect::opt
num_prob_collect::opt::vibrated_quadratic_function
Quadratic function with vibration for test of optimization.
Definition
vibrated_quadratic_function.h:29
num_prob_collect::opt::vibrated_quadratic_function::hessian_
double hessian_
Hessian.
Definition
vibrated_quadratic_function.h:82
num_prob_collect::opt::vibrated_quadratic_function::hessian
auto hessian() const -> const double &
Get Hessian.
Definition
vibrated_quadratic_function.h:69
num_prob_collect::opt::vibrated_quadratic_function::evaluate_on
void evaluate_on(double variable)
Evaluate function value on variable.
Definition
vibrated_quadratic_function.h:43
num_prob_collect::opt::vibrated_quadratic_function::value
auto value() const -> const double &
Get function value.
Definition
vibrated_quadratic_function.h:55
num_prob_collect::opt::vibrated_quadratic_function::variable_type
double variable_type
Type of variables.
Definition
vibrated_quadratic_function.h:32
num_prob_collect::opt::vibrated_quadratic_function::value_type
double value_type
Type of function values.
Definition
vibrated_quadratic_function.h:34
num_prob_collect::opt::vibrated_quadratic_function::gradient
auto gradient() const -> const double &
Get gradient.
Definition
vibrated_quadratic_function.h:62
num_prob_collect::opt::vibrated_quadratic_function::value_
double value_
Function value.
Definition
vibrated_quadratic_function.h:76
num_prob_collect::opt::vibrated_quadratic_function::coeff_
double coeff_
Coefficient.
Definition
vibrated_quadratic_function.h:73
num_prob_collect::opt::vibrated_quadratic_function::grad_
double grad_
Gradient.
Definition
vibrated_quadratic_function.h:79
num_prob_collect::opt::vibrated_quadratic_function::hessian_type
double hessian_type
Type of Hessian.
Definition
vibrated_quadratic_function.h:36
num_prob_collect::opt
Namespace of optimization problems.
Definition
namespaces.h:25
problems
include
num_prob_collect
opt
vibrated_quadratic_function.h
Generated on Sat Jan 18 2025 03:47:34 for numerical-collection-cpp by
1.12.0