## `linalg::intBasis` -- basis for the intersection of vector spaces

#### Introduction

`linalg::intBasis``(S1, S2...)` returns a basis for the intersection of the vector spaces spanned by the vectors in S1, S2, ....

#### Call(s)

`linalg::intBasis(S1, S2...)`

#### Parameters

`S1, S2...` | - | either sets or lists of n-dimensional vectors (a vector is an n x 1 or 1 x n matrix of a domain of category `Cat::Matrix`)

#### Returns

a set or a list of vectors, according to the domain type of the parameter `S1`.

#### Related Functions

`linalg::basis`, `linalg::sumBasis`

#### Details

- The domain type of the vectors of the returned set is the domain type of the first parameter `S1`.
- A basis for the zero-dimensional space is the empty set or empty list, respectively.
- The given vectors must be defined over the same component ring which must be a field, i.e., a domain of category `Cat::Field`.

#### Example 1

We define three vectors v[1],v[2],v[3] in Q^2:

    >> MatQ := Dom::Matrix(Dom::Rational):
       v1 := MatQ([[3, -2]]); v2 := MatQ([[1, 0]]); v3 := MatQ([[5, -3]])

                                     +-     -+
                                     | 3, -2 |
                                     +-     -+

                                     +-    -+
                                     | 1, 0 |
                                     +-    -+

                                     +-     -+
                                     | 5, -3 |
                                     +-     -+

A basis for the vector space V1 intersect V2 intersect V3 with V1=<{v[1],v[2],v[3]}>, V2=<{v[1],v[3]}> and V3=<{v[1]+v[2],v[2],v[1]+v[3]}> is:

    >> linalg::intBasis([v1, v2, v3], [v1, v3], [v1 + v2, v2, v1 + v3])

                             -- +-     -+  +-    -+ --
                             |  | 4, -2 |, | 1, 0 |  |
                             -- +-     -+  +-    -+ --

#### Example 2

The intersection of the two vector spaces spanned by the vectors in `S1` and `S2`, respectively:

    >> S1 := {matrix([[1, 0, 1, 0]]), matrix([[0, 1, 0, 1]])};
       S2 := {matrix([[1, 2, 1, 1]]), matrix([[-1, -2, 1, 0]])}

                        { +-          -+  +-          -+ }
                        { | 0, 1, 0, 1 |, | 1, 0, 1, 0 | }
                        { +-          -+  +-          -+ }

                       { +-            -+  +-          -+ }
                       { | -1, -2, 1, 0 |, | 1, 2, 1, 1 | }
                       { +-            -+  +-          -+ }

is the zero-dimensional space:

    >> linalg::intBasis(S1, S2)

                                        {}

Do you have questions or comments?
Copyright © SciFace Software GmbH & Co. KG 2000