> restart:
> g:=S+x1^2-x2:
> T1:=(x1-mu1)/sigma1:
> T2:=(x2-mu2)/sigma2:
> g_tilde:=subs(x1=solve(T1=u1,x1), x2=solve(T2=u2,x2),g);
> dgtilde_u1:=diff(g_tilde,u1);
> dgtilde_u2:=diff(g_tilde,u2);
> eq_u1:=u1=lambda*dgtilde_u1;
> eq_u2:=u2=lambda*dgtilde_u2;
> eq_lambda:=g_tilde=0;
> 

                                         2
         g_tilde := S + (mu1 + u1 sigma1)  - mu2 - u2 sigma2


               dgtilde_u1 := 2 (mu1 + u1 sigma1) sigma1


                        dgtilde_u2 := -sigma2


           eq_u1 := u1 = 2 lambda (mu1 + u1 sigma1) sigma1


                     eq_u2 := u2 = -lambda sigma2


                                        2
      eq_lambda := S + (mu1 + u1 sigma1)  - mu2 - u2 sigma2 = 0

> sol:=allvalues(solve({eq_u1,eq_u2,eq_lambda},{u1,u2,lambda})):
> valnum:=mu1=1,sigma1=0.2,mu2=2,sigma2=5,S=5:
> nsol:=1:
> with(plots):
> gtildeNum:=subs(valnum,g_tilde):
> p1:=implicitplot(gtildeNum,u1=-3..3,u2=-3..5,grid=[81,81]):
> p2:=plot([[0,0],subs(sol[nsol],valnum,[u1,u2])],color=blue):
> display({p1,p2},scaling=constrained);
> expre:=subs(sol[nsol],[u1,u2,lambda]):
> d_mu1:=evalf(subs(valnum,diff(expre,mu1))):
> d_mu2:=evalf(subs(valnum,diff(expre,mu2))):
> d_sigma1:=evalf(subs(valnum,diff(expre,sigma1))):
> d_sigma2:=evalf(subs(valnum,diff(expre,sigma2))):

> DthetaU_ref:=<<d_mu1[1..2]>|<d_sigma1[1..2]>|<d_mu2[1..2]>|<d_sigma2[1
> ..2]>>;
> DthetaLambda_ref:=<<d_mu1[3]>|<d_sigma1[3]>|<d_mu2[3]>|<d_sigma2[3]>>;
> G_:=<dgtilde_u1,dgtilde_u2>;
> G_num:=evalf(subs(sol[nsol],valnum,G_));
> dgtilde_mu1:=diff(g_tilde,mu1); 
> dgtilde_mu2:=diff(g_tilde,mu2);
> dgtilde_sigma1:=diff(g_tilde,sigma1);
> dgtilde_sigma2:=diff(g_tilde,sigma2);
> K_:=<dgtilde_mu1,dgtilde_sigma1,dgtilde_mu2,dgtilde_sigma2>;
> K_num:=evalf(subs(sol[nsol],valnum,K_));
> E_:=<<diff(G_[1],u1),diff(G_[2],u1)> |
> <diff(G_[1],u2),diff(G_[2],u2)>>;
> E_num:=evalf(subs(sol[nsol],valnum,E_));
> F_:=< <diff(G_[1],mu1),diff(G_[2],mu1)> |
> <diff(G_[1],sigma1),diff(G_[2],sigma1)> |
> <diff(G_[1],mu2),diff(G_[2],mu2)> |
> <diff(G_[1],sigma2),diff(G_[2],sigma2)> >;
> F_num:=evalf(subs(sol[nsol],valnum,F_));

  DthetaU_ref :=

        [-0.093037754 , -0.30232293 , 0.01550505311 , 0.024653266]

        [0.3876263277 , -0.04868722067 , -0.1987751757 ,

        -0.1570539939]


  DthetaLambda_ref :=

        [-0.07752526555 , 0.009737447034 , 0.03975503513 ,

        0.06321109540]


                        [2 (mu1 + u1 sigma1) sigma1]
                  G_ := [                          ]
                        [         -sigma2          ]


                                 [0.394975861]
                        G_num := [           ]
                                 [    -5.    ]


                  dgtilde_mu1 := 2 mu1 + 2 u1 sigma1


                          dgtilde_mu2 := -1


               dgtilde_sigma1 := 2 (mu1 + u1 sigma1) u1


                        dgtilde_sigma2 := -u2


                          [ 2 mu1 + 2 u1 sigma1  ]
                          [                      ]
                          [2 (mu1 + u1 sigma1) u1]
                    K_ := [                      ]
                          [          -1          ]
                          [                      ]
                          [         -u2          ]


                                [ 1.97487931  ]
                                [             ]
                                [-0.1240258758]
                       K_num := [             ]
                                [     -1.     ]
                                [             ]
                                [-0.7950074135]


                              [        2     ]
                        E_ := [2 sigma1     0]
                              [              ]
                              [    0        0]


                                 [0.08    0.]
                        E_num := [          ]
                                 [ 0.     0.]


                [2 sigma1    4 u1 sigma1 + 2 mu1    0     0]
          F_ := [                                          ]
                [   0                 0             0    -1]


                       [0.4    1.949758610    0.    0. ]
              F_num := [                               ]
                       [0.         0.         0.    -1.]

> M:=Matrix(3,3):
> with(LinearAlgebra):
> M[1..2,1..2]:=-DiagonalMatrix([1,1])+lambda*E_:
> M[1..2,3]:=Transpose(G_):
> M[3,1..2]:=G_:
> B:=Matrix(3,4):
> B[1..2,1..4]:=-lambda*F_:
> B[3,1..4]:=-K_:
> M;

       [                    2                                 ]
       [-1 + 2 lambda sigma1  , 0 , 2 (mu1 + u1 sigma1) sigma1]
       [                                                      ]
       [0 ,                    -1 ,                    -sigma2]
       [                                                      ]
       [2 (mu1 + u1 sigma1) sigma1 ,        -sigma2 ,        0]

> B;

        [-2 lambda sigma1 , -lambda (4 u1 sigma1 + 2 mu1) , 0 , 0]

        [0 , 0 , 0 , lambda]

        [-2 mu1 - 2 u1 sigma1 , -2 (mu1 + u1 sigma1) u1 , 1 , u2]

> evalf(subs(sol[nsol],valnum,map(factor,MatrixInverse(M).B)));

        [-0.09303775016 , -0.3023228708 , 0.01550505305 ,

        0.02465326427]

        [0.3876263262 , -0.04868722102 , -0.1987751758 ,

        -0.1570539940]

        [-0.07752526524 , 0.009737444204 , 0.03975503516 ,

        0.06321109544]

> DthetaU_ref;
> DthetaLambda_ref;

        [-0.093037754 , -0.30232293 , 0.01550505311 , 0.024653266]

        [0.3876263277 , -0.04868722067 , -0.1987751757 ,

        -0.1570539939]


        [-0.07752526555 , 0.009737447034 , 0.03975503513 ,

        0.06321109540]

> 
