|
LMCAS
Lamina Computer Algebra System
|
类型定义 | |
| typedef std::pair< std::shared_ptr< SymbolicExpr >, std::shared_ptr< SymbolicExpr > > | RatPair |
| 递归求值已执行 sin/cos->t 代换的表达式,生成关于 t 的多项式分子与分母; nullopt 表示当前节点位于有理函数支持域之外. | |
函数 | |
| bool | weier_has_trig_of_var (const std::shared_ptr< const SymbolicNode > &node, const std::string &var) |
| 是否至少包含一个 sin(var)/cos(var)/tan(var)... 形式(确保确实是三角有理函数) | |
| bool | weier_is_rational_trig (const std::shared_ptr< const SymbolicNode > &node, const std::string &var) |
| 判断表达式是否仅由 var 通过 sin(var)/cos(var)/tan(var) 以及常数,四则,整数幂构成, 即关于 sin/cos 的有理函数.含有其它依赖 var 的函数(exp/ln/sqrt 等)时返回 false. | |
| bool | weier_rational_function (const FunctionNode &fn, const std::string &var) |
| std::optional< RatPair > | weier_rational_power (const PowerNode &pw, const std::string &tvar, const std::shared_ptr< SymbolicExpr > &one, ComputationContext &context) |
| Result< std::shared_ptr< SymbolicExpr > > | weier_reduce_rational (const std::shared_ptr< SymbolicExpr > &num_poly, const std::shared_ptr< SymbolicExpr > &den_poly, const std::string &tvar, ComputationContext &context) |
| std::shared_ptr< const SymbolicNode > | weier_replace (const std::shared_ptr< const SymbolicNode > &node, const std::string &var, const std::string &tvar) |
| std::shared_ptr< const SymbolicNode > | weier_replace_function (const FunctionNode &fn, const std::string &var, const std::string &tvar) |
| std::optional< RatPair > | weier_to_rational (const std::shared_ptr< const SymbolicNode > &node, const std::string &tvar, ComputationContext &context) |
| bool | weier_trig_function (const FunctionNode &fn) |
| bool | weier_trig_of_variable (const FunctionNode &function, const std::string &var) |
| typedef std::pair<std::shared_ptr<SymbolicExpr>, std::shared_ptr<SymbolicExpr> > LMCAS::anonymous_namespace{integration_weierstrass.cpp}::RatPair |
递归求值已执行 sin/cos->t 代换的表达式,生成关于 t 的多项式分子与分母; nullopt 表示当前节点位于有理函数支持域之外.
在文件 integration_weierstrass.cpp 第 162 行定义.
| bool LMCAS::anonymous_namespace{integration_weierstrass.cpp}::weier_has_trig_of_var | ( | const std::shared_ptr< const SymbolicNode > & | node, |
| const std::string & | var ) |
是否至少包含一个 sin(var)/cos(var)/tan(var)... 形式(确保确实是三角有理函数)
在文件 integration_weierstrass.cpp 第 69 行定义.
引用了 LMCAS::a, LMCAS::add(), LMCAS::mul(), LMCAS::op, weier_has_trig_of_var() , 以及 weier_trig_of_variable().
被这些函数引用 weier_has_trig_of_var().
| bool LMCAS::anonymous_namespace{integration_weierstrass.cpp}::weier_is_rational_trig | ( | const std::shared_ptr< const SymbolicNode > & | node, |
| const std::string & | var ) |
判断表达式是否仅由 var 通过 sin(var)/cos(var)/tan(var) 以及常数,四则,整数幂构成, 即关于 sin/cos 的有理函数.含有其它依赖 var 的函数(exp/ln/sqrt 等)时返回 false.
裸 var 表示输入超出 sin/cos 有理函数域.
指数必须是不依赖 var 的整数常数
在文件 integration_weierstrass.cpp 第 33 行定义.
引用了 LMCAS::add(), LMCAS::mul(), LMCAS::op, weier_is_rational_trig() , 以及 weier_rational_function().
被这些函数引用 weier_is_rational_trig().
| bool LMCAS::anonymous_namespace{integration_weierstrass.cpp}::weier_rational_function | ( | const FunctionNode & | fn, |
| const std::string & | var ) |
在文件 integration_weierstrass.cpp 第 19 行定义.
引用了 LMCAS::FunctionNode::arguments(), LMCAS::expression_depends_on_variable(), LMCAS::variable, weier_rational_function() , 以及 weier_trig_function().
被这些函数引用 weier_is_rational_trig() , 以及 weier_rational_function().
| std::optional< RatPair > LMCAS::anonymous_namespace{integration_weierstrass.cpp}::weier_rational_power | ( | const PowerNode & | pw, |
| const std::string & | tvar, | ||
| const std::shared_ptr< SymbolicExpr > & | one, | ||
| ComputationContext & | context ) |
在文件 integration_weierstrass.cpp 第 166 行定义.
引用了 LMCAS::PowerNode::base(), LMCAS::context, LMCAS::PowerNode::exponent(), LMCAS::integration_bounded_exponent(), LMCAS::detail::make_expression_ptr(), LMCAS::neg(), LMCAS::detail::node(), LMCAS::detail::normalize_node(), LMCAS::polynomial_solver_detail::num(), weier_rational_power() , 以及 weier_to_rational().
被这些函数引用 weier_rational_power() , 以及 weier_to_rational().
| Result< std::shared_ptr< SymbolicExpr > > LMCAS::anonymous_namespace{integration_weierstrass.cpp}::weier_reduce_rational | ( | const std::shared_ptr< SymbolicExpr > & | num_poly, |
| const std::shared_ptr< SymbolicExpr > & | den_poly, | ||
| const std::string & | tvar, | ||
| ComputationContext & | context ) |
在文件 integration_weierstrass.cpp 第 236 行定义.
引用了 LMCAS::context, LMCAS::denominator, LMCAS::detail::expand_node(), LMCAS::Polynomial< CoeffType >::gcd(), LMCAS::detail::make_expression_ptr(), LMCAS::detail::node(), LMCAS::UnsupportedExpression , 以及 weier_reduce_rational().
被这些函数引用 weier_reduce_rational().
| std::shared_ptr< const SymbolicNode > LMCAS::anonymous_namespace{integration_weierstrass.cpp}::weier_replace | ( | const std::shared_ptr< const SymbolicNode > & | node, |
| const std::string & | var, | ||
| const std::string & | tvar ) |
其它函数:递归替换参数
在文件 integration_weierstrass.cpp 第 132 行定义.
引用了 LMCAS::a, LMCAS::add(), LMCAS::SymbolicNode::clone(), LMCAS::detail::make_node(), LMCAS::mul(), LMCAS::op, weier_replace() , 以及 weier_replace_function().
被这些函数引用 weier_replace().
| std::shared_ptr< const SymbolicNode > LMCAS::anonymous_namespace{integration_weierstrass.cpp}::weier_replace_function | ( | const FunctionNode & | fn, |
| const std::string & | var, | ||
| const std::string & | tvar ) |
< 多项式 1+t^2。
< 多项式 1-t^2。
在文件 integration_weierstrass.cpp 第 92 行定义.
引用了 LMCAS::FunctionNode::arguments(), LMCAS::detail::node(), LMCAS::t, LMCAS::FunctionNode::type() , 以及 weier_replace_function().
被这些函数引用 weier_replace() , 以及 weier_replace_function().
| std::optional< RatPair > LMCAS::anonymous_namespace{integration_weierstrass.cpp}::weier_to_rational | ( | const std::shared_ptr< const SymbolicNode > & | node, |
| const std::string & | tvar, | ||
| ComputationContext & | context ) |
累加:a/b + c/d = (a*d + c*b)/(b*d)
其他节点结构由 nullopt 标记为 t 有理函数域之外.
在文件 integration_weierstrass.cpp 第 190 行定义.
引用了 LMCAS::add(), LMCAS::SymbolicNode::clone(), LMCAS::context, LMCAS::detail::make_expression_ptr(), LMCAS::mul(), LMCAS::detail::node(), LMCAS::detail::normalize_node(), LMCAS::polynomial_solver_detail::num(), LMCAS::op, LMCAS::r, weier_rational_power() , 以及 weier_to_rational().
被这些函数引用 weier_rational_power() , 以及 weier_to_rational().
| bool LMCAS::anonymous_namespace{integration_weierstrass.cpp}::weier_trig_function | ( | const FunctionNode & | fn | ) |
在文件 integration_weierstrass.cpp 第 9 行定义.
引用了 LMCAS::FunctionNode::arguments(), LMCAS::FunctionNode::type() , 以及 weier_trig_function().
被这些函数引用 weier_rational_function(), weier_trig_function() , 以及 weier_trig_of_variable().
| bool LMCAS::anonymous_namespace{integration_weierstrass.cpp}::weier_trig_of_variable | ( | const FunctionNode & | function, |
| const std::string & | var ) |
在文件 integration_weierstrass.cpp 第 60 行定义.
引用了 LMCAS::function(), weier_trig_function() , 以及 weier_trig_of_variable().
被这些函数引用 weier_has_trig_of_var() , 以及 weier_trig_of_variable().