9d0f5447e3f9747922afb8357842328cc7cc1f6c
[scilab.git] / scilab / modules / linear_algebra / macros / householder.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2008 - INRIA
3 //
4 // Copyright (C) 2012 - 2016 - Scilab Enterprises
5 //
6 // This file is hereby licensed under the terms of the GNU GPL v2.0,
7 // pursuant to article 5.3.4 of the CeCILL v.2.1.
8 // This file was originally licensed under the terms of the CeCILL v2.1,
9 // and continues to be available under such terms.
10 // For more information, see the COPYING file which you should have received
11 // along with this program.
12
13 function u=householder(v,w)
14     //Syntax
15     //u=householder(v [,w])
16     //Description
17     //given 2 column vectors v w of same size householder(v,w) returns a unitary
18     //column vector u, such that (eye-2*u*u')*v is proportional to w.
19     //(eye-2*u*u') is the orthogonal Householder reflexion matrix
20     //
21     // w default value is eye(v). In this case vector (eye-2*u*u')*v is the
22     // vector  eye(v)*(+-norm(v))
23     [lhs,rhs]=argn(0)
24     if rhs<2 then w=eye(v),end
25     a=-sqrt((v'*v)/(w'*w))
26     u=v+a*w
27     u=u/norm(u)
28 endfunction