> with (linalg):
Warning, the protected names norm and trace have been redefined and
unprotected

> Matrix_N:=matrix(1,3,[N[1],N[2],N[3]]);

                  Matrix_N := [N[1]    N[2]    N[3]]

> J:=(x[e]+X)*(transpose(Matrix_N)):
> F:=Int(evalm(J),X=0..h[e]);

                          h[e]
                         /     [(x[e] + X) N[1]]
                        |      [               ]
                  F :=  |      [(x[e] + X) N[2]] dX
                        |      [               ]
                       /       [(x[e] + X) N[3]]
                         0

> N[1](X):=  1-3*X/h[e]+2*(X/h[e])^2;

                                              2
                                    3 X    2 X
                     N[1](X) := 1 - ---- + -----
                                    h[e]       2
                                           h[e]

> N[2](X):=4*(X/h[e])*(1-X/h[e]);

                                     /     X  \
                                 4 X |1 - ----|
                                     \    h[e]/
                      N[2](X) := --------------
                                      h[e]

> N[3](X):=(X/h[e])*(-1+2*X/h[e]);

                                    /     2 X \
                                  X |-1 + ----|
                                    \     h[e]/
                       N[3](X) := -------------
                                      h[e]

> J:=evalm((x[e]+X)*(transpose(Matrix_N(X)))):
> F:=simplify(map(int, J,X=0..h[e]));

                        [     1/6 x[e] h[e]      ]
                        [                        ]
                   F := [1/3 h[e] (h[e] + 2 x[e])]
                        [                        ]
                        [ 1/6 h[e] (h[e] + x[e]) ]

