O15-C920 PV est le projecteur orthogonal sur la droite engendrée par V. > restart:with(linalg): Warning, new definition for norm Warning, new definition for trace > v:=matrix(3,1,[a,b,c]); [a] [ ] v := [b] [ ] [c] > pro:=proc(v,n) > evalm(v&*transpose(v)/(norm(col(v,1),2))^2);end; pro := proc(v, n) evalm(v `&*` transpose(v)/norm(col(v, 1), 2)^2) end > m:=pro(v,3);symetrie:=evalm(2*m-diag(1$3)); [ 2 ] [ a a b a c ] [---- --- --- ] [ %1 %1 %1 ] [ ] [ 2 ] m := [a b b b c ] [--- ---- --- ] [%1 %1 %1 ] [ ] [ 2 ] [a c b c c ] [--- --- ----] [%1 %1 %1 ] 2 2 2 %1 := | a | + | b | + | c | [ 2 ] [ a a b a c ] [2 ---- - 1 2 --- 2 --- ] [ %1 %1 %1 ] [ ] [ 2 ] symetrie := [ a b b b c ] [ 2 --- 2 ---- - 1 2 --- ] [ %1 %1 %1 ] [ ] [ 2 ] [ a c b c c ] [ 2 --- 2 --- 2 ---- - 1] [ %1 %1 %1 ] 2 2 2 %1 := | a | + | b | + | c | > nullspace(m);colspace(m); {[- c/a, 0, 1], [- b/a, 1, 0]} {[1, b/a, c/a]} Le projecteur orthogonal sur F est la somme des projecteurs orthogonaux sur les p droites engendrées par les Vk : > truc:=proc(L,p) > local res,k,m; > res:=matrix(n,n,0); > for k from 1 to p do m:=transpose(matrix(1,n,col(L,k)));res:=evalm(res+pro(m,n)) od; > res;end: > n:=5:L:=matrix(5,3,[1,1,1,1,2,-1,1,0,3,0,4,0,3,-1,-1]); [1 1 1] [ ] [1 2 -1] [ ] L := [1 0 3] [ ] [0 4 0] [ ] [3 -1 -1] > pp:=truc(L,3);print(pp); pp := res [7/33 1/11 1/3 2/11 4/33] [ ] [ 23 ] [1/11 -- -1/6 4/11 8/33] [ 66 ] [ ] [1/3 -1/6 5/6 0 0 ] [ ] [ -2 ] [2/11 4/11 0 8/11 -- ] [ 11 ] [ ] [ -2 29 ] [4/33 8/33 0 -- -- ] [ 11 33 ] Un vecteur est dans F ssi il est invariant par le projecteur orthogonal sur F, donc on obtient un ensemble d' équations de F en prenant les lignes de la matrice pp-Id. > proj:=proc(L,p) > local pp; > pp:=truc(L,p); > rowspace(evalm(pp-diag(1$n))); > end: > proj(L,3); [ -3 ] {[0, 1, 1/5, -3/5, -2/5], [1, 0, -2/5, --, -1/5]} [ 10 ] >