Ejemplo n.º 1
0
        public double thetaAt(double x)
        {
            Utils.QL_REQUIRE(conditions_.stoppingTimes().First() > 0.0,
                             () => "stopping time at zero-> can't calculate theta");

            calculate();
            Vector thetaValues = new Vector(resultValues_.size());

            thetaValues = thetaCondition_.getValues();

            double temp = new MonotonicCubicNaturalSpline(
                x_, x_.Count, thetaValues).value(x);

            return((temp - interpolateAt(x)) / thetaCondition_.getTime());
        }
Ejemplo n.º 2
0
        protected override void performCalculations()
        {
            object rhs = new Vector(initialValues_.Count);

            for (int i = 0; i < initialValues_.Count; i++)
            {
                (rhs as Vector)[i] = initialValues_[i];
            }

            new FdmBackwardSolver(op_, solverDesc_.bcSet, conditions_, schemeDesc_)
            .rollback(ref rhs, solverDesc_.maturity, 0.0,
                      solverDesc_.timeSteps, solverDesc_.dampingSteps);

            for (int i = 0; i < initialValues_.Count; i++)
            {
                resultValues_[i] = (rhs as Vector)[i];
            }

            interpolation_ = new MonotonicCubicNaturalSpline(x_, x_.Count, resultValues_);
        }