Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I know that for a vector space $\mathbb R^n$ one can use the Gram-Schmidt process to construct its basis. But what if the vector space is over some arbitrary field? I am thinking of the following:

  1. Pick an arbitrary vector in $V$, label as $v_1$
  2. Pick another arbitrary vector in $V$. From this deduct the component in $v_1$. If this gives the zero vector then do it again with another arbitrary vector, otherwise take this as $v_2$ .
  3. Repeat the above until we have found $n$ linearly independent vectors. (Given that $\dim V=n < \infty$); otherwise, we go on forever.

(Basically Gram-Schmidt.)

This doesn't seem like a particularly efficient algorithm especially for large $n$, are there any better suggestions? Also, I am not sure that my steps are necessarily valid. Is the scalar product -- that obtains the component of an arbitrary vector in the direction of a $v_i$ already in the set -- defined for vector spaces over arbitrary fields?


share|cite|improve this question
You can define a scalar product over arbitrary fields, but it doesn't always work like you might expect. For instance, in $\mathbb F_2^n$ over $\mathbb F_2$ with the canonical scalar product given by the sum over the products of the components, vectors with an even number of $1$s are self-orthogonal, so you can't normalize them and you can't subtract a "component along them" in the usual way. – joriki Sep 10 '11 at 13:42
@joriki: Thanks.(btw, what is $\mathbb F_2$?) So this algorithm doesn't work? Is there an algorithm for constructing a basis? – gareth Sep 10 '11 at 13:47
If you just want a basis you don't need Gram–Schmidt. That's for finding an orthonormal basis. – Hans Lundmark Sep 10 '11 at 13:49
Just keep picking arbitrary vectors. If you get one which is linearly dependend on the ones you already have, discard it and try again. And so on, until you have a maximal linearly independent set, i.e., a basis. – Hans Lundmark Sep 10 '11 at 13:57
@Hans: The two are related in that "usually" the easiest way to tell whether the vectors are linearly independent is to make them orthonormal. – joriki Sep 10 '11 at 14:31
up vote 2 down vote accepted

You don't need Gram-Schmidt. Start with a generating set or keep adding vectors to a set and use Gaussian elimination to remove linear dependences.

share|cite|improve this answer

Choose $x_1\neq0$ which is l.i. then if $x_1$ generates V it is a basis and you're done.

If it is not a basis there is a $x_2\in V\setminus <x_1>$ and $x_1,x_2$ are l.i, if $x_1,x_2$ generates you got your basis,....

... ...

if not, choose a $x_{n+1}\in V\setminus <x_1,....,x_n>$ , ${x_1,...,x_{n+1}}$ are l.i. then if ${x_1,...,x_{n+1}}$ generate you've got your basis.

If the dimension is finite the algoritm must stop.

With I mean the generated subspace by S.

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.