Scipy Quasi Monte Carlo

Scipy Quasi Monte Carlo
I denne artikkelen vil vi diskutere en annen scipy-modul som er Quasi-Monte Carlo. For å forklare denne scipy modulen, må vi først forstå hva Quasi-Monte Carlo er. Quasi-Monte Carlo-metoden er en metode som brukes til å utføre integrasjoner og andre matematiske problemer. Denne metoden bruker en lav avvikssekvens for å løse problemene. Denne metoden brukes i finansiell matematikk og er veldig populært brukt nylig. Disse metodene brukes også til å beregne multivariante integraler.

Denne metoden er sammensatt av fire hoveddeler. Disse komponentene er en integrand, en diskret distribusjon, sammendragsdata og et stoppkriterium. Følgende formel brukes av denne metoden for å utføre:

En annen ting å huske på er at denne metoden er nesten den samme som Monte Carlo -metoden. Den eneste forskjellen er at den bruker kvasirandomnummeret for å få integralen til inngangen. Disse tallene genereres av selve datamaskinen ved hjelp av noen algoritmer. Disse genererte tallene er på en eller annen måte nær pseudorandom -tall. Quasi-Monte Carlo-metoden er også kjent som Halton-Hammersley-Wozniakowski-metoden og bruker Wolfram-språk for å operere. Quasi-Monte Carlo-metoden har en mye raskere konvergenshastighet enn Monte Carlo-stimuleringshastigheten i.e o (n-1/2). Den har også feilsjanser for O (n-1). Denne metoden genererer fullstendig bestemte resultater.

Disse teknikkene og metodene er også veldig nyttige for å løse datagrafikkproblemer matematisk ved hjelp av grafer osv. På andre språk kan du også bruke disse metodene for å oppfylle dine krav, men du må skrive all koden og må gjøre opp logikken din, avhengig av matematiske ferdigheter. Men i Python er denne metoden en innebygd funksjon og kommer i form av biblioteket, så sammenlignet med andre språk er denne funksjonen mye enklere å utføre i Python.

Syntaks:

Quasi-Monte Carlo er verken en funksjon eller et bibliotek. Det er en modul i scipy som gir hjelperfunksjoner og motorer som brukes til å utføre operasjoner relatert til Quasi-Monte Carlo-metoden. Følgende er motorene levert av denne modulen.

QMCengine: Dette er en klasse som brukes til underklasse. Det tar to parametere. Den ene er dimensjon “D” av parameterrom som er et heltall og den andre er “frø” som er valgfritt.

Sobol: Denne motoren brukes til å lage sobol -sekvenser. Det tar også dimensjon som en parameter og en annen parameterskrampe som er en boolsk og valgfritt. De to andre valgfrie parametrene er biter og frø som er heltalldatatyper.

Stopp på: Akkurat som Sobol, genererte denne motoren også en sekvens. Men i stedet for sobol -sekvenser, genererte denne Haltons sekvens. Den har tre parametere. Dimensjon, krypning og frø.

Latinhypercube: Denne motoren brukes til LHS I.E Latin Hyper Cube prøvetaking. Den har fem parametere. Tre er de samme som andre motorer i.E: Dimensjon “D”, frø og styrke. De to andre er optimalisering og sentrert. Begge er valgfrie parametere.

Poissondisk: Denne motoren brukes til PDS som er den korte formen for prøvetaking av Poisson -disk. De samme parametrene er dimensjon og frø. Tre parametere er forskjellige, det vil si radius som er av float -datatype, hypersfære som er en valgfri parameter, og kandidater som har en heltalldatatype. Det tar antall kandidater som innspill som skal utføre et utvalg per økning eller iterasjon.

Multinomialqmc: Denne motoren er en generisk Quasi-Monte Carlo-sampler som brukes til multinomial distribusjon. Den har en samme parameter som er et frø. Den har totalt fire argumenter. PVALS som er et matrise-lignende argument, ntrials som har en heltalldatatype, og motor som er en motorprøvetaker for Quasi Monte Carlo. Som standard tar det Sobol som verdien.

Multivariatenormalqmc: Dette brukes til prøvetaking av multivariat normal. Den har seks parametere og en av dem er den samme. Disse seks argumentene er slemme, cov, cov_root, inv_transform, motor og frø.

Disse motorene har sine funksjoner for å utføre operasjoner. Bortsett fra motorene, gir denne modulen også hjelperfunksjoner som er dispergeringsmiddel, oppdatering_disperancy og skala.

Eksempel # 01:

For å få deg til å forstå denne modulen i detalj, vil vi gi et eksempel angående en av algoritmene til denne metoden ved hjelp av scipy.QMC på Python -språk. Vi vil beregne verdien av den dimensjonale Keister Integrand [18]. For å gjøre det, har vi først importert tomt fra scipy. Etter det importerte vi noen flere biblioteker ved hjelp av matematiske funksjoner fordi vi trenger disse funksjonene for beregningene våre. I dette eksemplet har vi brukt Sobol -motoren til QMC som vi diskuterte tidligere i artikkelen vår. Vi har gitt verdiene til våre funksjoner, og til slutt har vi skrevet ut utdataene våre. Nå vil vi utføre koden vår for å se resultatet.

Importer qmcpy som qmcpy
Fra scipy
Importer PI, COS, SQRT, LINGG
d = 2
dnb2 = qp.DigitalNetB2 (D)
gauss_sobol = qp.Gaussisk (DNB2, gjennomsnitt = 0, samvariasjon = 1/2)
k = qp.CustomFun (
True_Measure = gauss_sobol,
g = lambda x: pi ** (d/2)*cos (ling.Norm (x, akse = 1)))
QMC_SOBOL_ALGORITHM = QP.Cubqmcsobolg (k, abs_tol = 1e-3)
Løsning, data = = QMC_SOBOL_ALGORITHM.integrere()
Print (data)

Etter utførelsen av koden vår har systemet gitt oss følgende utdata. I MATLAB eller andre digitale bildebehandlingsverktøy vil denne utgangen vises i form av en grafisk representasjon. Men her har vi utdata i konsollformat, slik at vi bare kan se verdiene returnert fra koden vår og bekrefte etter å ha utført QMC -metoden matematisk til våre inngangsverdier.

Konklusjon

I denne guiden diskuterte vi ikke noe spesifikt bibliotek, klasse eller funksjon i scipy. Vi diskuterte en matematisk metode som er Quasi-Monte Carlo som brukes til å beregne økonomiske problemer i matematikk. Vi forklarte først hva QMC -metoden gjør, og hva er applikasjonene innen matematikk og grafikk. Vi prøvde også å forklare hvordan denne metoden utføres. Noen ganger er det vanskelig for en programmerer å utføre kompleks matematikk i koden hans fordi disse to er forskjellige felt. Scipy gir oss en QMC -modul som har nesten alle funksjonene og motorene som kan brukes til å utføre QMC -matematikk i koden vår uten å gjøre en innsats for å utføre matematikken i koden vår. Ved hjelp av QMC-modulen kan vi ganske enkelt bruke motorene og funksjonene i riktig del av koden vår for å utføre Quasi-Monte Carlo-metoden. Vi håper denne guiden vil hjelpe deg å få kunnskap om QMC -metoden og hvordan den lett kan brukes i Python ved hjelp av Scipy.QMC -modul.