84 auto z = [](
auto x,
auto y)
86 return x * x * y + 3.0 * x * std::pow(y, 4);
91 return std::sin(2 * t);
120 auto dz_dt_chain_rule = [&](
auto t)
122 auto dx_dt = cna::seven_point_stencil<1>(x, t);
123 auto dy_dt = cna::seven_point_stencil<1>(y, t);
131 return dz_dx * dx_dt + dz_dy * dy_dt;
134 auto n_dz_dt_chain_rule = dz_dt_chain_rule(0.0);
137 auto dz_dt_definition = [&](
auto t)
139 auto z_of_t = [&](
auto tt)
141 return z(x(tt), y(tt));
144 return cna::five_point_stencil<1>(z_of_t, t);
147 auto n_dz_dt_definition = dz_dt_definition(0.0);
163 auto z =[](
auto x,
auto y)
165 return std::exp(x) * std::sin(y);
168 auto x = [](
auto s,
auto t)
173 auto y = [](
auto s,
auto t)
182 auto dz_ds = [&](
auto s,
auto t)
184 return std::exp(x(s, t))*std::sin(y(s, t))*t*t +
185 2 * std::exp(x(s, t))*std::cos(y(s, t))*s*t;
188 auto dz_dt = [&](
auto s,
auto t)
190 return 2 * std::exp(x(s, t))*std::sin(y(s, t))*s*t +
191 std::exp(x(s, t))*std::cos(y(s, t))*s*s;
194 auto algebraic = std::array{ dz_ds(1.0, 1.0), dz_dt(1.0, 1.0) };
void test_parameterized_derivatives()
void test_parametric_derivatives()
auto parametric_derivative(cpt::type_container< CmdTypes... > cmd, FuncType &&f, std::tuple< VariableTypes... > const &vars, ParamTypes... ps)
constexpr auto create_command(SeqType, SeqTypes...) noexcept
auto partial_derivative(cpt::sequence< VarIndex, Order >, FuncType &&func, ArgTypes... args) noexcept
auto directional_derivative(FuncType &&f, std::tuple< VariableTypes... > const &vars, ParamType param)