[ < ][]   [Contents][Index][ ? ]

4.1 Automatic sensitivity computation

An obvious advantage of having acces to the Jacobian matrices along the system trajectory concerns automatic sensitivity analyses, as either:

This is declared in Zinit as:

! -------------
! Sensitivities
! -------------
Sensy_to_var
< var: eta_pray, pert: INIT;
  var: eta_pred, pert: INIT;
>;

Each variable at origin of a perturbation is declared as var:, and the type of perturbation in pert:. Here, INIT conditions are only allowed because the two variables are states variables. For transfers, pert: pulse corresponds to an initial pulse, pert: step_resp and pert: step_eff to initial steps, the difference between _resp (response form) and _eff (effect form) concerns the diagonal only of the sensitivity matrix (see Feedback gains in non-linear models).

Non initial perturbation can also be asked for:

  Sensy_to_var
  <
!*     var: eta_courant_L, pert: init at 100;
!*     var: ff_T_czcx,     pert: pulse at 100 every 20;
!*     var: ff_Psi_Tczcx,  pert: step_eff;
!*     var: ff_Psi_Tczcx,  pert: step_Resp at 10 every 100;
! *** premiers tests identiques a lorhcl.ref
    var: ff_courant_L , pert: step_eff;
    var: ff_T_czcx    , pert: step_eff;
    var: ff_Psi_Tczcx , pert: step_eff;
    var: ff_Psi_Tsz   , pert: pulse at 100 every 50;
  >;

In this example taken from ‘lorhcl’, a sensitivity can increase so as to trespass the Fortran capacity, so that each sensitivity vector (matrix column) can be reset at some time-increment at III every JJJ;

It is noteworthy that these sensitivity analyses are not based on difference between two runs with different initial states or parameter values, but on the formal derivatives of the model. This method is not only numerically robust, but is also rigorously funded as based on the TLS of the model(5).

If the dimetaphi sequence is built by the users, he should declare the number of perturbing variables as nxp=:

      parameter (nxp=np,nyp=0,nzp=0);

here, all state variables are considered as perturbing variables.

The sensitivity vectors are output in the result files ‘sens.data’ for cells and ‘sigma.data’ for transfers. In those files the first column corresponds again with time, and the other columns are relative sensitivities of the cell states (in ‘sens.data’) and transfers (in ‘sigma.data’) with respect to the initial value of the perturbed state.

In our predator-prey example, the second column of ‘sens.data’ will contain the derivative of η1(t) with respect to η1(t = 0). Drawing the second column of ‘sens.data’ against the first one gives the time evolution of the sensitivity of eta-pred to a change in the initial value of eta-pray. One can check in that it is set to 1 at t = 0:

#    Sensy_to: eta_pray         3        eta_pred         5       
# time \\  of: eta_pray     eta_pred     eta_pray     eta_pred    
  0.00000E+00  1.00000E+00  0.00000E+00  0.00000E+00  1.00000E+00
  1.00000E-02  9.90868E-01  1.11905E-02 -1.26414E-02  9.98859E-01

The two last columns are the state sensitivity to a change in initial conditions of the number of predators.

In the same way, the j+1th column of ‘sigma.data’ will be the derivative of ϕj(t) with respect to ηi(t = 0). Here:

#    Sensy_to: eta_pray     eta_pred    
# time \\  of: ff_interact  ff_interact 
  0.00000E+00  1.60683E+00  8.47076E-01
  1.00000E-02  1.59980E+00  8.18164E-01

the unique transfer variable gives rise to two sensitivity columns.

Sensitivity studies are usefull to assess the predictability properties of the corresponding system.


[ < ][]   [Contents][Index][ ? ]

4.1.1 Sensitivity to a parameter

A forward sensitivity to a parameter will be computed when specified as described in Parameters. For example, suppose that the sensitivity to an initial change in the apar parameter of the predator model is of interest.

The sensitivity calculs is turned on as a forward parameter specified on the Free_parameter list:

Free_parameter: [fwd: apar, cpar];

The result are in ‘sensp.data’ for cells and ‘sigmap.data’ for transfers.

#    Sensy_to: pi_prandtl       3            4        pi_rayleigh_     6
# time \\  of: eta_courant_ eta_T_czcx   eta_T_sz     eta_courant_ eta_T
  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.00000E+00  0.000
  2.00000E-03 -4.77172E-03 -3.99170E-05  3.55971E-05 -9.94770E-05 -1.004

In the above example from ‘lorhcl’ sensitivity of the three states with respect to an initial change in two parameters are independantly given (first line also numbers the column to easy gnuplot using).


[ < ][]   [Contents][Index][ ? ]

4.1.2 Advance matrix sensitivity

It is possible to look at the sensitivity of the matrix of advance in states space (the matrix aspha) with regard to a parameter. The parameter must be accounted for in the parameter number and be in the parameter list, flagged as the matrix mx parameter, like in

Free_parameter: [mx: apar], cpar;

This feature is associated with a selecting flag, ‘dPi_aspha’. One gets the result in the matrix d_pi_aspha(.,.) of dimension (np,np).

This matrix may be used to compute other quantities, for example it may be used to compute the sensitivity of the eigenvalues of the state-advance matrix with regard to the [fwd] parameter. These additional computations have to be programmed by the user in ‘zsteer’ with matrices declared and initialized in ‘zinit’. An example is given in the example ‘lorhcl’ provided with the Miniker installation files, following a method proposed by Stephane Blanco.


Footnotes

(5)

For a short introduction to automatic sensitivity analysis, see the document:
http://lmd.jussieu.fr/zoom/doc/sensibilite.ps, in French, or ask for the more complete research document to a member of the TEF-ZOOM collaboration


[Contents][Index][ ? ]