LMCAS
Lamina Computer Algebra System
Toggle main menu visibility
载入中...
搜索中...
未找到
exact_matrix.hpp
浏览该文件的文档.
1
#pragma once
2
3
#include "
computation_context.hpp
"
4
#include "
internal/exact_rational_matrix.hpp
"
5
#include "
result.hpp
"
6
#include "
symbolic.hpp
"
7
8
#include <cstddef>
9
#include <string>
10
#include <variant>
11
#include <vector>
12
13
namespace
LMCAS::detail
{
14
15
enum class
ZeroProof
{
16
Zero
,
17
NonZero
,
18
Unknown
19
};
20
21
Result<ZeroProof>
classify_exact_zero
(
22
const
ExprPtr
& expression,
23
ComputationContext
&
context
,
24
const
std::string&
operation
);
25
26
struct
ExactMatrixData
{
27
std::size_t
rows
= 0;
28
std::size_t
cols
= 0;
29
std::vector<ExprPtr>
entries
;
30
31
const
ExprPtr
&
at
(std::size_t row, std::size_t col)
const
{
32
return
entries
.at(row *
cols
+ col);
33
}
34
ExprPtr
&
at
(std::size_t row, std::size_t col) {
35
return
entries
.at(row *
cols
+ col);
36
}
37
};
38
39
enum class
EliminationForm
{
40
Echelon
,
41
ReducedRowEchelon
42
};
43
44
struct
EliminationResult
{
45
ExactMatrixData
matrix
;
46
std::vector<std::size_t>
pivot_columns
;
47
std::size_t
rank
= 0;
48
std::size_t
row_swaps
= 0;
49
std::vector<ExprPtr>
pivot_values
;
50
};
51
52
Result<EliminationResult>
eliminate_exact
(
53
ExactMatrixData
input,
54
std::size_t coefficient_columns,
55
EliminationForm
form,
56
ComputationContext
&
context
,
57
const
std::string&
operation
);
58
59
Result<ExprPtr>
determinant_exact
(
60
const
ExactMatrixData
& input,
61
ComputationContext
&
context
,
62
const
std::string&
operation
);
63
64
65
Result<ExactMatrixData>
rref_exact
(
66
ExactMatrixData
input,
67
std::size_t coefficient_columns,
68
ComputationContext
&
context
,
69
const
std::string&
operation
);
70
71
72
Result<std::size_t>
rank_exact
(
73
ExactMatrixData
input,
74
std::size_t coefficient_columns,
75
ComputationContext
&
context
,
76
const
std::string&
operation
);
77
78
Result<ExactMatrixData>
inverse_exact
(
79
const
ExactMatrixData
& input,
80
ComputationContext
&
context
,
81
const
std::string&
operation
);
82
83
struct
UniqueLinearSolution
{
84
std::vector<ExprPtr>
values
;
85
};
86
87
struct
ParametricLinearSolution
{
88
std::vector<ExprPtr>
particular
;
89
std::vector<std::vector<ExprPtr>>
nullspace_basis
;
90
std::vector<std::size_t>
free_columns
;
91
};
92
93
struct
InconsistentLinearSolution
{};
94
95
using
ExactLinearSolution
= std::variant<
96
UniqueLinearSolution
,
97
ParametricLinearSolution
,
98
InconsistentLinearSolution
>;
99
100
Result<ExactLinearSolution>
solve_linear_exact
(
101
ExactMatrixData
augmented,
102
std::size_t coefficient_columns,
103
ComputationContext
&
context
,
104
const
std::string&
operation
);
105
106
Result<std::vector<std::vector<ExprPtr>
>>
nullspace_exact
(
107
ExactMatrixData
coefficients,
108
ComputationContext
&
context
,
109
const
std::string&
operation
);
110
111
}
LMCAS::ComputationContext
定义
computation_context.hpp:99
LMCAS::Result
定义
result.hpp:39
computation_context.hpp
exact_rational_matrix.hpp
LMCAS::detail
多元 Hensel 提升(单变量步)
定义
assumption_context.hpp:31
LMCAS::detail::ParametricLinearSolution::free_columns
std::vector< std::size_t > free_columns
定义
exact_matrix.hpp:90
LMCAS::detail::nullspace_exact
Result< std::vector< std::vector< ExprPtr > > > nullspace_exact(ExactMatrixData coefficients, ComputationContext &context, const std::string &operation)
定义
exact_matrix_solve.cpp:162
LMCAS::detail::ExactLinearSolution
std::variant< UniqueLinearSolution, ParametricLinearSolution, InconsistentLinearSolution > ExactLinearSolution
定义
exact_matrix.hpp:95
LMCAS::detail::eliminate_exact
Result< EliminationResult > eliminate_exact(ExactMatrixData input, std::size_t coefficient_columns, EliminationForm form, ComputationContext &context, const std::string &operation)
定义
exact_matrix.cpp:87
LMCAS::detail::ParametricLinearSolution::particular
std::vector< ExprPtr > particular
定义
exact_matrix.hpp:88
LMCAS::detail::EliminationResult::row_swaps
std::size_t row_swaps
定义
exact_matrix.hpp:48
LMCAS::detail::classify_exact_zero
Result< ZeroProof > classify_exact_zero(const ExprPtr &expression, ComputationContext &context, const std::string &operation)
定义
exact_matrix_support.cpp:168
LMCAS::detail::EliminationResult::pivot_columns
std::vector< std::size_t > pivot_columns
定义
exact_matrix.hpp:46
LMCAS::detail::ZeroProof
ZeroProof
定义
exact_matrix.hpp:15
LMCAS::detail::ParametricLinearSolution::nullspace_basis
std::vector< std::vector< ExprPtr > > nullspace_basis
定义
exact_matrix.hpp:89
LMCAS::detail::EliminationResult::matrix
ExactMatrixData matrix
定义
exact_matrix.hpp:45
LMCAS::detail::rank_exact
Result< std::size_t > rank_exact(ExactMatrixData input, std::size_t coefficient_columns, ComputationContext &context, const std::string &operation)
定义
exact_matrix.cpp:134
LMCAS::detail::determinant_exact
Result< ExprPtr > determinant_exact(const ExactMatrixData &input, ComputationContext &context, const std::string &operation)
定义
exact_matrix_determinant.cpp:115
LMCAS::detail::EliminationResult::rank
std::size_t rank
定义
exact_matrix.hpp:47
LMCAS::detail::solve_linear_exact
Result< ExactLinearSolution > solve_linear_exact(ExactMatrixData augmented, std::size_t coefficient_columns, ComputationContext &context, const std::string &operation)
定义
exact_matrix_solve.cpp:116
LMCAS::detail::EliminationForm
EliminationForm
定义
exact_matrix.hpp:39
LMCAS::detail::EliminationForm::Echelon
@ Echelon
定义
exact_matrix.hpp:40
LMCAS::detail::EliminationForm::ReducedRowEchelon
@ ReducedRowEchelon
定义
exact_matrix.hpp:41
LMCAS::detail::operation
ComputationContext const std::string & operation
定义
exact_algebraic.hpp:32
LMCAS::detail::EliminationResult::pivot_values
std::vector< ExprPtr > pivot_values
定义
exact_matrix.hpp:49
LMCAS::detail::context
std::size_t std::size_t ComputationContext & context
定义
exact_algebraic.hpp:27
LMCAS::detail::inverse_exact
Result< ExactMatrixData > inverse_exact(const ExactMatrixData &input, ComputationContext &context, const std::string &operation)
定义
exact_matrix.cpp:146
LMCAS::detail::rref_exact
Result< ExactMatrixData > rref_exact(ExactMatrixData input, std::size_t coefficient_columns, ComputationContext &context, const std::string &operation)
定义
exact_matrix.cpp:121
LMCAS::detail::UniqueLinearSolution::values
std::vector< ExprPtr > values
定义
exact_matrix.hpp:84
LMCAS::detail::EliminationResult
定义
exact_matrix.hpp:44
LMCAS::detail::UniqueLinearSolution
定义
exact_matrix.hpp:83
LMCAS::detail::ParametricLinearSolution
定义
exact_matrix.hpp:87
LMCAS::detail::InconsistentLinearSolution
定义
exact_matrix.hpp:93
LMCAS::context
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context
定义
exact_factorization.hpp:65
LMCAS::ExprPtr
std::shared_ptr< SymbolicExpr > ExprPtr
定义
conditional_result.hpp:19
LMCAS::Parity::Unknown
@ Unknown
Parity not determined
定义
assumption.hpp:39
LMCAS::Sign::NonZero
@ NonZero
!= 0
定义
assumption.hpp:32
LMCAS::Sign::Zero
@ Zero
== 0
定义
assumption.hpp:31
result.hpp
LMCAS::detail::ExactMatrixData
定义
exact_matrix.hpp:26
LMCAS::detail::ExactMatrixData::rows
std::size_t rows
定义
exact_matrix.hpp:27
LMCAS::detail::ExactMatrixData::at
const ExprPtr & at(std::size_t row, std::size_t col) const
定义
exact_matrix.hpp:31
LMCAS::detail::ExactMatrixData::cols
std::size_t cols
定义
exact_matrix.hpp:28
LMCAS::detail::ExactMatrixData::at
ExprPtr & at(std::size_t row, std::size_t col)
定义
exact_matrix.hpp:34
LMCAS::detail::ExactMatrixData::entries
std::vector< ExprPtr > entries
定义
exact_matrix.hpp:29
symbolic.hpp
符号表达式主类 SymbolicExpr 及其工厂方法,运算接口.
src
internal
exact_matrix.hpp
生成于
, 为 LMCAS使用
1.18.0