FEATool Multiphysics
v1.10 Finite Element Analysis Toolbox |

Black-Scholes Equation

This is an example showing how to define a custom PDE equation model in the FEATool Multiphysics. In this case the Black-Scholes model equation, which is used in financial analytics to model derivatives and options pricing. The non-linear partial differential equation to be solved reads

\[ \frac{\partial u}{\partial t} - \frac{\partial}{\partial x}(\frac{1}{2}\frac{\partial u}{\partial x}) - \frac{\partial u}{\partial x} = -u + ( (x-t)^5 - 10(x-t)^4 - 10(x-t)^3) \]

with boundary conditions *u(0,t) = -t^5* and *u(x,t) = (x-t)^5* on the left and right sides of the domain, respectively. The problem is time-dependent with initial condition is *u(x,t=0) = x^5*. For this problem an exact analytical solution exists, *u(x,t) = (x-t)^5*, which can be used to verify the computed solution. See the Custom Equation section for details on the equation syntax.

This model is available as an automated tutorial by selecting **Model Examples and Tutorials...** > **Classic PDE** > **Black-Scholes Equation** from the **File** menu. Or alternatively, follow the step-by-step instructions below.

- To start a new model click the
**New Model**toolbar button, or select*New Model...*from the*File*menu. - Select the
**1D**radio button. Select the

**Custom Equation**physics mode from the*Select Physics*drop-down menu.- Press
**OK**to finish the physics mode selection. - Press the
**Create line***Toolbar*button. Press

**OK**to finish and close the dialog box.- Switch to
**Grid**mode by clicking on the corresponding*Mode Toolbar*button. Press the

**Generate**button to call the grid generation algorithm.- Switch to
**Equation**mode by clicking on the corresponding*Mode Toolbar*button. - Press the
**edit**button. Enter

`u' - 1/2*ux_x - ux_t + u_t = (x-t)^5 - 10*(x-t)^4 - 10*(x-t)^3`

into the*Equation for u*edit field.- Press
**OK**to finish and close the dialog box. Enter

`x^5`

into the*Initial condition for u*edit field.- Press
**OK**to finish the equation and subdomain settings specification. - Switch to
**Boundary**mode by clicking on the corresponding*Mode Toolbar*button. Enter

`-t^5`

into the*Dirichlet/Neumann coefficient*edit field.- Select
**2**in the*Boundaries*list box. Enter

`(1-t)^5`

into the*Dirichlet/Neumann coefficient*edit field.- Press
**OK**to finish the boundary condition specification. - Switch to
**Solve**mode by clicking on the corresponding*Mode Toolbar*button. - Press the
**Settings***Toolbar*button. Select

**Time-Dependent**from the*Solution and solver type*drop-down menu.Press the

**Solve**button.To visualize the difference between the computed and exact analytical solution, open the

**Plot Options**and postprocessing settings dialog box and enter the expression`u - (x-t)^5`

in the*Surface Plot*expression edit field.- As the magnitude of the error too small to see clearly for the default axis scaling, manually zoom by selecting the
**Axis/Grid Settings...**in the*Options*menu. - Select the
**Axis equal**radio button. - Clear the
**Bounding box**check box. - Select the
**Axis limits**radio button. Enter

`0 1 -5e-3 5e-3`

into the*Manual axis settings [xmin xmax ymin ymax]*edit field.Press

**OK**to finish and close the dialog box.

One can now clearly see that the maximum error has a magnitude of *2e-3* around *x = 0.25* which can improved further by using a finer grid and smaller time steps.

The *black-scholes equation* classic pde model has now been completed and can be saved as a binary (.fea) model file, or exported as a programmable MATLAB m-script text file, or GUI script (.fes) file.