LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::anonymous_namespace{matrix_decomposition_lu.cpp} 命名空间参考

类型定义

using RationalRows = std::vector<std::vector<Rational>>

函数

void eliminate_lu_column (RationalRows &lower, RationalRows &upper, std::size_t column)
Result< void > factor_lu (RationalRows &lower, RationalRows &upper, RationalRows &permutation, const std::string &operation)
std::shared_ptr< SymbolicExpr > rational_rows_expression (const RationalRows &input)

类型定义说明

◆ RationalRows

using LMCAS::anonymous_namespace{matrix_decomposition_lu.cpp}::RationalRows = std::vector<std::vector<Rational>>

在文件 matrix_decomposition_lu.cpp 第 9 行定义.

函数说明

◆ eliminate_lu_column()

void LMCAS::anonymous_namespace{matrix_decomposition_lu.cpp}::eliminate_lu_column ( RationalRows & lower,
RationalRows & upper,
std::size_t column )

在文件 matrix_decomposition_lu.cpp 第 11 行定义.

12 {
13 const std::size_t n = upper.size();
14 for (std::size_t row = column + 1; row < n; ++row) {
15 const Rational multiplier =
16 upper[row][column] / upper[column][column];
17 lower[row][column] = multiplier;
18 for (std::size_t col = column; col < n; ++col) {
19 upper[row][col] =
20 upper[row][col] -
21 multiplier * upper[column][col];
22 }
23 }
24}
__attribute__((visibility("default"))) ExprResult function(const std __attribute__((visibility("default"))) ExprResult finite_set(std ExprPtr upper
const ExprPtr & lower

引用了 eliminate_lu_column(), LMCAS::lower , 以及 LMCAS::upper.

被这些函数引用 eliminate_lu_column() , 以及 factor_lu().

函数调用图:
这是这个函数的调用关系图:

◆ factor_lu()

Result< void > LMCAS::anonymous_namespace{matrix_decomposition_lu.cpp}::factor_lu ( RationalRows & lower,
RationalRows & upper,
RationalRows & permutation,
const std::string & operation )

在文件 matrix_decomposition_lu.cpp 第 26 行定义.

27 {
28 const std::size_t n = upper.size();
29 for (std::size_t i = 0; i < n; ++i) {
30 lower[i][i] = Rational(1);
31 permutation[i][i] = Rational(1);
32 }
33 for (std::size_t column = 0; column < n; ++column) {
34 std::size_t pivot = column;
35 while (pivot < n && upper[pivot][column] == Rational(0)) ++pivot;
36 if (pivot == n) {
39 "PLU decomposition requires a nonsingular matrix",
40 operation);
41 }
42 if (pivot != column) {
43 std::swap(upper[pivot], upper[column]);
44 std::swap(permutation[pivot], permutation[column]);
45 for (std::size_t prior = 0; prior < column; ++prior) {
46 std::swap(lower[pivot][prior], lower[column][prior]);
47 }
48 }
50 }
51 return Result<void>::success();
52}
static Result failure(CasErrc code, std::string message, std::string operation={})
static Result success(T value)
void eliminate_lu_column(RationalRows &lower, RationalRows &upper, std::size_t column)

引用了 LMCAS::DomainError, eliminate_lu_column(), factor_lu(), LMCAS::Result< T >::failure(), LMCAS::lower, LMCAS::Result< T >::success() , 以及 LMCAS::upper.

被这些函数引用 factor_lu().

函数调用图:
这是这个函数的调用关系图:

◆ rational_rows_expression()

std::shared_ptr< SymbolicExpr > LMCAS::anonymous_namespace{matrix_decomposition_lu.cpp}::rational_rows_expression ( const RationalRows & input)

在文件 matrix_decomposition_lu.cpp 第 54 行定义.

54 {
55 const std::size_t n = input.size();
56 std::vector<std::vector<std::shared_ptr<SymbolicExpr>>> grid(
57 n, std::vector<std::shared_ptr<SymbolicExpr>>(n));
58 for (std::size_t row = 0; row < n; ++row) {
59 for (std::size_t col = 0; col < n; ++col) {
60 grid[row][col] = exact_number_expr(input[row][col]);
61 }
62 }
63 return SymbolicExpr::matrix(grid);
64}
std::shared_ptr< SymbolicExpr > exact_number_expr(const Rational &value)

引用了 LMCAS::detail::matrix_decomposition::exact_number_expr() , 以及 rational_rows_expression().

被这些函数引用 rational_rows_expression().

函数调用图:
这是这个函数的调用关系图: