ConstantLinearDependence(R, F)

rdeefx.spad line 32 [edit on github]

ConstantLinearDependence(R, F) supports solving linear systems with coefficients in Expression(R) over constants. The parameter ld to each function is a list of derivations to use. By definition element f from Expression(R) is a constant if for each d in ld we have d(f) = 0. We assume that inputs are normalized in such a way that field of constants is generated by constant kernels.

constant_subspace : (List(Vector(F)), List(Mapping(F, F))) -> Record(transform : Matrix(F), basis : List(Vector(F)))

constant_subspace(b, ld) returns [M, nb] such that nb is basis of subspace spanned by b over F consistng of vectors with constant coordinates. M is the transformation matrix, i.e. mnb = M mb where mb (mnb respectively) is matrix having b (nb respectively) as rows.

linearDependenceOverConstants : (Vector(F), List(Mapping(F, F))) -> Union(Vector(F), "failed")

linearlyDependenceOverConstants([v1, ..., vn], ld) returns [c1, ..., cn] if c1*v1 + ... + cn*vn = 0 and not all the ci's are 0, "failed" if the vi's are linearly independent over constants.

linearlyDependentOverConstants? : (Vector(F), List(Mapping(F, F))) -> Boolean

linearlyDependentOverConstants?([v1, ..., vn], ld) returns true if the vi's are linearly dependent over constants, false otherwise.

nullSpaceOverConstants : (Matrix(F), List(Mapping(F, F))) -> List(Vector(F))

nullSpaceOverConstants(A, ld) returns basis of the homogeneous system A*vc = 0 where vc is a vector of constants.

particularSolutionOverConstants : (Matrix(F), Vector(F), List(Mapping(F, F))) -> Union(Vector(F), "failed")

solveLinearlyOverConstants([v1, ..., vn], u, ld) returns [c1, ..., cn] such that c1*v1 + ... + cn*vn = u, "failed" if no such rational numbers ci's exist.

particularSolutionOverConstants : (Vector(F), F, List(Mapping(F, F))) -> Union(Vector(F), "failed")

particularSolutionOverConstants([v1, ..., vn], u, ld) returns [c1, ..., cn] such that c1*v1 + ... + cn*vn = u, "failed" if no such constants numbers ci's exist.

reducedSystem : (Matrix(F), List(Mapping(F, F))) -> Matrix(F)

reducedSystem(A, ld) returns a matrix of constants B such that A x = 0 and B x = 0 have the same solutions over constants.

reducedSystem : (Matrix(F), Vector(F), List(Mapping(F, F))) -> Record(mat : Matrix(F), vec : Vector(F))

reducedSystem(A, v, ld) returns matrix of constants B and vector of constants w such that A x = v and B x = w have the same solutions over constants.

solveLinearOverConstants : (Matrix(F), Vector(F), List(Mapping(F, F))) -> Record(particular : Union(Vector(F), "failed"), basis : List(Vector(F)))

solveLinearOverConstants([v1, ..., vn], u, ld) returns solution of the system c1*v1 + ... + cn*vn = u and and a basis of the associated homogeneous system c1*v1 + ... + cn*vn = 0

solveLinearOverConstants : (Vector(F), F, List(Mapping(F, F))) -> Record(particular : Union(Vector(F), "failed"), basis : List(Vector(F)))

solveLinearOverConstants([v1, ..., vn], u, ld) returns solution of the system c1*v1 + ... + cn*vn = u and and a basis of the associated homogeneous system c1*v1 + ... + cn*vn = 0