# ConstantLinearDependence(R, F)¶

rdeefx.spad line 32 [edit on github]

R: Join(IntegralDomain, Comparable)

F: FunctionSpace R

`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(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(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(F -> F)) -> Boolean
`linearlyDependentOverConstants?([v1, ..., vn], ld)`

returns`true`

if the`vi`

`'s`

are linearly dependent over constants,`false`

otherwise.

- nullSpaceOverConstants: (Matrix F, List(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(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(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(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(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(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(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`