[comp.sys.handhelds] HP28: Vector spaces

wscott@EN.ECN.PURDUE.EDU (Wayne H Scott) (03/14/90)

Posted for a friend:

From: Philip Peleties  dominop@ec.ecn.purdue.edu

      Gram-Schmidt Process for finding orthonormal basis of
         finite-dimensional vector spaces.


Objective: Compute an orthonormal basis of a finite-dimensional
           real vector space V.

Method:    Motified Gram-Schmidt process on a basis of V (see pp.
           141, "Applied Linear Algebra", Second Edition, 1977, by Ben
           Noble, James W. Daniel, Prentice-Hall, Inc., Englewood 
           Cliffs, NJ 07632.

Input:     a) A set of vectors representing a basis of V.
           b) The number of vectors.

Output:    An set of vectors comprising an orthonormal basis of V.

Notes:     An example of a possible input looks like:

           3:         [ 1  1 ]
           2:        [ 1  -1 ]
           1:                2

           then the output looks like:
    
           2:  [  .707106781188  .707106781188]
           1:  [  .707106781188  -.707106781188]

Bugs:      If the dot product is zero you get an error (!).
           If the basis is complex, then the resulting vectors
           are orthogonal but not orthonormal. I'll try to fix
           it one of these days ...


-----------------------------------------------------------------------

<< -> s
   << 1 s
      FOR j DUP DUP
DOT sqrt /
           IF 2 s j - 1 +
<=
           THEN 2 s j - 1
+
             FOR i DUP i
1 + ROLL SWAP DUP2
DOT * - i ROLLD
        NEXT
      END s ROLLD
    NEXT
  >>
>>


---------------------------------------------------------------------

Philip Peleties  dominop@ec.ecn.purdue.edu

_______________________________________________________________________________
Wayne Scott             |  INTERNET:   wscott@en.ecn.purdue.edu
Electrical Engineering  |  BITNET:     wscott%ea.ecn.purdue.edu@purccvm
Purdue University       |  UUCP:      {purdue, pur-ee}!en.ecn.purdue.edu!wscott