27 if (
dim == 2)
return {
"x",
"y"};
28 return {
"x",
"y",
"z"};
32 const std::shared_ptr<SymbolicExpr>& integrand,
33 const std::string& var,
34 const std::shared_ptr<SymbolicExpr>&
a,
35 const std::shared_ptr<SymbolicExpr>&
b,
40 auto integrated =
integrator.integrate_def_checked(
45 SymbolicExpr result = std::move(integrated.value());
48 return std::shared_ptr<SymbolicExpr>{};
54 return std::shared_ptr<SymbolicExpr>{};
56 return simplified ? simplified : res;
60 const std::shared_ptr<SymbolicExpr>& integrand,
61 const std::string& var,
62 const std::shared_ptr<SymbolicExpr>&
a,
63 const std::shared_ptr<SymbolicExpr>&
b,
71 return std::shared_ptr<SymbolicExpr>{};
75 double h = (b_val - a_val) / n;
76 if (!std::isfinite(h))
return std::shared_ptr<SymbolicExpr>{};
79 for (
int i = 0; i <= n; ++i) {
81 context.consume_steps(1,
"vector_calculus.numeric_integral");
85 double xi = a_val + i * h;
86 if (!std::isfinite(xi))
return std::shared_ptr<SymbolicExpr>{};
87 auto xi_expr = SymbolicExpr::number(xi);
91 return std::shared_ptr<SymbolicExpr>{};
95 if (i == 0 || i == n) {
97 }
else if (i % 2 == 1) {
102 sum += weight * fi_val;
103 if (!std::isfinite(sum))
return std::shared_ptr<SymbolicExpr>{};
106 if (!std::isfinite(sum))
return std::shared_ptr<SymbolicExpr>{};
108 return SymbolicExpr::number(sum);
111std::shared_ptr<SymbolicExpr>
113 const std::shared_ptr<SymbolicExpr>& integrand,
114 const std::string& var,
115 const std::shared_ptr<SymbolicExpr>&
a,
116 const std::shared_ptr<SymbolicExpr>&
b,
121 if (symbolic_result && symbolic_result.value()) {
122 return std::move(symbolic_result.value());
124 if (!symbolic_result)
throw symbolic_result.error();
126 if (!numerical_result)
throw numerical_result.error();
127 return std::move(numerical_result.value());
131 const std::string& operation,
132 const std::string& message)
139 const std::shared_ptr<SymbolicExpr>& expr,
140 const std::string& operation,
141 const std::string& message,
155 const std::shared_ptr<SymbolicExpr>& expr,
156 const std::string& var,
157 const std::string& operation,
162 operation,
"expression derivative is outside the supported domain");
167 "expression derivative is outside the supported domain", transform_budget);
173 operation,
"expression derivative is outside the supported domain");
178 const std::shared_ptr<SymbolicExpr>& expr,
179 const std::vector<std::string>& coord_vars,
181 const std::string& operation,
186 operation,
"coordinate substitution is outside the supported domain");
188 auto substituted = expr;
189 for (
size_t i = 0; i < coord_vars.size(); ++i) {
192 operation,
"coordinate substitution is outside the supported domain");
197 operation,
"coordinate substitution is outside the supported domain");
201 "coordinate substitution is outside the supported domain", transform_budget);
205 const std::shared_ptr<SymbolicExpr>& integrand,
206 const std::string& var,
207 const std::shared_ptr<SymbolicExpr>&
a,
208 const std::shared_ptr<SymbolicExpr>&
b,
210 const std::string& operation,
214 if (!result)
return result;
218 "integral could not be evaluated exactly in the supported domain");
224 const std::shared_ptr<SymbolicExpr>& integrand,
225 const std::vector<IntegrationStep>&
steps,
227 const std::string& operation,
232 operation,
"integrand construction is outside the supported domain");
239 "integral result simplification is outside the supported domain", transform_budget);
244 const std::string&
u,
245 const std::string&
v,
246 const std::string& operation,
253 for (
size_t i = 0; i < 3; ++i) {
258 r_u.push_back(std::move(du.value()));
259 r_v.push_back(std::move(dv.value()));
264 for (std::size_t index = 0; index < 3; ++index) {
268 "surface normal construction is outside the supported domain", transform_budget);
272 cross.push_back(std::move(checked.value()));
280 const std::string&
t,
const std::shared_ptr<SymbolicExpr>&
a,
281 const std::shared_ptr<SymbolicExpr>&
b,
283 const std::string& operation,
292 std::shared_ptr<SymbolicExpr> speed_sq;
298 auto sq = SymbolicExpr::power(derivative.value(), SymbolicExpr::number(2));
303 speed_sq = speed_sq ? SymbolicExpr::add(speed_sq, sq_checked.value())
304 : sq_checked.value();
305 auto speed_sq_checked =
vector_calculus_simplify_strict(speed_sq, operation,
"curve speed construction is outside the supported domain", transform_budget);
306 if (!speed_sq_checked) {
307 return speed_sq_checked;
309 speed_sq = std::move(speed_sq_checked.value());
312 auto speed = SymbolicExpr::sqrt(speed_sq);
314 if (!speed_checked) {
315 return speed_checked;
318 auto integrand = SymbolicExpr::multiply(f_composed.value(), speed_checked.value());
319 auto integrand_checked =
vector_calculus_simplify_strict(integrand, operation,
"curve integrand construction is outside the supported domain", transform_budget);
320 if (!integrand_checked) {
321 return integrand_checked;
330 const std::string&
t,
const std::shared_ptr<SymbolicExpr>&
a,
331 const std::shared_ptr<SymbolicExpr>&
b,
333 const std::string& operation,
338 for (
size_t i = 0; i < F.size(); ++i) {
340 if (!Fi_composed)
return Fi_composed;
343 if (!ri_prime)
return ri_prime;
345 auto term = SymbolicExpr::multiply(Fi_composed.value(), ri_prime.value());
346 auto term_checked =
vector_calculus_simplify_strict(term, operation,
"curve integrand construction is outside the supported domain", transform_budget);
347 if (!term_checked)
return term_checked;
350 : term_checked.value();
352 if (!dot_checked)
return dot_checked;
362 const std::string&
u,
const std::string&
v,
363 const std::shared_ptr<SymbolicExpr>&
u_lower,
const std::shared_ptr<SymbolicExpr>&
u_upper,
364 const std::shared_ptr<SymbolicExpr>&
v_lower,
const std::shared_ptr<SymbolicExpr>&
v_upper,
366 const std::string& operation,
369 const std::vector<std::string> coord_vars = {
"x",
"y",
"z"};
371 if (!f_composed)
return f_composed;
376 std::shared_ptr<SymbolicExpr> mag_sq;
377 for (
const auto& component : cross.value()) {
378 auto sq = SymbolicExpr::power(component, SymbolicExpr::number(2));
380 if (!sq_checked)
return sq_checked;
381 mag_sq = mag_sq ? SymbolicExpr::add(mag_sq, sq_checked.value())
382 : sq_checked.value();
383 auto mag_sq_checked =
vector_calculus_simplify_strict(mag_sq, operation,
"surface magnitude construction is outside the supported domain", transform_budget);
384 if (!mag_sq_checked)
return mag_sq_checked;
385 mag_sq = std::move(mag_sq_checked.value());
388 auto magnitude = SymbolicExpr::sqrt(mag_sq);
389 auto magnitude_checked =
vector_calculus_simplify_strict(magnitude, operation,
"surface magnitude construction is outside the supported domain", transform_budget);
390 if (!magnitude_checked)
return magnitude_checked;
392 auto integrand = SymbolicExpr::multiply(f_composed.value(), magnitude_checked.value());
393 auto integrand_checked =
vector_calculus_simplify_strict(integrand, operation,
"surface integrand construction is outside the supported domain", transform_budget);
394 if (!integrand_checked)
return integrand_checked;
396 std::vector<IntegrationStep>
steps;
404 const std::vector<std::string>& coordinates,
407 const std::string& message,
408 const std::string& operation,
411 for (std::size_t i = 0; i < 3; ++i) {
416 auto term = SymbolicExpr::multiply(
417 composed.value(), normal[i]);
424 : term_checked.value();
437 const std::string&
u,
const std::string&
v,
438 const std::shared_ptr<SymbolicExpr>&
u_lower,
const std::shared_ptr<SymbolicExpr>&
u_upper,
439 const std::shared_ptr<SymbolicExpr>&
v_lower,
const std::shared_ptr<SymbolicExpr>&
v_upper,
441 const std::string& operation,
444 const std::vector<std::string> coord_vars = {
"x",
"y",
"z"};
449 "surface integrand construction is outside the supported domain",
450 operation, transform_budget);
453 std::vector<IntegrationStep>
steps;
460 const std::shared_ptr<SymbolicExpr>& P,
461 const std::shared_ptr<SymbolicExpr>& Q,
462 const std::vector<std::string>&
vars,
463 const std::pair<std::shared_ptr<SymbolicExpr>, std::shared_ptr<SymbolicExpr>>&
x_bounds,
464 const std::pair<std::shared_ptr<SymbolicExpr>, std::shared_ptr<SymbolicExpr>>&
y_bounds,
466 const std::string& operation,
470 if (!dQ_dx)
return dQ_dx;
472 if (!dP_dy)
return dP_dy;
474 auto integrand = SymbolicExpr::add(
476 SymbolicExpr::multiply(SymbolicExpr::number(-1), dP_dy.value()));
477 auto integrand_checked =
vector_calculus_simplify_strict(integrand, operation,
"Green's theorem integrand is outside the supported domain", transform_budget);
478 if (!integrand_checked)
return integrand_checked;
480 std::vector<IntegrationStep>
steps;
487 const std::shared_ptr<SymbolicExpr>& integrand,
500 integrand, candidate,
context, trig_options);
504 if (!std::holds_alternative<ProvedZeroResidual>(
513 const std::string&
t,
514 const std::shared_ptr<SymbolicExpr>&
a,
515 const std::shared_ptr<SymbolicExpr>&
b,
517 const std::string& operation,
521 if (!dx_dt)
return dx_dt;
523 if (!dy_dt)
return dy_dt;
527 auto integrand = SymbolicExpr::add(
529 SymbolicExpr::multiply(SymbolicExpr::number(-1), term2));
530 auto integrand_checked =
vector_calculus_simplify_strict(integrand, operation,
"Green's area integrand is outside the supported domain", transform_budget);
531 if (!integrand_checked)
return integrand_checked;
533 if (!integrand_checked)
return integrand_checked;
536 if (!integral)
return integral;
540 auto area = SymbolicExpr::multiply(half, integral.value());
546 const std::vector<std::string>&
vars,
547 const std::pair<std::shared_ptr<SymbolicExpr>, std::shared_ptr<SymbolicExpr>>&
x_bounds,
548 const std::pair<std::shared_ptr<SymbolicExpr>, std::shared_ptr<SymbolicExpr>>&
y_bounds,
549 const std::pair<std::shared_ptr<SymbolicExpr>, std::shared_ptr<SymbolicExpr>>&
z_bounds,
551 const std::string& operation,
554 std::shared_ptr<SymbolicExpr> div_F;
555 for (
size_t i = 0; i < 3; ++i) {
557 if (!partial)
return partial;
558 div_F = div_F ? SymbolicExpr::add(div_F, partial.value()) : partial.value();
559 auto div_checked =
vector_calculus_simplify_strict(div_F, operation,
"divergence theorem integrand is outside the supported domain", transform_budget);
560 if (!div_checked)
return div_checked;
561 div_F = std::move(div_checked.value());
564 std::vector<IntegrationStep>
steps;
573 const std::vector<std::string>&
vars,
574 const std::string& operation,
602 auto cx = SymbolicExpr::add(
604 SymbolicExpr::multiply(SymbolicExpr::number(-1), dFy_dz.value()));
610 auto cy = SymbolicExpr::add(
612 SymbolicExpr::multiply(SymbolicExpr::number(-1), dFz_dx.value()));
618 auto cz = SymbolicExpr::add(
620 SymbolicExpr::multiply(SymbolicExpr::number(-1), dFx_dy.value()));
628 std::move(cy_checked.value()),
629 std::move(cz_checked.value())});
634 const std::vector<std::string>&
vars,
636 const std::string&
u,
637 const std::string&
v,
638 const std::pair<std::shared_ptr<SymbolicExpr>, std::shared_ptr<SymbolicExpr>>&
u_bounds,
639 const std::pair<std::shared_ptr<SymbolicExpr>, std::shared_ptr<SymbolicExpr>>&
v_bounds,
641 const std::string& operation,
651 "Stokes theorem integrand is outside the supported domain",
652 operation, transform_budget);
655 std::vector<IntegrationStep>
steps;
static Result failure(CasErrc code, std::string message, std::string operation={})
static Result success(std::shared_ptr< SymbolicExpr > value)
Symbolic integration APIs.
SymbolicNodePtr differentiate_node(const SymbolicNodePtr &node, const std::string &variable, RewriteBudget &budget, const FactsQuery &facts, Domain domain)
std::shared_ptr<::LMCAS::SymbolicExpr > make_expression_ptr(SymbolicNodePtr root)
const SymbolicNodePtr & node(const ::LMCAS::SymbolicExpr &expression) noexcept
std::shared_ptr< const Node > make_node(Args &&... args)
SymbolicNodePtr normalize_node(const SymbolicNodePtr &node, RewriteBudget &budget, const FactsQuery &facts, Domain domain)
SymbolicNodePtr substitute_node(const SymbolicNodePtr &node, const std::string &variable, const SymbolicNodePtr &replacement, RewriteBudget &budget, const FactsQuery &facts, Domain domain)
VectorCalculusExprResult surface_integral_scalar_strict(const std::shared_ptr< SymbolicExpr > &function, const VectorField ¶metrization, const std::string &u, const std::string &v, const std::shared_ptr< SymbolicExpr > &u_lower, const std::shared_ptr< SymbolicExpr > &u_upper, const std::shared_ptr< SymbolicExpr > &v_lower, const std::shared_ptr< SymbolicExpr > &v_upper, ComputationContext &context, const std::string &operation, detail::RewriteBudget &transform_budget)
VectorCalculusExprResult vector_calculus_differentiate_strict(const std::shared_ptr< SymbolicExpr > &expr, const std::string &variable, const std::string &operation, detail::RewriteBudget &transform_budget)
std::vector< std::string > vector_calculus_coord_vars(std::size_t dimension)
VectorCalculusExprResult surface_integral_vector_strict(const VectorField &field, const VectorField ¶metrization, const std::string &u, const std::string &v, const std::shared_ptr< SymbolicExpr > &u_lower, const std::shared_ptr< SymbolicExpr > &u_upper, const std::shared_ptr< SymbolicExpr > &v_lower, const std::shared_ptr< SymbolicExpr > &v_upper, ComputationContext &context, const std::string &operation, detail::RewriteBudget &transform_budget)
VectorCalculusExprResult curve_integral_scalar_strict(const std::shared_ptr< SymbolicExpr > &function, const VectorField ¶metrization, const std::string ¶meter, const std::shared_ptr< SymbolicExpr > &lower, const std::shared_ptr< SymbolicExpr > &upper, ComputationContext &context, const std::string &operation, detail::RewriteBudget &transform_budget)
VectorCalculusExprResult greens_theorem_area_strict(const VectorField ¶metrization, const std::string ¶meter, const std::shared_ptr< SymbolicExpr > &lower, const std::shared_ptr< SymbolicExpr > &upper, ComputationContext &context, const std::string &operation, detail::RewriteBudget &transform_budget)
std::shared_ptr< SymbolicExpr > vector_calculus_cross_component(const VectorField &left, const VectorField &right, std::size_t index)
VectorCalculusExprResult vector_calculus_simplify_strict(const std::shared_ptr< SymbolicExpr > &expr, const std::string &operation, const std::string &message, detail::RewriteBudget &transform_budget)
std::shared_ptr< SymbolicExpr > vector_calculus_integrate_with_fallback(const std::shared_ptr< SymbolicExpr > &integrand, const std::string &variable, const std::shared_ptr< SymbolicExpr > &lower, const std::shared_ptr< SymbolicExpr > &upper, ComputationContext &context, detail::RewriteBudget &transform_budget)
VectorCalculusExprResult stokes_theorem_strict(const VectorField &field, const std::vector< std::string > &variables, const VectorField ¶metrization, const std::string &u, const std::string &v, const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > &u_bounds, const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > &v_bounds, ComputationContext &context, const std::string &operation, detail::RewriteBudget &transform_budget)
bool vector_calculus_checked_finite_numeric(const std::shared_ptr< SymbolicExpr > &expr, double &value, ComputationContext &context)
VectorCalculusExprResult greens_theorem_strict(const std::shared_ptr< SymbolicExpr > &p, const std::shared_ptr< SymbolicExpr > &q, const std::vector< std::string > &variables, const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > &x_bounds, const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > &y_bounds, ComputationContext &context, const std::string &operation, detail::RewriteBudget &transform_budget)
VectorCalculusExprResult curve_integral_vector_strict(const VectorField &field, const VectorField ¶metrization, const std::string ¶meter, const std::shared_ptr< SymbolicExpr > &lower, const std::shared_ptr< SymbolicExpr > &upper, ComputationContext &context, const std::string &operation, detail::RewriteBudget &transform_budget)
VectorCalculusExprResult divergence_theorem_strict(const VectorField &field, const std::vector< std::string > &variables, const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > &x_bounds, const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > &y_bounds, const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > &z_bounds, ComputationContext &context, const std::string &operation, detail::RewriteBudget &transform_budget)
static VectorCalculusExprResult vector_calculus_try_definite(const std::shared_ptr< SymbolicExpr > &integrand, const std::string &var, const std::shared_ptr< SymbolicExpr > &a, const std::shared_ptr< SymbolicExpr > &b, ComputationContext &context, detail::RewriteBudget &transform_budget)
const std::string & variable
__attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string const std::string & v
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context
__attribute__((visibility("default"))) VectorCalculusFieldResult gradient_checked(const std __attribute__((visibility("default"))) VectorCalculusFieldResult gradient_checked(const std __attribute__((visibility("default"))) VectorField gradient(const std const std::vector< std::string > & vars
ResidualCheckResult check_equivalent(const ExprPtr &left, const ExprPtr &right, ComputationContext &context, const LMCAS::EqvOptions &options)
bool contains_unevaluated_integral(const std::shared_ptr< const SymbolicNode > &node)
static VectorCalculusExprResult vector_calculus_constant_integrand(const std::shared_ptr< SymbolicExpr > &integrand, const std::string &variable, ComputationContext &context, detail::RewriteBudget &transform_budget)
static VectorCalculusExprResult vector_calculus_definite_integral_strict(const std::shared_ptr< SymbolicExpr > &integrand, const std::string &var, const std::shared_ptr< SymbolicExpr > &a, const std::shared_ptr< SymbolicExpr > &b, ComputationContext &context, const std::string &operation, detail::RewriteBudget &transform_budget)
bool expression_depends_on_variable(const detail::SymbolicNodePtr &expression, const std::string &variable, detail::RewriteBudget *budget)
__attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string const std::string const std::shared_ptr< SymbolicExpr > const std::shared_ptr< SymbolicExpr > const std::shared_ptr< SymbolicExpr > & v_lower
__attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string const std::string const std::shared_ptr< SymbolicExpr > & u_lower
static Result< VectorField > vector_calculus_cross_product_partials_strict(const VectorField ¶metrization, const std::string &u, const std::string &v, const std::string &operation, detail::RewriteBudget &transform_budget)
__attribute__((visibility("default"))) std const std::vector< std::string > const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > & z_bounds
__attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string const std::string const std::shared_ptr< SymbolicExpr > const std::shared_ptr< SymbolicExpr > const std::shared_ptr< SymbolicExpr > const std::shared_ptr< SymbolicExpr > & v_upper
__attribute__((visibility("default"))) std const std::vector< std::string > const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > & x_bounds
__attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string const std::shared_ptr< SymbolicExpr > & a
std::vector< std::shared_ptr< SymbolicExpr > > VectorField
向量场由标量表达式组成。
__attribute__((visibility("default"))) MatrixRankResult matrix_rank_checked(const std __attribute__((visibility("default"))) MatrixRankResult matrix_rank_checked(const std __attribute__((visibility("default"))) ExpressionResult matrix_rref_checked(const std __attribute__((visibility("default"))) ExpressionResult matrix_rref_checked(const std __attribute__((visibility("default"))) MatrixNullspaceResult matrix_nullspace_checked(const std __attribute__((visibility("default"))) MatrixNullspaceResult matrix_nullspace_checked(const std __attribute__((visibility("default"))) MatrixLinearSolveResult matrix_solve_linear_checked(const std __attribute__((visibility("default"))) MatrixLinearSolveResult matrix_solve_linear_checked(const std int dim
static Result< VectorField > vector_calculus_curl_strict(const VectorField &F, const std::vector< std::string > &vars, const std::string &operation, detail::RewriteBudget &transform_budget)
__attribute__((visibility("default"))) std const std::vector< std::string > const VectorField const std::string const std::string const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > & u_bounds
__attribute__((visibility("default"))) std const std::vector< std::string > const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > & y_bounds
static VectorCalculusExprResult vector_calculus_multiple_integral_strict(const std::shared_ptr< SymbolicExpr > &integrand, const std::vector< IntegrationStep > &steps, ComputationContext &context, const std::string &operation, detail::RewriteBudget &transform_budget)
__attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField & parametrization
Result< SymbolicExpr > integrate_multiple_checked(const SymbolicExpr &integrand, const std::vector< IntegrationStep > &steps, Integrator &integrator, ComputationContext &context)
Result< std::shared_ptr< SymbolicExpr > > VectorCalculusExprResult
static VectorCalculusExprResult vector_calculus_inconclusive(const std::string &operation, const std::string &message)
static VectorCalculusExprResult vector_calculus_surface_dot_strict(const VectorField &field, const std::vector< std::string > &coordinates, const VectorField ¶metrization, const VectorField &normal, const std::string &message, const std::string &operation, detail::RewriteBudget &transform_budget)
__attribute__((visibility("default"))) std const std::vector< std::string > const VectorField const std::string const std::string const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > const std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > & v_bounds
static VectorCalculusExprResult vector_calculus_numerical_definite(const std::shared_ptr< SymbolicExpr > &integrand, const std::string &var, const std::shared_ptr< SymbolicExpr > &a, const std::shared_ptr< SymbolicExpr > &b, ComputationContext &context, detail::RewriteBudget &transform_budget)
__attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string const std::string const std::shared_ptr< SymbolicExpr > const std::shared_ptr< SymbolicExpr > & u_upper
static VectorCalculusExprResult vector_calculus_substitute_coords_strict(const std::shared_ptr< SymbolicExpr > &expr, const std::vector< std::string > &coord_vars, const VectorField &values, const std::string &operation, detail::RewriteBudget &transform_budget)
__attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string & t
const std::vector< IntegrationStep > Integrator & integrator
VectorCalculusExprResult dot_product(const VectorField &a, const VectorField &b)
__attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string & u
多项式方程组求解器 Solver,包含 Gröbner 基、线性系统求解。