LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
exact_matrix.hpp
浏览该文件的文档.
1#pragma once
2
5#include "result.hpp"
6#include "symbolic.hpp"
7
8#include <cstddef>
9#include <string>
10#include <variant>
11#include <vector>
12
13namespace LMCAS::detail {
14
20
22 const ExprPtr& expression,
24 const std::string& operation);
25
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
43
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
53 ExactMatrixData input,
54 std::size_t coefficient_columns,
55 EliminationForm form,
57 const std::string& operation);
58
60 const ExactMatrixData& input,
62 const std::string& operation);
63
64
66 ExactMatrixData input,
67 std::size_t coefficient_columns,
69 const std::string& operation);
70
71
73 ExactMatrixData input,
74 std::size_t coefficient_columns,
76 const std::string& operation);
77
79 const ExactMatrixData& input,
81 const std::string& operation);
82
84 std::vector<ExprPtr> values;
85};
86
88 std::vector<ExprPtr> particular;
89 std::vector<std::vector<ExprPtr>> nullspace_basis;
90 std::vector<std::size_t> free_columns;
91};
92
94
95using ExactLinearSolution = std::variant<
99
101 ExactMatrixData augmented,
102 std::size_t coefficient_columns,
104 const std::string& operation);
105
107 ExactMatrixData coefficients,
109 const std::string& operation);
110
111}
多元 Hensel 提升(单变量步)
Result< std::vector< std::vector< ExprPtr > > > nullspace_exact(ExactMatrixData coefficients, ComputationContext &context, const std::string &operation)
std::variant< UniqueLinearSolution, ParametricLinearSolution, InconsistentLinearSolution > ExactLinearSolution
Result< EliminationResult > eliminate_exact(ExactMatrixData input, std::size_t coefficient_columns, EliminationForm form, ComputationContext &context, const std::string &operation)
Result< ZeroProof > classify_exact_zero(const ExprPtr &expression, ComputationContext &context, const std::string &operation)
std::vector< std::size_t > pivot_columns
std::vector< std::vector< ExprPtr > > nullspace_basis
Result< std::size_t > rank_exact(ExactMatrixData input, std::size_t coefficient_columns, ComputationContext &context, const std::string &operation)
Result< ExprPtr > determinant_exact(const ExactMatrixData &input, ComputationContext &context, const std::string &operation)
Result< ExactLinearSolution > solve_linear_exact(ExactMatrixData augmented, std::size_t coefficient_columns, ComputationContext &context, const std::string &operation)
ComputationContext const std::string & operation
std::size_t std::size_t ComputationContext & context
Result< ExactMatrixData > inverse_exact(const ExactMatrixData &input, ComputationContext &context, const std::string &operation)
Result< ExactMatrixData > rref_exact(ExactMatrixData input, std::size_t coefficient_columns, ComputationContext &context, const std::string &operation)
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context
std::shared_ptr< SymbolicExpr > ExprPtr
@ Unknown
Parity not determined
const ExprPtr & at(std::size_t row, std::size_t col) const
ExprPtr & at(std::size_t row, std::size_t col)
符号表达式主类 SymbolicExpr 及其工厂方法,运算接口.