Einführung in Mathematica VIII

Integrieren mit Zufallszahlen

© Jürgen Schnack, 2010/04/22

Problem

Integrale mit kompliziertem Integraden bzw. in hohen Dimensionen kann man oft nicht analytisch berechnen. Oft ist "Würfeln" die Methode der Wahl! 
Weil diese Methoden auf Zufallszahlen basieren, heißen sie 
Monte-Carlo-Methoden.

Beispiel

f[x_]=1.0+(E^(Sin[x]));

Pf=Plot[f[x],{x,0,10},
PlotRange->{0,4},
PlotStyle->{Red,Thick},
BaseStyle->{FontFamily->Helvetica,FontSize->18}]

Integrate[f[x],{x,0,10}]

Natürlich ginge NIntegrate, aber das wollen wir jetzt nicht.

Idee

BG=Graphics[{Blue,Opacity[0.1],
Rectangle[{0,0},{10,4}]}];

LP1=ListPlot[Table[{RandomReal[{0,10}],RandomReal[{0,4}]},
{n,1,(10^2)}],PlotRange->{{0,10},{0,4}},
AspectRatio->1,BaseStyle->{FontFamily->"Helvetica",FontSize->18}];

Show[Pf,BG,LP1]

Punkte würfeln und auszählen!

Monte-Carlo-Integration

NGes=10000;
NGood=0;
AGes=4.0*10.0;
For[i=0,i<NGes,i++,
xr=RandomReal[{0.0,10.0}];
yr=RandomReal[{0.0,4.0}];
(* Print[xr,"  ",yr,"  ",f[xr]]; *)
If[yr≤f[xr],NGood=NGood+1]]
AGood=(NGood/NGes)*AGes

NIntegrate[f[x],{x,0,10}]