How to solve the following non linear second order PDE (Dynamic Programming)

69 Views Asked by At

I'm trying to solve the following Dynamic Programming equation in continuous time ($dt \rightarrow 0$)

$$ v(x,t) = \max\Big\{|x|\,,\,v(x,t)+dt\Big(v_t(x,t)+\frac{1}{2(t+1)}v_{xx}(x,t)\Big) \Big\} - \alpha dt$$

for $x \in [-1,1]$, $t \in [0,T]$ with $v(x,T) = |x|$ and $v(1,t)=v(-1,t)=1 \,\,\forall t$.

I'll state now my two questions:

  1. What is the best way to discretize and solve this equation numerically, such that I can obtain accurate solutions for a large range of values of $\alpha$ (for instance $\log_2 (\alpha) \in (-10,10)$)? The max operator makes it difficult to apply implicit methods.
  2. I am not certain whether it is possible to properly take the limit where $dt \rightarrow 0$ and arrive to a more conventional PDE. Is this an appropriate way of writing the equation? What would be a more appropriate way, if there is?

The approach I have followed is an explicit first order Euler method with standard centered second order finite differences for $v_{xx}$, which leads to

$$ v_i^j = \max\Big\{|x^j|\,,\,v_{i+1}^j+\frac{\Delta t}{2{\Delta x}^2(t_{i+1}+1)}(v_{i+1}^{j+1}-2v_{i+1}^{j}+v_{i+1}^{j-1}) \Big\} - \alpha \Delta t$$

where I have defined $t_i \equiv i\Delta t$, $x^j \equiv j\Delta x$, and $v_i^j \equiv v(x^j,t_i)$.

I believe it is producing reasonable solutions for small or moderate values of $\alpha$, but when $\alpha$ gets quite large I need to decrease $\Delta x$, which in turn forces me to decrease $\Delta t$ to maintain stability, and becomes impractical.