1 | initial version |

First an answer for the special case, then a more general answer.

In the special case of the example in the question, this helps:

```
sage: f(x) = 17
sage: g(x) = cos(x)^2
sage: h(x) = cos(2*x)
sage: h(x).simplify_trig()
2*cos(x)^2 - 1
```

Returning to the general question, one way to check for possible linear dependence relations, or for proofs of independence, would be to project to a finite-dimensional subspace and check there.

Form a vectors from the value of each function at a chosen collection of evaluation points.

If these vectors are linearly independent, then the functions are.

If there is a linear relation between these vectors, then it's worth checking if the linear relation in fact holds for the functions themselves.

Let us illustrate with the three functions above.

Choose a collection of evaluation points:

```
sage: xx = (0, pi/6, pi/4, pi/3, pi/2)
```

Form a vector for each function:

```
sage: u = vector(AA, [f(x) for x in xx])
sage: v = vector(AA, [g(x) for x in xx])
sage: w = vector(AA, [h(x) for x in xx])
```

To look for dependence relations, compute the left kernel of the matrix with these vectors as rows.

```
sage: m = matrix([u, v, w])
sage: K = m.kernel()
sage: K
Vector space of degree 3 and dimension 1 over Algebraic Real Field
Basis matrix:
[ 1 -34 17]
```

This suggests that maybe `f - 34*g + 17*h`

is zero.

Extract the coefficients:

```
sage: a, b, c = K.basis()[0]
sage: a, b, c
(1, -34, 17)
```

Check if the linear relation in fact holds for the functions:

```
sage: bool(a*f(x) + b*g(x) + c*h(x) == 0)
True
```

2 | No.2 Revision |

First an answer for the special case, then a more general answer.

In the special case of the example in the question, this helps:

```
sage: f(x) = 17
sage: g(x) = cos(x)^2
sage: h(x) = cos(2*x)
sage: h(x).simplify_trig()
2*cos(x)^2 - 1
```

Returning to the general question, one way to check for possible linear dependence relations, or for proofs of independence, would be to project to a finite-dimensional subspace and check there.

Form a vectors from the value of each function at a chosen collection of evaluation points.

If these vectors are linearly independent, then the functions are.

If there is a linear relation between these vectors, then it's worth checking if the linear relation in fact holds for the functions themselves.

Let us illustrate with the three functions above.

Choose a collection of evaluation points:

```
sage: xx = (0, pi/6, pi/4, pi/3, pi/2)
```

Form a vector for each function:

`sage: u = `~~vector(AA, [f(x) ~~vector([f(x) for x in xx])
sage: v = ~~vector(AA, [g(x) ~~vector([g(x) for x in xx])
sage: w = ~~vector(AA, [h(x) ~~vector([h(x) for x in xx])

To look for dependence relations, compute the left kernel of the matrix with these vectors as rows.

```
sage: m = matrix([u, v, w])
sage: K = m.kernel()
sage: K
Vector space of degree 3 and dimension 1 over Algebraic Real Field
Basis matrix:
[ 1 -34 17]
```

This suggests that maybe `f - 34*g + 17*h`

is zero.

Extract the coefficients:

```
sage: a, b, c = K.basis()[0]
sage: a, b, c
(1, -34, 17)
```

Check if the linear relation in fact holds for the functions:

```
sage: bool(a*f(x) + b*g(x) + c*h(x) == 0)
True
```

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.