Monte Carlo -menetelmä

Monte Carlo -menetelmä on hyödyllinen. Sillä voi laskea esimerkiksi käyrien \(y=f(x)\) ja \(y=g(x)\) väliin jäävän pinta-alan.
Alue käyrien \(y=f(x)\) ja \(y=g(x)\) välissä. Monte Carlo -simulaatio.

Koodi:



%Laskee käyrien y=f(x) ja y=g(x) väliin jäävän pinta-alan

%Määritellään funktiot
function arvo = funktiof(x)
arvo=sin(x);
endfunction
function arvo = funktiog(x)
arvo=cos(x);
endfunction

%Määritellään laatikon koko
xvali=[pi/4, 5*pi/4];
yvali=[-1, 1];
xmin=xvali(1);xmax=xvali(2);ymin=yvali(1);ymax=yvali(2);

kaikki=300; %Arvontojen lukumäärä
ali=0; %laskurit
yli=0;
pos=0;
neg=0;

%Pistekuvio
figure, hold on
for k=1:kaikki
x(k)=xmin+rand(1)*(xmax-xmin);
y(k)=ymin+rand(1)*(ymax-ymin);
fx(k)=funktiof(x(k));
gx(k)=funktiog(x(k));
if lt(y(k),min(fx(k),gx(k)))==1, ali=ali+1;plot(x(k),y(k),'k');end
if gt(y(k),max(fx(k),gx(k)))==1, yli=yli+1;plot(x(k),y(k),'k');end
if and(lt(y(k),fx(k)),gt(y(k),gx(k)))==1, pos=pos+1;plot(x(k),y(k),'r');end
if and(lt(y(k),gx(k)),gt(y(k),fx(k)))==1, neg=neg+1;plot(x(k),y(k),'b');end
end

%Piirretään käyrä
t=linspace(0,1,100);
xt=xmin+(xmax-xmin)*t;
ft=funktiof(xt);
gt=funktiog(xt);
plot(xt,ft,'r')
plot(xt,gt,'b')

%Piirretään laatikko
vali=0.2;
axis([xmin-vali,xmax+vali,ymin-vali-1,ymax+vali])
plot([xmin,xmax,xmax,xmin,xmin],[ymin,ymin,ymax,ymax,ymin],'k')

%Lasketaan pinta-ala
kokoalue=(xmax-xmin)*(ymax-ymin);
posi=pos/kaikki;
negi=neg/kaikki;
alii=ali/kaikki;
ylii=yli/kaikki;
arvioitu=posi+negi+alii+ylii;
haluttu=(posi-negi)*kokoalue;

%Tehdään selitystekstit
text(xmin,ymin-0.1,['Tarkasteltava pinta-ala: ', num2str(haluttu)])
text(xmin,ymin-0.2,['Laatikon pinta-ala: ' num2str(kokoalue)])

text(xmin,ymin-0.4,['Positiivista: ', num2str(posi*100), '%'])
text(xmin,ymin-0.5,['Negatiivista: ', num2str(negi*100), '%'])
text(xmin,ymin-0.6,['Kayrien ylapuolella: ', num2str(ylii*100), '%'])
text(xmin,ymin-0.7,['Kayrien alapuolella: ', num2str(alii*100), '%'])
text(xmin,ymin-0.8,['Arvioidut pisteet: ', num2str(arvioitu*100), '%'])
legend('f','g');

%Kuvan printtaaminen
%print -dpng valissa.png
%print -dpdf valissa.pdf
%print -dsvg valissa.svg


Koodin voi copypastettaa esimerkiksi Octave Onlineen, https://octave-online.net/.