docstr: Tests solving diffusion equation with an exponent multiplier.
  
  Take the heat equation `v_{t} - v_{xx} = 0` and substitute `v = exp(x) u`.
  This yields `u_{t} - u_{xx} - 2u_{x} - u = 0`. The test compares numerical
  solution of this equation to the exact one, which is the diffusion equation
  solution times `exp(-x)`.
docstr_tok: ["Tests","solving","diffusion","equation","with","an","exponent","multiplier",".","Take","the","heat","equation","`","v_","{","t","}","-","v_","{","xx","}","=","0","`","and","substitute","`","v","=","exp","(","x",")","u","`",".","This","yields","`","u_","{","t","}","-","u_","{","xx","}","-","2u_","{","x","}","-","u","=","0","`",".","The","test","compares","numerical","solution","of","this","equation","to","the","exact","one",",","which","is","the","diffusion","equation","solution","times","`","exp","(","-x",")","`","."]
code: def testReference_WithExponentMultiplier(self):
      """Tests solving diffusion equation with an exponent multiplier.
  
      Take the heat equation `v_{t} - v_{xx} = 0` and substitute `v = exp(x) u`.
      This yields `u_{t} - u_{xx} - 2u_{x} - u = 0`. The test compares numerical
      solution of this equation to the exact one, which is the diffusion equation
      solution times `exp(-x)`.
      """
      grid = grids.uniform_grid(
          minimums=[0], maximums=[1], sizes=[501], dtype=tf.float32
      )
      xs = grid[0]
  
      final_t = 0.1
      time_step = 0.001
  
      def second_order_coeff_fn(t, coord_grid):
          del t, coord_grid
          return [[-1]]
  
      def first_order_coeff_fn(t, coord_grid):
          del t, coord_grid
          return [-2]
  
      def zeroth_order_coeff_fn(t, coord_grid):
          del t, coord_grid
          return -1
  
      initial = tf.math.exp(-xs) * _reference_pde_initial_cond(xs)
      expected = tf.math.exp(-xs) * _reference_pde_solution(xs, final_t)
  
      actual = fd_solvers.solve_forward(
          start_time=0,
          end_time=final_t,
          coord_grid=grid,
          values_grid=initial,
          time_step=time_step,
          second_order_coeff_fn=second_order_coeff_fn,
          first_order_coeff_fn=first_order_coeff_fn,
          zeroth_order_coeff_fn=zeroth_order_coeff_fn,
      )[0]
  
      self.assertAllClose(expected, actual, atol=1e-3, rtol=1e-3)
  
imports: import math
  from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  import tf_quant_finance
  from tensorflow.python.framework import test_util
label_desc: Use image node_id 14 for calling the ParabolicEquationStepperTest obj's underlying member method code with example usage: obj.testReference_WithExponentMultiplier() and returns: list, list, unknown