> restart:
> with(LinearAlgebra):
> L:=<<L11,L21>|<L12,L22>>;
> U:=<u[1],u[2]>;
> Z:=L.U;
> S:=<F(Z[1]),F(Z[2])>;
> J:=array(1..2,1..2):
> for i from 1 to 2 do
>   for j from 1 to 2 do
>     J[i, j] := diff(S[i],u[j]);
>   od:
> od:
> print(J);
> H:=array(1..2,1..2,1..2):
> for i from 1 to 2 do
>   for j from 1 to 2 do
>     for k from 1 to 2 do
>       H[i, j, k] := diff(diff(S[i],u[j]),u[k]);
>     od:
>   od:
> od:
> print(H);
> L.Transpose(L);

                               [L11    L12]
                          L := [          ]
                               [L21    L22]


                                  [u[1]]
                             U := [    ]
                                  [u[2]]


                           [L11 u[1] + L12 u[2]]
                      Z := [                   ]
                           [L21 u[1] + L22 u[2]]


                         [F(L11 u[1] + L12 u[2])]
                    S := [                      ]
                         [F(L21 u[1] + L22 u[2])]


        [D(F)(L11 u[1] + L12 u[2]) L11 ,

        D(F)(L11 u[1] + L12 u[2]) L12]

        [D(F)(L21 u[1] + L22 u[2]) L21 ,

        D(F)(L21 u[1] + L22 u[2]) L22]


  array(1 .. 2, 1 .. 2, 1 .. 2, [

                          2
        (1, 1, 1) = %2 L11

        (1, 1, 2) = %2 L12 L11

        (1, 2, 1) = %2 L12 L11

                          2
        (1, 2, 2) = %2 L12

                          2
        (2, 1, 1) = %1 L21

        (2, 1, 2) = %1 L22 L21

        (2, 2, 1) = %1 L22 L21

                          2
        (2, 2, 2) = %1 L22

        ])

          (2)
  %1 := (D   )(F)(L21 u[1] + L22 u[2])

          (2)
  %2 := (D   )(F)(L11 u[1] + L12 u[2])


               [      2      2                        ]
               [   L11  + L12        L11 L21 + L12 L22]
               [                                      ]
               [                           2      2   ]
               [L11 L21 + L12 L22       L21  + L22    ]

> D2:=array(1..2,1..2,1..2):
> for i from 1 to 2 do
>   for j from 1 to 2 do
>     for k from 1 to 2 do
>       D2[i, j, k] := H[k, j, i];
>     od:
>   od:
> od:
> print(D2);

  array(1 .. 2, 1 .. 2, 1 .. 2, [

                          2
        (1, 1, 1) = %2 L11

                          2
        (1, 1, 2) = %1 L21

        (1, 2, 1) = %2 L12 L11

        (1, 2, 2) = %1 L22 L21

        (2, 1, 1) = %2 L12 L11

        (2, 1, 2) = %1 L22 L21

                          2
        (2, 2, 1) = %2 L12

                          2
        (2, 2, 2) = %1 L22

        ])

          (2)
  %1 := (D   )(F)(L21 u[1] + L22 u[2])

          (2)
  %2 := (D   )(F)(L11 u[1] + L12 u[2])

> 
