ODE parameter identification
user defined problem

Specify the dimension n of the vector y here
n =   Important: 1 <= n <= 10!

Please write here the piece of code which computes the functions G1,...,Gn
which make up the explicit ode G(t,y,y',p)=0, G= (G1,...,Gn)T. They must have the structure
G(i) = -yp(i) + fi(t,y(1),...,y(n),p).
You must obey the
FORTRAN conventions with the restrictions of JAKEF, since we generate the variational equations from this using it.
You might use here variables i,j,k (e.g. for loops or counting), the logicals bool1, bool2 , bool3, a vector of 100 components v(.) , the variables h1,h2,h3,h4 (e.g. for intermediate calculations) which all are initialized with zero resp. false and the constants pi, e, sqrt2 (with their mathematical meaning).
You must not use as label the number 1 and any number >= 90000. There is a variable ires: if the current values of t,y, yp or p do not allow the evaluation of one of the G(i), then set ires=-1 and return. The code then will try smaller stepsizes in order to avoid a repetition of this.

Specify the number r of ode parameters p here: this must be in the range 1 to 20
r =

Specify the number of components of y for which you have data
and in the next field the list of the indices of these components. anzmess can be zero. In this case leave the field following this setting empty.

anzmess =
components have data with the indices
J =

Select two components of y for which you want plotting: index1=index2 is allowed, this produces one plot
index1 = Important index1 from 1,...,n !
index2 = Important: index2 from 1,...,n !

Specify the number m of fixed grid points Tk in the range 2 to 10 here
m =
and in the following line the values of these grid points. They must cover the range of your measurement data and must be strongly ascending!

Specify the precision parameters tolrel and smally here:
 tolrel =
smally =
The local discretization error will be bounded from above by
erri(t,p) <= tolrel × |yi(t,p)|+ tolrel × smally
at any internal grid point generated.

Select the maximum allowed stepsize hmax:
 hmax = Important: 0 < hmax <= (Tm-T1)/2 !

Select the initial stepsize hstart:
hstart = Important: 0 < hstart <= hmax !

Specify the maximal order allowed:
maxorder= Important: 1 <= maxorder <= 5

Specify the number mmess of measurement points here. This must be in the range [m*n+r, 100] or zero. If there are no measurements then write ''0'' here and leave the next field empty.
mmess =
and tabulate here your measurement data: this must be a list of mmess sublists, each one containing a time instance tmessi followed by nmess data which are taken as y-values with indices in J. You may write this as a continuous data stream. The time instances must not be ordered.

Here follows your description of constraints for the optimizer:
First you specify constraints on the components of y at the fixed grid points Tk. This is a list of m*n number pairs of the form (type,value). Type must be 0 or 1. For the first and the last grid point type=0 means that this component is a free optimization variable which can be used for improving the fit, and value is not used. However type=1 means that this y-value must take on the value ''value'', i.e. a fixed initial or end value. For the m-2 interior grid points the interpretation is this: type=0 and value=0 means continuity, type=0 and value=v means a jump discontinuity of ''v'' for this component and type=1 value=v means that this component must take the value ''v'' there. You must write the number pairs without parentheses and can use a continuous data stream covering several lines. For example, if you have no measurements but a BVP of a system of three ODE's and want to fix the boundary values at the left as 2,3,4 and on the right to -2,-3,-4 with m=2 then you write 1,2, 1,3, 1,4, 1,-2, 1,-3, 1,-4 here.

Here follow the constraints you might impose on the ODE parameters p
First you specify the number of simple bounds or fixed values (no more than 2r) to impose:


If this is not zero , then you must fill the following field with the corresponding number of triples index,type,value with index in the range [1,r], type in {-1,0,1} (1 means lower bound, 0 means fixed value, -1 means upper bound), and value a real number, where value is taken as lower bound, upper bound or fixed value.
For example 3,-1,7.6 means p(3) <= 7.6   4,0,1 means p(4)=1 and 1,1,0 means p(1) >= 0
You must write a separate line for every constraint

You may also impose a number of linear relations (no more than 40) between these parameters : first you specify the number of these relations here:
nl =
If nl is not zero, the you must type a table of a corresponding nl*(r+2) values a(i,j) i=1,..,r, b(j), type(j) , in the following textarea, with the meaning
i=1 to r a(i,j)p(i) REL b(j)

with REL = ''<='' for type(j)=-1, REL = ''='' for type(j)=0 and REL = ''>='' for type(j)=1.
Every constraint must begin on a separate line.

Finally, you must specify here the initial values for the optimization parameters, these are the ODE parameters and the initial values of y at the first m-1 fixed grid points (in this order). Hence you must write here r+n*(m-1) numbers
xstart=

Select your settings for the optimizer (DONLP2)
optimization parameter standard
my own settings:
desired final precision in parameters in [1.0e-7,1.0e-2]
   epsx=
allowed intermediate deviation for constraints >= 1.0e-4
   tau0=
desired maximal final violation of constraints in [1.0e-8,1.0e-2]
delmin=
amount of additional optimizer output: 0=none, 1=one line/step, 2=detailed,
3=very detailed
iolevel=

Warning!!! - This may take some time.

Click on "evaluate", in order to submit your input.

back to the theory page

 Back to the top!

01.06.2016