1 /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 3 /* 4 Copyright (C) 2000, 2001, 2002, 2003 RiskMap srl 5 6 This file is part of QuantLib, a free-software/open-source library 7 for financial quantitative analysts and developers - http://quantlib.org/ 8 9 QuantLib is free software: you can redistribute it and/or modify it 10 under the terms of the QuantLib license. You should have received a 11 copy of the license along with this program; if not, please email 12 <quantlib-dev@lists.sf.net>. The license is also available online at 13 <http://quantlib.org/license.shtml>. 14 15 This program is distributed in the hope that it will be useful, but WITHOUT 16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 17 FOR A PARTICULAR PURPOSE. See the license for more details. 18 */ 19 20 /*! \file dplus.hpp 21 \brief \f$ D_{+} \f$ matricial representation 22 */ 23 24 #ifndef quantlib_d_plus_h 25 #define quantlib_d_plus_h 26 27 #include <ql/methods/finitedifferences/tridiagonaloperator.hpp> 28 29 namespace QuantLib { 30 31 //! \f$ D_{+} \f$ matricial representation 32 /*! The differential operator \f$ D_{+} \f$ discretizes the 33 first derivative with the first-order formula 34 \f[ \frac{\partial u_{i}}{\partial x} \approx 35 \frac{u_{i+1}-u_{i}}{h} = D_{+} u_{i} 36 \f] 37 38 \ingroup findiff 39 */ 40 class DPlus : public TridiagonalOperator { 41 public: 42 DPlus(Size gridPoints, Real h); 43 }; 44 45 46 // inline definitions 47 DPlus(Size gridPoints,Real h)48 inline DPlus::DPlus(Size gridPoints, Real h) 49 : TridiagonalOperator(gridPoints) { 50 setFirstRow(-1/h,1/h); 51 setMidRows(0.0,-1/h,1/h); 52 setLastRow(-1/h,1/h); // linear extrapolation 53 } 54 55 } 56 57 58 #endif 59