LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
vector_calculus_differential.hpp
浏览该文件的文档.
1#pragma once
2
4
5namespace LMCAS {
6
7/**
8 * @brief 计算标量函数的梯度 ∇f。
9 *
10 * @param[in] f 标量函数表达式
11 * @param[in] vars 变量名列表
12 * @return 梯度向量,各分量为偏导数 ∂f/∂xᵢ
13 */
15 const std::shared_ptr<SymbolicExpr>& f,
16 const std::vector<std::string>& vars,
18
19/** @brief 使用默认上下文计算梯度;无效输入返回错误。 */
21 const std::shared_ptr<SymbolicExpr>& f,
22 const std::vector<std::string>& vars);
23LMCAS_API VectorField gradient(const std::shared_ptr<SymbolicExpr>& f,
24 const std::vector<std::string>& vars);
25
26
27/**
28 * @brief 计算向量场的散度 ∇·F = ∑∂Fᵢ/∂xᵢ。
29 *
30 * @param[in] F 向量场(各分量为标量表达式)
31 * @param[in] vars 变量名列表(与 F 的分量一一对应)
32 * @return 散度标量表达式
33 */
35 const VectorField& F,
36 const std::vector<std::string>& vars,
38
39/** @brief 使用默认上下文计算散度;无效输入返回错误。 */
41 const VectorField& F,
42 const std::vector<std::string>& vars);
43LMCAS_API std::shared_ptr<SymbolicExpr> divergence(const VectorField& F,
44 const std::vector<std::string>& vars);
45
46
47/**
48 * @brief 计算向量场的旋度 ∇×F。
49 *
50 * 三维情况返回三分量向量;二维情况返回标量旋度(单分量向量)。
51 *
52 * @param[in] F 向量场
53 * @param[in] vars 变量名列表
54 * @return 旋度向量场
55 */
57 const VectorField& F,
58 const std::vector<std::string>& vars,
60
61/** @brief 使用默认上下文计算旋度;无效输入返回错误。 */
63 const VectorField& F,
64 const std::vector<std::string>& vars);
66 const std::vector<std::string>& vars);
67
68
69/**
70 * @brief 计算标量函数的拉普拉斯算子 ∇²f = ∑∂²f/∂xᵢ²。
71 *
72 * @param[in] f 标量函数表达式
73 * @param[in] vars 变量名列表
74 * @return 拉普拉斯算子结果表达式
75 */
77 const std::shared_ptr<SymbolicExpr>& f,
78 const std::vector<std::string>& vars,
80
81/** @brief 使用默认上下文计算拉普拉斯算子;无效输入返回错误。 */
83 const std::shared_ptr<SymbolicExpr>& f,
84 const std::vector<std::string>& vars);
85LMCAS_API std::shared_ptr<SymbolicExpr> laplacian(const std::shared_ptr<SymbolicExpr>& f,
86 const std::vector<std::string>& vars);
87
88
89/**
90 * @brief 计算方向导数 D_u f = ∇f · û。
91 *
92 * 将方向向量归一化为单位向量后,计算梯度与单位方向的点积。
93 * 支持高阶方向导数(重复应用)。
94 *
95 * @param[in] f 标量函数表达式
96 * @param[in] vars 变量名列表
97 * @param[in] direction 方向向量
98 * @param[in] order 阶数(默认 1)
99 * @return 方向导数表达式;方向向量为零时返回 nullptr
100 */
102 const std::shared_ptr<SymbolicExpr>& f,
103 const std::vector<std::string>& vars,
104 const VectorField& direction,
105 int order,
107
108/** @brief 使用默认上下文计算方向导数;零方向及其他无效输入返回错误。 */
110 const std::shared_ptr<SymbolicExpr>& f,
111 const std::vector<std::string>& vars,
112 const VectorField& direction,
113 int order = 1);
114LMCAS_API std::shared_ptr<SymbolicExpr> directional_derivative(
115 const std::shared_ptr<SymbolicExpr>& f, const std::vector<std::string>& vars,
116 const VectorField& direction, int order = 1);
117
118}
#define LMCAS_API
VectorCalculusFieldResult curl_checked(const VectorField &F, const std::vector< std::string > &vars, ComputationContext &context)
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
VectorField curl(const VectorField &F, const std::vector< std::string > &vars)
const std::vector< FGLMPoly > const MonomialOrder & order
const std::string const LimitExprPtr LimitDirection direction
VectorCalculusFieldResult gradient_checked(const std::shared_ptr< SymbolicExpr > &f, const std::vector< std::string > &vars, ComputationContext &context)
std::shared_ptr< SymbolicExpr > laplacian(const std::shared_ptr< SymbolicExpr > &f, const std::vector< std::string > &vars)
std::shared_ptr< SymbolicExpr > directional_derivative(const std::shared_ptr< SymbolicExpr > &f, const std::vector< std::string > &vars, const VectorField &direction, int order)
VectorCalculusExprResult laplacian_checked(const std::shared_ptr< SymbolicExpr > &f, const std::vector< std::string > &vars, ComputationContext &context)
std::shared_ptr< SymbolicExpr > divergence(const VectorField &F, const std::vector< std::string > &vars)
std::vector< std::shared_ptr< SymbolicExpr > > VectorField
向量场由标量表达式组成。
VectorCalculusExprResult divergence_checked(const VectorField &F, const std::vector< std::string > &vars, ComputationContext &context)
Result< VectorField > VectorCalculusFieldResult
Result< std::shared_ptr< SymbolicExpr > > VectorCalculusExprResult
VectorCalculusExprResult directional_derivative_checked(const std::shared_ptr< SymbolicExpr > &f, const std::vector< std::string > &vars, const VectorField &direction, int order, ComputationContext &context)
VectorField gradient(const std::shared_ptr< SymbolicExpr > &f, const std::vector< std::string > &vars)