JMSLTM Numerical Library 6.1

com.imsl.math
Interface FeynmanKac.ForcingTerm

Enclosing class:
FeynmanKac

public static interface FeynmanKac.ForcingTerm

Public interface for non-zero forcing term in the Feynman-Kac equation.


Method Summary
 void force(int interval, double[] y, double time, double width, double[] xlocal, double[] qw, double[][] u, double[] phi, double[][] dphi)
          Computes approximations to the forcing term phi(f,x,t) and its derivative partial phi/partial y.
 

Method Detail

force

void force(int interval,
           double[] y,
           double time,
           double width,
           double[] xlocal,
           double[] qw,
           double[][] u,
           double[] phi,
           double[][] dphi)
Computes approximations to the forcing term phi(f,x,t) and its derivative partial phi/partial y.

Parameters:
interval - an int, the index related to the integration interval [xGrid[interval-1], xGrid[interval]].
y - an input double array of length 3*xGrid.length containing the coefficients of the Hermite quintic spline representing the solution of the Feynman-Kac equation at time point time. For each

x in [x_i,x_{i+1}], , h_i=x_{i+1}-x_i, z_i=(x-x_i)/h_i,,i=1,ldots, text{xGrid.length}-1

the approximate solution is locally defined by

f(x,t)  = f_ib_0(z)+f_{i+1}b_0(1-z)+h_i f_i' b_1(z)-h_i f_{i+1}' b_1(1-z)+
                                   h_i^2f_i''b_2(z)+h_i^2f_{i+1}''b_2(1-z).

The values y_i=f_i, , y_{i+1}=f_i', , y_{i+2}=f_i'', ; i=1,4,7,ldots,3cdot mbox{xGrid.length}-2, are stored as successive triplets in y.
time - a double, the time point.
width - a double, the width of the integration interval, width=xGrid[interval]-xGrid[interval-1].
xlocal - an input double array containing the Gauss-Legendre points translated and normalized to the interval [xGrid[interval-1], xGrid[interval]].
qw - an input double array containing the Gauss-Legendre weights.
u - an input double array of dimension 12 by xlocal.length containing the basis function values that define tilde{beta}(x) at the Gauss-Legendre points xlocal. Setting

u_{k,i}:=text{u[k][i]} quad  mbox{and} quad x_i:=text{xlocal[i]} ,,

vector tilde{beta}(x_i) is defined as

tilde{beta}(x_i):=(beta_{3*(text{interval}-1)}(x_i),ldots,
                                         beta_{3*text{interval}+2}(x_i))^T
                     = (u_{0,i},u_{1,i},u_{2,i},u_{6,i},u_{7,i},u_{8,i})^T ,.

phi - an output double array of length 6 containing Gauss-Legendre approximations for the local contributions

phi_t := int_{text{xgrid[interval-1]}}^{text{xgrid[interval]}}phi(f,x,t)
                                tilde{beta}(x) dx,

where t=time and tilde{beta}(x):=(beta_{3*(text{interval}-1)}(x),ldots,beta_{3*text{interval}+2}(x))^T. Denoting by degree the number of Gauss-Legendre points (xlocal.length) and setting x_j:=text{xlocal[j]}, vector phi contains elements

text{phi[i]} = text{width}*sum_{j=0}^{text{degree-1}}text{qw}[j],tilde{beta}_i(x_j),phi(f,x_j,t)

for i=0,...,5.
dphi - an output double array of dimension 6 by 6 containing a Gauss-Legendre approximation for the Jacobian of the local contributions phi_t at time point t=time,

frac{partial phi_t}{partial y}=int_{text{xgrid[interval-1]}}^{text{xgrid[interval]}}
                      frac{partial phi (f,x,t)}{partial f} ,tilde{beta}(x),tilde{beta}^T(x)dx,.

The approximation to this symmetric matrix is stored row-wise, i.e.

text{dphi[i][j]} = text{width} * sum_{k=0}^{text{degree-1}}text{qw}[k],tilde{beta}_i(x_k),tilde{beta}_j(x_k)
                                    left. frac{partial{phi}}{partial f}right|_{x=text{xlocal}[k],,t=text{time}}

for i,j=0,...,5.

JMSLTM Numerical Library 6.1

Copyright © 1970-2010 Visual Numerics, Inc.
Built July 30 2010.