Numerična integracija z metodo Monte Carlo - JavaScript calculator

Določeni integral je ploščina pod grafom funkcije f(x). Integral = vsota_vseh_prispevkov f(x)dx.

Določeni integral pa lahko izvrednotimo tudi preko random-naključnih števil (metoda Monte Carlo) znotraj ploščine - kratek opis je spodaj.


Seštevamo modre in rdeče (neg.) točke - rezultat delimo s celotnim številom 'n' točk v polju in pomnožimo s površino polja, to je s površino pravokotnika (xk-xp) * (yk-yp)



Primer: integral(x*x + 3)dx [od 2 do 5] = x*x*x/3 -3*x [od 2 do 5] = 125/3 + 15 - 8/3 - 6 = 48
Metoda Monte Carlo se zelo približa tej vrednosti in to že pri nekaj 10000 random številih.
Metoda Monte Carlo je smiselna za funkcije, katerih integralov ne znamo rešiti po enostavni poti (recimo e^(e^x), oz. za vnos exp(exp(x)) ali 1/ln(x), oz. za vnos 1/log(x) )!
Vnesi funkcija f(x):
Začetna vrednost xz integracije:
Končna vrednost xk integracije:
Najmanjša (ali manjša) vrednost funkcije v izbranem intervalu, y_min:
Največja (ali večja) vrednost funkcije v intervalu, y_max:
Natančnost - št. random točk, n je:
Rezultat integriranja preko Monte Carlo metode je: = (st_tock_znotraj_funcije/n) * (xk - xz) * (y_max - y_min);

Kaj dobiš, če integriraš funkcijo f(x) = 4*sqrt(1-x*x) v intervalih T1(0, 0) in T2(4, 4)?


Dopolnil Z. Vičar (org. stran ima napako: http://www.algorytm.org/procedury-numeryczne/calkowanie-numeryczne-metoda-monte-carlo-i.html)

*** Risanje funkcij - lahko je pomoč pri določitvi mej integracije ...


* Več razlage je na strani - Monte_Carlo_random_stevila01.html

Nekatere funkcije v js:
cos(x)
acos(x)
sin(x)
asin(x)
tan(x)
atan(x)
1/tan(x) = ctg(x)
PI*(1/2)-atan(x)
(exp(x)-exp(-x))/2 = sh(x)
(exp(x)+exp(-x))/2 = ch(x)
(exp(x)-exp(-x))/(exp(x)+exp(-x)) = th(x)
(exp(x)+exp(-x))/(exp(x)-exp(-x)) = cth(x)
2/(exp(x)+exp(-x))/2 = sch(x)
2/(exp(x)-exp(-x))/2 = csch(x)
abs(x)
sqrt(x)
round(x)
log(x)
exp(x)
5*random()
5*sin(tan(x/5))
5*cos(tan(x/10))
sqrt(9-x*x*9/25)
sqrt((x*x*9/25)-9)
7*cos((x/5)*sin(x))*cos(sin(x/5))/cos(sin(x/3))*cos(sin(x/3)) = kon. cos
7*sin((x/5)*sin(x))*sin(sin(x/5))/sin(sin(x/3))*sin(sin(x/3)) = kon. sin
sqrt(2*2/( (1+0.85*cos(x))*(1+0.85*cos(x)) ) -2*2*cos(x)*cos(x)/( (1+0.85*cos(x))*(1+0.85*cos(x)) ) )
-(1/3)*x-2
1/x
1/(x*x)
-30/(x*x)
(x*x)
-x*x-2*x+5
5*abs(sin(x*x/20))
2*x*x*x+x*x-4*x+3
nthroot(x,3) = x1/3
abs(nthroot((x-1),3)-1)
pow(2,x) = 2 na x
pow(x,3) = x na 3
8*pow(10,-x*x/70)*cos(x)
12
- za Gaussa daj recimo obliko 5*exp(-5*x*x/100) ali kako drugo zvonasto obliko, rec. 150*pow(10,-5*x*x/100000)
!!! n-ti koren iz x se zapiše kot nthroot(x,n),
primer za tretji koren, rec iz števila (-8): nthroot(-8,3) = -2
(nthroot je dodana funkcija, saj vgrajena js funkcija pow(-8,1/3) vrne vrednost NaN).