1 | initial version |

A vector `V`

is in the span of the colomns of a matrix `M`

if, and only if, the equation $MX=V$ has a solution. Here is an example:

```
sage: M = matrix([[1,2,3],[3,4,5],[5,6,7],[6,7,8]]) ; M
[1 2 3]
[3 4 5]
[5 6 7]
[6 7 8]
sage: V = vector([3,7,11,13])
sage: M.solve_right(V)
(1, 1, 0)
```

So in this case, `V`

is the sum of the first and second column of M:

```
sage: M.column(0)+M.column(1) == V
True
```

However:

```
sage: V = vector([1,2,3,4])
sage: M.solve_right(V)
ValueError: matrix equation has no solutions
```

So, in this case `V`

is not in the span of the columns of `M`

.

To deal with such exception, you can define:

```
sage: def is_in_span(M,V):
....: try:
....: M.solve_right(V)
....: return True
....: except ValueError:
....: return False
```

You have:

```
sage: V = vector([3,7,11,13])
sage: is_in_span(M,V)
True
sage: V = vector([1,2,3,4])
sage: is_in_span(M,V)
False
```

2 | No.2 Revision |

A vector `V`

is in the span of the colomns of a matrix `M`

if, and only if, the equation $MX=V$ has a solution. Here is an example:

```
sage: M = matrix([[1,2,3],[3,4,5],[5,6,7],[6,7,8]]) ; M
[1 2 3]
[3 4 5]
[5 6 7]
[6 7 8]
sage: V = vector([3,7,11,13])
sage: M.solve_right(V)
(1, 1, 0)
```

So in this case, `V`

is the sum of the first and second column of M:

```
sage: M.column(0)+M.column(1) == V
True
```

You can see which columns contribute to the solution with:

```
sage: M.solve_right(V).nonzero_positions()
[0, 1]
```

However:

```
sage: V = vector([1,2,3,4])
sage: M.solve_right(V)
ValueError: matrix equation has no solutions
```

So, in this case `V`

is not in the span of the columns of `M`

.

To deal with such exception, you can define:

```
sage: def is_in_span(M,V):
....: try:
....: M.solve_right(V)
....: return True
....: except ValueError:
....: return False
```

You have:

```
sage: V = vector([3,7,11,13])
sage: is_in_span(M,V)
True
sage: V = vector([1,2,3,4])
sage: is_in_span(M,V)
False
```

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.