CrankNicolson< Operator > Class Template Reference

### A free/open-source library for quantitative finance

Public Types | Public Member Functions
CrankNicolson< Operator > Class Template Reference
Finite-differences framework

Crank-Nicolson scheme for finite difference methods. More...

`#include <ql/methods/finitedifferences/cranknicolson.hpp>`

Inheritance diagram for CrankNicolson< Operator >:
[legend]

List of all members.

## Public Types
typedef OperatorTraits< Operator > | traits
typedef traits::operator_type | operator_type
typedef traits::array_type | array_type
typedef traits::bc_set | bc_set
typedef traits::condition_type | condition_type
## Public Member Functions
| CrankNicolson (const operator_type &L, const bc_set &bcs)

## Detailed Description

### template<class Operator>
class QuantLib::CrankNicolson< Operator >

Crank-Nicolson scheme for finite difference methods.

In this implementation, the passed operator must be derived from either TimeConstantOperator or TimeDependentOperator. Also, it must implement at least the following interface:

            typedef ... array_type;

            // copy constructor/assignment
            // (these will be provided by the compiler if none is defined)
            Operator(const Operator&);
            Operator& operator=(const Operator&);

            // inspectors
            Size size();

            // modifiers
            void setTime(Time t);

            // operator interface
            array_type applyTo(const array_type&);
            array_type solveFor(const array_type&);
            static Operator identity(Size size);

            // operator algebra
            Operator operator*(Real, const Operator&);
            Operator operator+(const Operator&, const Operator&);
            Operator operator+(const Operator&, const Operator&);

Warning:
  The differential operator must be linear for this evolver to work.