LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
symbolic_complex.hpp
浏览该文件的文档.
1/**
2 * @file symbolic_complex.hpp
3 * @brief 符号复数运算:加减乘除、共轭、模、辐角、极坐标形式。
4 */
5#pragma once
7#include "result.hpp"
8#include "symbolic.hpp"
9#include <memory>
10#include <string>
11#include <vector>
12
13namespace LMCAS {
14
15/** @brief 符号复数,由实部和虚部组成 */
17 std::shared_ptr<SymbolicExpr> real; ///< 实部
18 std::shared_ptr<SymbolicExpr> imag; ///< 虚部
19};
20
23
24/**
25 * @brief 构造符号复数
26 * @param real 实部表达式
27 * @param imag 虚部表达式
28 * @return 符号复数对象
29 */
31 std::shared_ptr<SymbolicExpr> real,
32 std::shared_ptr<SymbolicExpr> imag
33) {
34 return ComplexSymbolic{real, imag};
35}
36
37/**
38 * @brief 复数加法
39 * @param a 加数
40 * @param b 加数
41 * @return 和
42 */
43
45 const ComplexSymbolic& a,
46 const ComplexSymbolic& b,
47 ComputationContext& context);
48
50 const ComplexSymbolic& a,
51 const ComplexSymbolic& b);
52
53/**
54 * @brief 复数减法
55 * @param a 被减数
56 * @param b 减数
57 * @return 差
58 */
59
61 const ComplexSymbolic& a,
62 const ComplexSymbolic& b,
63 ComputationContext& context);
64
66 const ComplexSymbolic& a,
67 const ComplexSymbolic& b);
68
69/**
70 * @brief 复数乘法
71 * @param a 乘数
72 * @param b 乘数
73 * @return 积
74 */
75
77 const ComplexSymbolic& a,
78 const ComplexSymbolic& b,
79 ComputationContext& context);
80
82 const ComplexSymbolic& a,
83 const ComplexSymbolic& b);
84
85/**
86 * @brief 复数除法
87 * @param a 被除数
88 * @param b 除数
89 * @return 商
90 */
91
93 const ComplexSymbolic& a,
94 const ComplexSymbolic& b,
95 ComputationContext& context);
96
98 const ComplexSymbolic& a,
99 const ComplexSymbolic& b);
100
101/**
102 * @brief 计算复数的共轭
103 * @param z 输入复数
104 * @return 共轭复数
105 */
106
108 const ComplexSymbolic& z,
109 ComputationContext& context);
110
112
113/**
114 * @brief 计算复数的模
115 * @param z 输入复数
116 * @return 模的符号表达式
117 */
118
120 const ComplexSymbolic& z,
121 ComputationContext& context);
122
123LMCAS_API ExpressionResult complex_abs_checked(const ComplexSymbolic& z);
124
125/**
126 * @brief 计算复数的辐角
127 * @param z 输入复数
128 * @return 辐角的符号表达式
129 */
130
132 const ComplexSymbolic& z,
133 ComputationContext& context);
134
135LMCAS_API ExpressionResult complex_arg_checked(const ComplexSymbolic& z);
136
137/**
138 * @brief 将极坐标形式转换为指数形式复数 r*e^(i*theta)
139 * @param r 模
140 * @param theta 辐角
141 * @return 对应的符号复数
142 */
143
145 std::shared_ptr<SymbolicExpr> r,
146 std::shared_ptr<SymbolicExpr> theta,
147 ComputationContext& context);
148
150 std::shared_ptr<SymbolicExpr> r,
151 std::shared_ptr<SymbolicExpr> theta);
152
153/**
154 * @brief 将极坐标形式转换为三角形式复数 r*(cos(theta) + i*sin(theta))
155 * @param r 模
156 * @param theta 辐角
157 * @return 对应的符号复数
158 */
159
161 std::shared_ptr<SymbolicExpr> r,
162 std::shared_ptr<SymbolicExpr> theta,
163 ComputationContext& context);
164
166 std::shared_ptr<SymbolicExpr> r,
167 std::shared_ptr<SymbolicExpr> theta);
168
169/**
170 * @brief 求复数 c 的 n 次方根
171 * @param c 被开方的复数表达式
172 * @param n 根的次数
173 * @return n 个复数根的列表
174 */
175
177 std::shared_ptr<SymbolicExpr> c,
178 int n,
179 ComputationContext& context);
180
182 std::shared_ptr<SymbolicExpr> c,
183 int n);
184
185/**
186 * @brief 求解系数已证为实数且 a 非零的方程 az^2 + bz + c = 0。
187 *
188 * 按公式的 (+sqrt, -sqrt) 顺序返回两个直角坐标形式的根,保留重数。
189 * 负判别式的平方根仅进入虚部;返回前须将所有候选根代入
190 * 直角坐标多项式并将残差化简为零。
191 * 空输入返回 InvalidArgument;a 已证为零返回 DomainError;
192 * 系数未证为实数返回 UnsupportedExpression。
193 * a 的非零性、判别式符号或零残差未获证明时返回 Inconclusive。
194 * 使用上下文假设并传播计算错误。
195 */
197 std::shared_ptr<SymbolicExpr> a,
198 std::shared_ptr<SymbolicExpr> b,
199 std::shared_ptr<SymbolicExpr> c,
200 ComputationContext& context);
201
203 std::shared_ptr<SymbolicExpr> a,
204 std::shared_ptr<SymbolicExpr> b,
205 std::shared_ptr<SymbolicExpr> c);
206
208 const ComplexSymbolic& a,
209 std::shared_ptr<SymbolicExpr> r,
210 const std::string& z_var,
212
214 const ComplexSymbolic& a,
215 std::shared_ptr<SymbolicExpr> r,
216 const std::string& z_var = "z");
217
219 const ComplexSymbolic& a,
220 const ComplexSymbolic& b,
221 const std::string& z_var,
223
225 const ComplexSymbolic& a,
226 const ComplexSymbolic& b,
227 const std::string& z_var = "z");
228
229}
#define LMCAS_API
ComplexSymbolicResult complex_div_checked(const ComplexSymbolic &a, const ComplexSymbolic &b, ComputationContext &context)
ExpressionResult complex_abs_checked(const ComplexSymbolic &z, ComputationContext &context)
__attribute__((visibility("default"))) ComplexSymbolicResult complex_exp_form_checked(std __attribute__((visibility("default"))) ComplexSymbolicResult complex_exp_form_checked(std __attribute__((visibility("default"))) ComplexSymbolicResult complex_trig_form_checked(std __attribute__((visibility("default"))) ComplexSymbolicResult complex_trig_form_checked(std __attribute__((visibility("default"))) ComplexRootsResult solve_complex_nth_root_checked(std __attribute__((visibility("default"))) ComplexRootsResult solve_complex_nth_root_checked(std __attribute__((visibility("default"))) ComplexRootsResult solve_complex_quadratic_checked(std __attribute__((visibility("default"))) ComplexRootsResult solve_complex_quadratic_checked(std std::shared_ptr< SymbolicExpr > r
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context
ComplexRootsResult solve_complex_quadratic_checked(std::shared_ptr< SymbolicExpr > a, std::shared_ptr< SymbolicExpr > b, std::shared_ptr< SymbolicExpr > c, ComputationContext &context)
ExprResult real(const ExprPtr &expression, ComputationContext &context)
ExpressionResult complex_locus_perpendicular_bisector_checked(const ComplexSymbolic &a, const ComplexSymbolic &b, const std::string &z_var, ComputationContext &context)
const VectorField const VectorField & c
ComplexSymbolicResult complex_sub_checked(const ComplexSymbolic &a, const ComplexSymbolic &b, ComputationContext &context)
ComplexSymbolic make_complex(std::shared_ptr< SymbolicExpr > real, std::shared_ptr< SymbolicExpr > imag)
构造符号复数
const MultiPoly & b
Result< std::shared_ptr< SymbolicExpr > > ExpressionResult
Result of an operation that produces a symbolic expression.
ComplexRootsResult solve_complex_nth_root_checked(std::shared_ptr< SymbolicExpr > c, int n, ComputationContext &context)
ComplexSymbolicResult complex_conj_checked(const ComplexSymbolic &z, ComputationContext &context)
__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
ExpressionResult complex_locus_circle_checked(const ComplexSymbolic &a, std::shared_ptr< SymbolicExpr > r, const std::string &z_var, ComputationContext &context)
ComplexSymbolicResult complex_add_checked(const ComplexSymbolic &a, const ComplexSymbolic &b, ComputationContext &context)
Result< ComplexSymbolic > ComplexSymbolicResult
ExprPtr imag
std::shared_ptr< SymbolicExpr > real
实部
ComplexSymbolicResult complex_trig_form_checked(std::shared_ptr< SymbolicExpr > r, std::shared_ptr< SymbolicExpr > theta, ComputationContext &context)
ComplexSymbolicResult complex_exp_form_checked(std::shared_ptr< SymbolicExpr > r, std::shared_ptr< SymbolicExpr > theta, ComputationContext &context)
std::shared_ptr< SymbolicExpr > imag
虚部
ComplexSymbolicResult complex_mul_checked(const ComplexSymbolic &a, const ComplexSymbolic &b, ComputationContext &context)
ExpressionResult complex_arg_checked(const ComplexSymbolic &z, ComputationContext &context)
Result< std::vector< ComplexSymbolic > > ComplexRootsResult
__attribute__((visibility("default"))) ComplexSymbolicResult complex_exp_form_checked(std __attribute__((visibility("default"))) ComplexSymbolicResult complex_exp_form_checked(std __attribute__((visibility("default"))) ComplexSymbolicResult complex_trig_form_checked(std __attribute__((visibility("default"))) ComplexSymbolicResult complex_trig_form_checked(std __attribute__((visibility("default"))) ComplexRootsResult solve_complex_nth_root_checked(std __attribute__((visibility("default"))) ComplexRootsResult solve_complex_nth_root_checked(std __attribute__((visibility("default"))) ComplexRootsResult solve_complex_quadratic_checked(std __attribute__((visibility("default"))) ComplexRootsResult solve_complex_quadratic_checked(std std::shared_ptr< SymbolicExpr > const std::string & z_var
符号复数,由实部和虚部组成
符号表达式主类 SymbolicExpr 及其工厂方法,运算接口.