4#include "../framework/module.h"
5#include "../framework/state_map.h"
6#include "../math/roots/multidim/broyden.h"
15 std::array<double, 2> y;
16 y[0] = x[0] / (x[0] * x[0] + 1) - x[1] + 0.5;
17 y[1] = 2 - x[0] - x[1];
25 state_map
const& input_quantities, state_map* output_quantities)
29 max_iterations{get_input(input_quantities,
"max_iterations")},
30 abs_tol{get_input(input_quantities,
"abs_tol")},
31 rel_tol{get_input(input_quantities,
"rel_tol")},
32 guess_1{get_input(input_quantities,
"guess_1")},
33 guess_2{get_input(input_quantities,
"guess_2")},
34 x1{get_op(output_quantities,
"x1")},
35 x2{get_op(output_quantities,
"x2")},
36 y1{get_op(output_quantities,
"y1")},
37 y2{get_op(output_quantities,
"y2")},
38 iter{get_op(output_quantities,
"iter")}
46 static std::string
get_name() {
return "broyden_test"; }
50 const double& max_iterations;
51 const double& abs_tol;
52 const double& rel_tol;
53 const double& guess_1;
54 const double& guess_2;
64 void do_operation()
const;
87void broyden_test::do_operation()
const
89 using namespace root_multidim;
90 broyden<2> solve(
static_cast<size_t>(max_iterations), abs_tol, rel_tol);
91 std::array<double, 2> guess = {guess_1, guess_2};
94 update(x1, res.zero[0]);
95 update(x2, res.zero[1]);
97 update(y1, res.residual[0]);
98 update(y2, res.residual[1]);
100 update(iter, res.iteration);
static string_vector get_outputs()
broyden_test(state_map const &input_quantities, state_map *output_quantities)
static string_vector get_inputs()
static std::string get_name()
This is the standard BioCro module library; it includes the essential modules used in typical BioCro ...
std::array< double, 2 > test_function(const std::array< double, 2 > &x)