Miniker 102 manual: 4.1 Automatic sensitivity computation

[ < ] | [ > ] |  | [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:

- the sensitivity of all variables to perturbation in the initial condition of one state variable;
- the same sensitivities to an initial pulse (or step) on a transfer;
- the same sensitivities to a series of pulses (or steps) on a transfer;
- the same for a change in a parameter, eventually during the run;
- the sensitivity of the matrix of advance in state space to a change in a parameter.

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.

[Contents] | [Index] | [ ? ]

This document was generated by a tester on a sunny day using texi2html.