close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 13 years ago

Closed 13 years ago

#1030 closed doubt (fixed)

Error en definición de variables dependientes

Reported by: Ines Miranda Owned by: Pedro Gea
Priority: major Milestone: Maintenance
Component: ModelExcel Keywords: ModelExcel, variables dependientes
Cc:

Description

Hola,

he encontrado algo extraño en la definición de variables dependientes con el ModelExcel. Tengo definidas variables independientes con series que comienzan en diferentes fechas (unas en 1990, otras 2009, otras 2003,...).
Defino una variable dependiente como la suma de todas ellas y cuando voy a ver, me ha creado una serie que comienza en 2009 (la mayor de las fechas de inicio de todas ellas). Evidentemente, lo que yo esperaba que hiciera era el SetSum de las series y conseguir una serie con fecha de inicio, la menor de todas ellas.
Esto parec eun bug, no?

Gracias

Change History (1)

comment:1 Changed 13 years ago by Pedro Gea

Milestone: Maintenance
Resolution: fixed
Status: newclosed
Type: defectdoubt

No se trata de un bug.
La suma de series en TOL no contempla naturalmente la suma donde una de ellas no tiene datos.

Para TOL los datos donde una serie no está definida son omitidos. Véase por ejemplo:

Serie s = SubSer(CalInd(C, C), y2000, y2010);
Real SerDat(s, y1990); // -> ?

y la suma real de un número conocido con otro desconocido (un omitido) es desconocida:

Real a = 1;
Real b = ?;
Real a+b; // -> ?

así pues la suma de dos series se hace en el intevalo intersección de ellas:

Serie s1 = SubSer(CalInd(C, C), y2000, y2010);
Serie s2 = SubSer(CalInd(C, C), y2002, y2012);
Serie s1 + s2; // -> C[y2002, y2010]
Serie SetSum([[s1, s2]]); // -> C[y2002, y2010]

Nota que hay una función especial en StdLib que no suma así, sino suponiendo ceros allí donde no hay datos, aunque insisto en que esta suma no sigue el estándar de TOL.

Serie s1 = SubSer(CalInd(C, C), y2000, y2010);
Serie s2 = SubSer(CalInd(C, C), y2002, y2012);
Serie SetSumC([[s1, s2]]); // -> C[y2000, y2012]

Nota en el ejemplo anterior como dos series de unos, no suman dos en los intervalos en los que se sumaron aunque una no tuviera datos conocidos. Quizá lo más coherente es definir adecuadamente la serie para que lleve ceros donde corresponda.

Note: See TracTickets for help on using tickets.