certlin.utility

Utility functions

Functions

solve_without_division(matrix, rhs)

Solve a linear system of equations without division.

Classes

CombinationsIncluding(mset, k[, elements])

Combinatorial object of all combinations that include given elements

class certlin.utility.CombinationsIncluding(mset, k, elements=None)

Combinatorial object of all combinations that include given elements

EXAMPLES:

We generate all subsets of range(4) with 2 elements that include the element 2:

sage: from certlin.utility import CombinationsIncluding
sage: C = CombinationsIncluding(4, 2, [2])
sage: list(C)
[[0, 2], [1, 2], [2, 3]]
sage: list(reversed(C))
[[2, 3], [1, 2], [0, 2]]
certlin.utility.solve_without_division(matrix: matrix, rhs: vector) vector

Solve a linear system of equations without division.

Use a circuit to compute \(x\) for

\[A x = \lambda b\]

where \(\lambda\) is any positive constant.

EXAMPLES:

sage: from certlin.utility import solve_without_division
sage: A = matrix([[1, 2], [0, 1], [1, -1]])
sage: b = vector([1, 0, 1])
sage: solve_without_division(A, b)
(1, 0)
sage: A = matrix([[1, 4], [0, 2], [1, -2]])
sage: b = vector([6, 2, 0])
sage: solve_without_division(A, b)
(4, 2)
sage: A.solve_right(b)
(2, 1)
sage: A = matrix([[1, 1, 1], [0, 1, 2]])
sage: b = vector([2, 3])
sage: solve_without_division(A, b)
(0, 1, 1)

TESTS:

sage: M = matrix([[1, 0, 1], [1, 0, 2]])
sage: rhs = vector([1, 1])
sage: solve_without_division(M, rhs)
(1, 0, 0)
sage: M = matrix([[1, 1], [1, 1]])
sage: rhs = vector([1, 2])
sage: solve_without_division(M, rhs)
Traceback (most recent call last):
...
ValueError: No circuit with nonzero last component found. A solution might exist.