class_docstr: Multivariate Geometric Brownian Motion.
  
  Represents a d-dimensional Ito process:
  
  ```None
    dX_i(t) = means_i * X_i(t) * dt + volatilities_i * X_i(t) * dW_i(t),
    1 <= i <= d
  ```
  
  where `W(t) = (W_1(t), .., W_d(t))` is a d-dimensional Brownian motion with
  a correlation matrix `corr_matrix`, `means` and `volatilities` are `Tensor`s
  that correspond to mean and volatility of a Geometric Brownian Motion `X_i`
  
  ## Example
  
  ```python
  import tensorflow as tf
  import tf_quant_finance as tff
  corr_matrix = [[1, 0.1], [0.1, 1]]
  process = tff.models.MultivariateGeometricBrownianMotion(
      dim=2,
      means=1, volatilities=[0.1, 0.2],
      corr_matrix=corr_matrix,
      dtype=tf.float64)
  times = [0.1, 0.2, 1.0]
  initial_state=[1.0, 2.0]
  # Use SOBOL sequence to draw trajectories
  samples_sobol = process.sample_paths(
      times=times,
      initial_state=initial_state,
      random_type=tff.math.random.RandomType.SOBOL,
      num_samples=100000)
  
  # You can also supply the random normal draws directly to the sampler
  normal_draws = tf.random.stateless_normal(
      [100000, 3, 2], seed=[4, 2], dtype=tf.float64)
  samples_custom = process.sample_paths(
      times=times,
      initial_state=initial_state,
      normal_draws=normal_draws)
  ```
class_docstr_tok: ["Multivariate","Geometric","Brownian","Motion",".","Represents","a","d-dimensional","Ito","process",":","``","`","None","dX_i","(","t",")","=","means_i","*","X_i","(","t",")","*","dt","+","volatilities_i","*","X_i","(","t",")","*","dW_i","(","t",")",",","1","<","=","i","<","=","d","``","`","where","`","W","(","t",")","=","(","W_1","(","t",")",",","..",",","W_d","(","t",")",")","`","is","a","d-dimensional","Brownian","motion","with","a","correlation","matrix","`","corr_matrix","`",",","`","means","`","and","`","volatilities","`","are","`","Tensor","`","s","that","correspond","to","mean","and","volatility","of","a","Geometric","Brownian","Motion","`","X_i","`","#","#","Example","``","`","python","import","tensorflow","as","tf","import","tf_quant_finance","as","tff","corr_matrix","=","[","[","1",",","0.1","]",",","[","0.1",",","1","]","]","process","=","tff.models.MultivariateGeometricBrownianMotion","(","dim=2",",","means=1",",","volatilities=","[","0.1",",","0.2","]",",","corr_matrix=corr_matrix",",","dtype=tf.float64",")","times","=","[","0.1",",","0.2",",","1.0","]","initial_state=","[","1.0",",","2.0","]","#","Use","SOBOL","sequence","to","draw","trajectories","samples_sobol","=","process.sample_paths","(","times=times",",","initial_state=initial_state",",","random_type=tff.math.random.RandomType.SOBOL",",","num_samples=100000",")","#","You","can","also","supply","the","random","normal","draws","directly","to","the","sampler","normal_draws","=","tf.random.stateless_normal","(","[","100000",",","3",",","2","]",",","seed=","[","4",",","2","]",",","dtype=tf.float64",")","samples_custom","=","process.sample_paths","(","times=times",",","initial_state=initial_state",",","normal_draws=normal_draws",")","``","`"]
docstr: The dimension of the process.
docstr_tok: ["The","dimension","of","the","process","."]
code: def dim(self):
      """The dimension of the process."""
      return self._dim
  
file_path: tf-quant-finance/tf_quant_finance/models/geometric_brownian_motion/multivariate_geometric_brownian_motion.py
imports: import tensorflow.compat.v2
  from tf_quant_finance import utils
  from tf_quant_finance.math.pde import fd_solvers
  from tf_quant_finance.models import ito_process
  from tf_quant_finance.models import utils
label_desc: Use image node_id 2 for calling the MultivariateGeometricBrownianMotion obj's underlying member method code with example usage: obj.dim() and returns: self