hessian
The hessian command is very similar to the newopt command
in its usage and arguments. It serves to generate a hessian only for a
given function (currently the zopt function only).
The arguments to the hessian function are given in the table
below:
Argument |
Argument type |
Mandatory |
Default |
To specify |
function= |
name of the function |
Yes |
- |
type of problem to be
optimised |
verbose= |
Boolean
|
No |
no |
level of output |
method= |
name of method |
No |
finite_difference |
procedure to calculate the hessian (see below) |
hessian= |
name |
Yes |
- |
name of output hessian |
var_list= |
string |
No |
- |
specific hessian information |
threshold= |
real |
No |
0.2 or 0.001 (see below) |
threshold-value for finite-differencing
selected degrees of freedom (active only with method=select_hessian and method=select_gradient.) |
restart= |
keyword |
No |
no |
restarting an interrupted finite-difference hessian calculation |
del= |
real |
No |
0.001 |
displacement for finite-differencing formulae |
For the function and verbose arguments see the corresponding arguments to the
newopt command.
The method argument specifies the method by which the hessian is
calculated. Valid options are given in the table below.
Method |
To do what |
unit |
generate unit hessian for all variables |
finite_difference |
finite difference all variables using the single-point
formula |
finite_difference_2 |
finite difference all variables using the two-point
formula |
analytic |
analytic hessian (only with theory=gamess) |
guess |
simple guess for diagonal elements, optionally
augmented with input diagonal elements and/or finite-differencing
specific variables only (see the var_list argument) |
modify |
modify parts of the hessian given input diagonal elements and/or finite-differencing
specific variables only (see the var_list argument) |
select_hessian |
finite-difference selected degrees of freedom on
the basis of contributions to hessian eigenvectors |
select_gradient |
finite-difference selected degrees of freedom on
the basis of contributions to the gradient |
finite_difference_eigenmodes |
modify an existing hessian by
finite-differencing along specified hessian eigenmodes (the modes to
be treated are specified in the var_list argument) |
The default of the method argument is finite_difference.
The var_list argument may be used to pass specific information
concerning variables into the hessian command. It is a string
consisting of pairs of information. The first member of the pair is an
integer, giving the rank-number of the variable (first variable has
rank-number 1). The second member may be a number or a keyword. If it
is a number the diagonal hessian element for the variable specified is
set to this number. The keyword may be fd or fd2, which
will cause a finite differencing of the specified variable only, by the
one-, respectively two-point formula. The variables may be addressed
in any order, and the list need not be exhaustive. To cause the
diagonal element of variable 2 to be 0.34, and finite-differencing
variables 5 and 8 by the two-, respectively one-point formula, input
the string (note the brackets around each pair):
{2 0.34} {5 fd2} {8 fd}
The threshold argument specifies the minimum value of a
contribution to a hessian eigenvector or the gradient above which a
finite-differencing will be performed if the method=select_hessian option is chosen. In the case of the hessian
eigenvectors being considered, the var_list argument lists the hessian eigenvectors selected, rather
than the degrees of freedom as in the method=modify option. Thus
hessian [...] hessian=h method=select_hessian threshold=0.1 \
var_list= {1 2}
will perform a finite-differencing of all degrees of freedom which
have a contribution larger than 0.1 in the lowest 2 eigenvectors of
hessian h.
The select_gradient option ignores the var_list argument
hessian [...] hessian=h method=select_hessian threshold=0.01
will perform a finite-differencing of all degrees of freedom which
have a contribution larger than 0.01 to the gradient.
The default value of threshold is 0.2 with the select_hessian option, and 0.001 with the select_gradient option.
NOTES: - The finite differencing fills both the row and the column
belonging to the specified variable, overwriting whatever values were
there.
- A string to serve as var_list argument may be generated
automatically from the z-matrix input. See the z_create .
command.
- Information on rank-numbers higher than the dimension is
ignored, but a warning is issued on output.
|