Skip to content

dsagolla/nssvie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nssvie

tests build docs pypi pyversions licence linter

A python package for computing a numerical solution of stochastic Volterra integral equations of the second kind

stochastic-volterra-integral-equation

where

  • X-t is an unknown process,
  • f is a continuous function,
  • k-1-k-2 are continuous and square integrable functions,
  • B-t is the Brownian motion (see Wiener process) and
  • ito-integral is the Itô-integral (see Itô calculus)

by a stochastic operational matrix based on block pulse functions as suggested in Maleknejad et. al (2012)1.

nssvie is distributed under the terms of the GNU GPLv3 license.

Install

Install using either of the following two methods.

1. Install from PyPi

pypi pyversions format

The nssvie package is available on PyPi and can be installed using pip

pip install nssvie

2. Install from Source

release licence

Install directly from the source code by

git clone https://github.com/dsagolla/nssvie.git
cd nssvie
pip install .   

Dependencies

nssvie uses

  • NumPy for many calculations,
  • SciPy for computing the block pulse coefficients and
  • stochastic for sampling the Brownian Motion

Usage

Consider the following example of a stochastic Volterra integral equation

example-1-eq

so

  • example-1-f ,
  • example-1-k-1 and
  • example-1-k-2.
from nssvie import SVIE
import matplotlib.pyplot as plt

# Define the function and the kernels of the stochastic Volterra 
# integral equation
def f(t):
    return 1.0

def k1(s,t):
    return s**2

def k2(s,t):
    return s

# Generate the stochastic Volterra integral equation
svie = SVIE(
    function_f=f, kernel_2=k1, kernel_1=k2, endpoint=0.5
)
# Calculate numerical solution with m=20 intervals  
approximative_solution = svie.solve_numerical(
    intervals=20
)
fig, ax = plt.subplots()
times = [i * 0.5/20 for i in range(21)]
ax.step(times, approximative_solution, c='k')
plt.show()

image

The parameters are

  • function_f: the function f.
  • kernel_1, kernel_2: the kernels k-1-k-2.
  • endpoint: the right hand side of [0, T) (default is 1.0),
  • intervals: the number of intervals to divide [0, T) (default is 50)

for the stochastic Volterra integral equation above.

Citation


  1. Maleknejad, K., Khodabin, M., & Rostami, M. (2012). Numerical solution of stochastic Volterra integral equations by a stochastic operational matrix based on block pulse functions. Mathematical and computer Modelling, 55(3-4), 791-800.