--> kill(all);

O conjunto v serĂ¡ ortogonalizado

--> v:[[1,0,-1,0],[0,0,0,1],[0,-1,0,0]]$display(v)$

--> load(eigen);

--> define(proj(u,w),(inprod(u,w)/inprod(w,w))[1][1]*w);

--> proj(v[1],v[2]);

--> orto(v):=block
(
 [n,i],
 n:length(v),
 w[1]:v[1],
 for i:2 thru n do
 (
   w[i]:v[i]-sum(proj(v[i],w[j]),j,1,i-1)
 ),
 for i:1 thru n do
 (
   display(w[i])
 ),
 w
);

--> Q:orto(v)$

--> for i:1 thru length(v) do display(Q[i])$


Created with wxMaxima.