1 | initial version |

Some useful resources:

- Books on linear algebra from the PreTeXt calalog of free online interactive math books (see also the PreTeXt gallery
- Free online pdf book Computational mathematics with SageMath
- SageMath tutorial on linear algebra
- some questions about these
`r9`

and such constants are at listed in a comment at Ask Sage question 52904

But back to answering your question...

The variables:

```
sage: x, y, z, w = SR.var('x, y, z, w')
```

The equations (writing `== 0`

is not needed in order to solve):

```
sage: eqq = [x + 2*y + 2*z + 2*w, 2*x + 4*y + 6*z + 8*w, 3*x + 6*y + 8*z + 10*w]
```

The solutions (always give a name to anything you compute):

```
sage: sols = solve(eqq, x, y, z, w)
sage: sols
[[x == 2*r1 - 2*r2, y == r2, z == -2*r1, w == r1]]
```

Get the desired `V`

with

```
sage: sol = sols[0]
sage: sol
[x == 2*r1 - 2*r2, y == r2, z == -2*r1, w == r1]
sage: V = [s.rhs() for s in sol]
sage: V
[2*r1 - 2*r2, r2, -2*r1, r1]
```

or directly

```
sage: V = [s.rhs() for s in sols[0]]; V
[2*r1 - 2*r2, r2, -2*r1, r1]
```

The dimension of the space of solutions is the dimension of the kernel of the corresponding matrix.

Compute the matrix:

```
sage: vv = x, y, z, w
sage: a = matrix([[eq.coefficient(v) for v in vv] for eq in eqq])
sage: a
[ 1 2 2 2]
[ 2 4 6 8]
[ 3 6 8 10]
```

Dimension of the (right) kernel:

```
sage: a.right_kernel().dimension()
2
```

2 | No.2 Revision |

Some useful resources:

- Books on linear algebra from the PreTeXt calalog of free online interactive math books (see also the PreTeXt gallery
- Free online pdf book Computational mathematics with SageMath
- SageMath tutorial on linear algebra
- some questions about these
`r9`

and such constants are at listed in a comment at Ask Sage question 52904

But back to answering your question...

The variables:

```
sage: x, y, z, w = SR.var('x, y, z, w')
```

The equations (writing `== 0`

is not needed in order to solve):

```
sage: eqq = [x + 2*y + 2*z + 2*w, 2*x + 4*y + 6*z + 8*w, 3*x + 6*y + 8*z + 10*w]
```

The solutions ~~(always give a name ~~(tip: naming things you compute makes them easier to ~~anything you compute):~~reuse):

```
sage: sols = solve(eqq, x, y, z, w)
sage: sols
[[x == 2*r1 - 2*r2, y == r2, z == -2*r1, w == r1]]
```

Get the desired `V`

~~with~~with:

```
sage: sol = sols[0]
sage: sol
[x == 2*r1 - 2*r2, y == r2, z == -2*r1, w == r1]
sage: V = [s.rhs() for s in sol]
sage: V
[2*r1 - 2*r2, r2, -2*r1, r1]
```

or ~~directly~~directly:

```
sage: V = [s.rhs() for s in sols[0]]; V
[2*r1 - 2*r2, r2, -2*r1, r1]
```

The dimension of the space of solutions is the dimension of the kernel of the corresponding matrix.

Compute the matrix:

```
sage: vv = x, y, z, w
sage: a = matrix([[eq.coefficient(v) for v in vv] for eq in eqq])
sage: a
[ 1 2 2 2]
[ 2 4 6 8]
[ 3 6 8 10]
```

The kernel:

```
sage: E = a.right_kernel()
sage: E
Vector space of degree 4 and dimension 2 over Symbolic Ring
Basis matrix:
[ 1 0 -1 1/2]
[ 0 1 -2 1]
```

Dimension of the (right) kernel:

`sage: `~~a.right_kernel().dimension()
~~k = E.dimension()
sage: k
2

Basis of the kernel:

```
sage: B = E.basis()
sage: B
[
(1, 0, -1, 1/2),
(0, 1, -2, 1)
]
```

Linear combination of kernel basis vectors, similar to the one given by `solve`

:

```
sage: s, t = SR.var('s t')
sage: E.linear_combination_of_basis((2*(s - t), t))
(2*s - 2*t, t, -2*s, s)
```

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.