apply in-place forward substitution from a lower triangular mod m Matrix to a mod m Matrix or Vector
ForwardSubstitute(m, A, B, diagflag)
mod m lower triangular Matrix
mod m Matrix or Vector to which to apply forward substitution
boolean; indicate whether to assume diagonal entries are 1
The ForwardSubstitute function applies the forward substitution described by the lower triangular part of the square mod m Matrix A to the mod m Matrix or Vector B.
Note: It is assumed that A is in lower triangular form, or that only the lower triangular part is relevant and the upper triangular part of A is completely ignored.
The mod m Matrix or Vector B must have the same number of rows as there are columns of A.
Application of forward substitution requires that m is prime, but in some cases it can be computed if m is composite. If it cannot be computed for m composite, an error message is returned.
The diagflag parameter is a boolean that indicates if the diagonal of the lower triangular Matrix is considered to be the identity (true), or used in the forward substitution (false). This option is most useful when applying forward substitution from a compact LU decomposition (see LUDecomposition), where the diagonal of the lower triangular factor is the identity, and is not explicitly stored.
The ForwardSubstitute function is used as one of the steps in the LUApply function.
This command is part of the LinearAlgebra[Modular] package, so it can be used in the form ForwardSubstitute(..) only after executing the command with(LinearAlgebra[Modular]). However, it can always be used in the form LinearAlgebra[Modular][ForwardSubstitute](..).
Construct and solve a lower triangular system.
p ≔ 97
A ≔ Mod⁡p,Matrix⁡4,4,i,j→ifj≤ithenrand⁡else0end if,integer:
B ≔ Mod⁡p,Matrix⁡4,2,i,j→rand⁡,integer:
X ≔ Copy⁡p,B:
Lower triangular system with assumed diagonal of 1.
A ≔ Mod⁡p,Matrix⁡4,4,i,j→ifj<ithenrand⁡else0end if,float8:
B ≔ Mod⁡p,Vectorcolumn⁡4,i→rand⁡,float8:
Download Help Document