Scipy Quasi Monte Carlo

Scipy Quasi Monte Carlo
Neste artigo, estaremos discutindo outro módulo Scipy que é quase-monte Carlo. Para explicar este módulo de círculo, primeiro, precisamos entender o que é quase-monte carlo. O método quase-monte Carlo é um método usado para realizar integrações e outros problemas matemáticos. Este método usa uma sequência de baixa discrepância para resolver os problemas. Este método é usado em matemática financeira e é muito popularmente usado recentemente. Esses métodos também são usados ​​para calcular integrais multivariantes.

Este método é composto por quatro partes principais. Esses componentes são um integrando, uma distribuição discreta, dados de saída resumidos e um critério de parada. A fórmula a seguir é usada por este método para executar:

Outra coisa a ter em mente é que esse método é quase o mesmo que o método Monte Carlo. A única diferença é que ele usa o número de quasendom para obter a integral da entrada. Esses números são gerados pelo próprio computador usando alguns algoritmos. Esses números gerados estão de alguma forma próximos dos números de pseudorandom. O método quase-Monte Carlo também é conhecido como o método Halton-Hammersley-Wozniakowski e usa a linguagem Wolfram para operar. O método quase-monte Carlo tem uma taxa de convergência muito mais rápida do que a taxa de estimulação de Monte Carlo I.e o (n-1/2). Ele também tem chances de erro de O (n-1). Este método gera resultados completamente determinados.

Essas técnicas e métodos também são muito úteis na solução de problemas gráficos de computadores matematicamente usando gráficos etc. Em outros idiomas, você também pode usar esses métodos para atender aos seus requisitos, mas precisará escrever todo o código e terá que compensar sua lógica, dependendo de suas habilidades matemáticas. Mas em Python, esse método é uma função interna e vem na forma da biblioteca, então comparado a outros idiomas que essa função é muito mais fácil de executar no Python.

Sintaxe:

Quasi-Monte Carlo não é uma função nem uma biblioteca. É um módulo no SCIPY que fornece funções e motores auxiliares que são usados ​​para executar operações relacionadas ao método quase-monte carlo. A seguir, são apresentados os motores fornecidos por este módulo.

Qmcengine: Esta é uma classe usada para subclassificar. São necessários dois parâmetros. Um é a dimensão "d" do espaço de parâmetros que é um número inteiro e o outro é "semente", que é opcional.

Sobol: Este motor é usado para a criação de sequências de Sobol. Também é necessário dimensão como um parâmetro e outro parâmetro scramble que é um booleano e opcional. Os outros dois parâmetros opcionais são bits e sementes que são tipos de dados inteiros.

Parar em: Assim como Sobol, este motor também gerou uma sequência. Mas, em vez de sequências de Sobol, isso gerou sequência de Halton. Tem três parâmetros. Dimensão, luta e sementes.

Latinhipercube: Este motor é usado para LHS i.e amostragem de hipercubo latino. Tem cinco parâmetros. Três são iguais aos outros motores que eu.E: dimensão “d”, semente e força. Os outros dois são otimização e centralizados. Ambos são parâmetros opcionais.

Poissondisk: Este mecanismo é usado para PDS, que é a forma curta de amostragem de disco de Poisson. Os mesmos parâmetros são dimensões e sementes. Três parâmetros são diferentes, que é o raio que é do Float Datatype, Hypersphere, que é um parâmetro opcional e candidatos que possuem um tipo de dados inteiro de dados. É preciso o número de candidatos como entrada que vai executar uma amostra por incremento ou iteração.

MultinomialQMC: Este motor é um amostrador carlo quase-monte genérico usado para distribuição multinomial. Tem um mesmo parâmetro que é uma semente. Tem um total de quatro argumentos. PVals, que é um argumento semelhante a uma matriz, NTRILES que possui um tipo de dados inteiro e motor que é um amostrador de motor para quase Monte Carlo. Por padrão, é preciso Sobol como seu valor.

MultivariAnormaMalQMC: Isso é usado para amostragem de normais multivariados. Tem seis parâmetros e um deles é o mesmo. Esses seis argumentos são médios, COV, cov_root, Inv_transform, motor e semente.

Esses motores têm suas funções para executar operações. Além dos motores, este módulo também fornece funções auxiliares que são dispersantes, update_disperancy e escala.

Exemplo # 01:

Para fazer você entender este módulo em detalhes, daremos um exemplo sobre um dos algoritmos deste método usando o Scipy.QMC na linguagem python. Calcularemos o valor do integrando Keister dimensional [18]. Para fazer isso, primeiro importamos vazio do Scipy. Depois disso, importamos mais algumas bibliotecas usando funções matemáticas porque precisaremos dessas funções para nossos cálculos. Neste exemplo, usamos o motor Sobol do QMC que discutimos anteriormente em nosso artigo. Passamos os valores para nossas funções e, finalmente, imprimimos nossa saída. Agora, vamos executar nosso código para ver o resultado.

importar qmcpy como qmcpy
de Scipy
importar pi, cos, sqrt, linalg
d = 2
dnb2 = qp.DigitalNetb2 (D)
gauss_sobol = qp.Gaussiano (dnb2, média = 0, covariância = 1/2)
K = QP.CustomFun (
true_measure = gauss_sobol,
g = lambda x: pi ** (d/2)*cos (linalg.norma (x, eixo = 1)))
qmc_sobol_algorithm = qp.CubqmcSobolg (k, abs_tol = 1e-3)
Solução, dados = = QMC_SOBOL_ALGORITHM.integrar()
Impressão (dados)

Após a execução do nosso código, o sistema nos deu a seguinte saída. No MATLAB ou em outras ferramentas de processamento de imagem digital, essa saída será exibida na forma de uma representação gráfica. Mas aqui, temos a saída no formato do console para que possamos ver os valores retornados do nosso código e confirmar depois de executar o método QMC matematicamente para nossos valores de entrada.

Conclusão

Neste guia, não discutimos nenhuma biblioteca, classe ou função específica no Scipy. Discutimos um método matemático que é quase-monte Carlo que é usado para calcular problemas financeiros em matemática. Primeiro explicamos o que o método QMC faz e quais são suas aplicações no campo da matemática e gráficos. Também tentamos explicar como esse método é realizado. Às vezes é difícil para um programador executar matemática complexa em seu código, porque esses dois são campos diferentes. O Scipy nos fornece um módulo QMC que possui quase todas as funções e motores que podem ser usados ​​para executar a matemática do QMC em nosso código sem fazer o esforço de realizar a matemática em nosso código. Com a ajuda do módulo QMC, simplesmente podemos usar seus motores e funções na parte direita do nosso código para executar o método quase-monte Carlo. Esperamos.Módulo QMC.