.
asdf:

Witam, metoda Monte Carlo.
No i mam tak..
Określam najmniejszą wartość:
y
min = 1
y
max = 2
x
min = 1
x
max} = 2
Losuje sobie, np. N= 1000 punktów (x
i,y
i) gdze x
i ∊ (1,2), y
i ∊ (1,2)
robię zmienną k=0;
i sprawdzam czy punkt ten leży pod osią, czyli, czy:
y
i < f(x
i)
jeżeli tak to k=k+1;
Końcowy wynik to V = (x
max − x
min)*(y
max − y
min) * k/N, czyli inaczej:
S = niebieska kreska * zielona kreska
V = S * k/N;
i wychodzi mi w całce:
∫
01 x dx ≈ 0.51 .... a powinno wyjść 3/2. Za y
min powinienem dać wartość 0? czy jak?
17 kwi 23:53
asdf: ?
18 kwi 00:16
asdf: ?
18 kwi 00:44
xx:
| | 1 | |
∫01 x dx = |
| x2 |01 = 1/2 |
| | 2 | |
18 kwi 08:28
aniabb: żeby w całce wyszło 3/2 to trzeba całkować od 1 do 2 bo taki masz zakres x
jeśli się ograniczasz do y>1 to od całki musisz odjąć prostokąt Δx•y tu =1
jeśli na Ci wyjść w losowaniu 3/2 to losować musisz od y=0
18 kwi 08:58
Trivial:
Trzeba zrobić tak, żeby funkcja przyjmowała wartości y ∊ [0,c], c>0
Chcemy całkować f(x) w przedziale x ∊ [a,b]. Określamy ymin, ymax, tak jak to zrobiłeś.
Przesuwamy funkcję tak, aby przyjmowała wartości y∊[0,c], (c = ymax−ymin) czyli:
f*(x) = f(x) − ymin → f(x) = f*(x) + ymin
Całkujemy i mamy:
∫ab f(x)dx = ∫ab (f*(x) + ymin)dx = ∫ab f*(x)dx + ymin(b−a) = p*S + ymin(b−a)
Gdzie S oznacza pole prostokąta, w którym całkujemy
S = (ymax−ymin)(b−a)
W Twoim przykładzie:
S = (2−1)*(2−1) = 1
p = 0.5
∫12 xdx = p*S + ymin(b−a) = 0.5*1 + 1*(2−1) = 1.5
18 kwi 11:10
asdf:

dzieki za odpowiedź, już na to wpadlem na zajęciach i jakoś wyszło

żeby zliczać k (licznik)
to chyba jeszcze trzeba dać taki warunek:
y
min*y
max < 0 − wtedy liczy się normalnie pole
V= (ymax −ymin)*(xmax − xmin) * k/N
k − licznik
N − ilość tych prób
18 kwi 14:25
asdf:

dla funkcji, gdzie y
min ≠ 0 i y
min ma taki sam znak to chyba trzeba użyc takiego czegos:
jeżeli y
min * y
max > 0 (te same znaki) oraz y
min ≠ 0 to licz pole w taki sposob:
V =
(ymax − ymin)*(xmax − xmin) * k/ N +
|ymin|*(xmax − xmin)
dobrze?
18 kwi 14:30
aniabb: na pole pod krzywą ..pasuje
18 kwi 14:35
asdf: nad krzywą (dla wartosci ujemnych tylko inaczej zliczać + warunek dodatkowy na te przypadki
18 kwi 14:39
aniabb: albo przesunąć wykres czyli jak ymin <0 to dodawać go do wyników
Losuje sobie, np. N= 1000 punktów (xi,yi) gdze xi ∊ (1,2), yi ∊ (0,2)
robię zmienną k=0;
i sprawdzam czy punkt ten leży pod osią, czyli, czy:
yi < f(xi)+ymin
jeżeli tak to k=k+1;
18 kwi 14:43
aniabb: wtedy zawsze od ymin =0 i nie musisz dodawać pola albo dzielić na przedziały
18 kwi 14:44
aniabb: jadę ..będę jutro rano ..albo może zajrzę wieczorkiem
18 kwi 14:44
18 kwi 14:47
asdf: dziękuje bardzo

Przy Was idzie się dużo nauczyć
18 kwi 14:55
asdf: @aniabb, to chyba nie działa
18 kwi 15:07
Trivial:

Kilka przykładów:
∫
ab f(x) dx = p*S + y
min*(b−a)
∫
02π sin(x) dx = 0.5*(1+1)*2π − 1*2π = 2π − 2π = 0.
18 kwi 22:21
aniabb: a jakie dokładnie jest polecenie?
18 kwi 22:26
Trivial:

∫
03(x−3)dx = 0.5*3
2 − 3*3 = − 4.5
18 kwi 22:27
asdf: @aniabb
polecenie − liczenie całki oznaczonej metodą monte carlo
@trivial
ale to z:
p*S + ymin*(b−a)
dajmy ymin = −3, ymax = 4, wtedy liczysz w tym polu co trzeba (nie unikasz sytuacji, ze
pomijasz jakiś prostokąt − wiec nie trzeba dodawać ymin*(b−a)
chyba..
18 kwi 23:33
aniabb: no to tak jak pisze trivial i jak napisałeś sam o 14:30 wzór będzie
∫ab f(x) dx = p*S + ymin*(b−a)
jak rozciągniesz za bardzo w dół ymin to trzeba będzie go odjąć (co załatwi sam znak y) jak
będzie za wysoko to dodać (j.w.)
19 kwi 09:28