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

Opened 16 years ago

Last modified 16 years ago

#707 closed defect

InterpolaL (StdLib) works wrong for a Series with negative changes only — at Initial Version

Reported by: Alfredo Torre Owned by: Víctor de Buen Remiro
Priority: highest Milestone:
Component: Various Version: 1.1.7
Severity: blocker Keywords: InterpolaL, negative changes
Cc:

Description

InterpolaL (from StdLib) works wrong when the original Series only has negative changes and, at least, one no change. Please, see the next example:

Serie Ser.Qua = SubSer(
100*Pulse(y2009m01d01, Quarterly) +

90*Pulse(y2009m04d01, Quarterly) +
90*Pulse(y2009m07d01, Quarterly) +
80*Pulse(y2009m10d01, Quarterly),

y2009m01d01, y2010m01d01);
Serie Ser.Mon = InterpolaL(Ser.Qua, Monthly);

The problem is in InvChEx function. I suggest this new code for InterpolaL:

Serie InterpolaL(Serie ser, TimeSet dtn)
{

Serie dser = ((F-1):ser)>>CalInd(W,Dating(ser));
Serie iper = SubSer(CalVar(dtn,Dating(ser)),First(ser),Last(ser));
Serie inc = dser/iper;
Serie dNser1 = InvCh(inc, Log(CalInd(W, dtn2)));
Serie dNser2 = ExpandOmit(dNser1);
Serie dNser = (B):dNser2;
Date ini = Succ(First(dNser),dtn,-1);
Serie sIniP = FirstS(ser)*CalInd(C,dtn);
Serie sIni = SubSer(sIniP,ini,ini);
SubSer(DifEq(1/(1-B),dNser,sIni),ini,Last(ser))

};

Change History (0)

Note: See TracTickets for help on using tickets.