Hallo ich habe ein Problem in Bezug auf eine numerische Integration in Mathematica. Hier ist meine TestfunktionMathematica: Bewertungsreihenfolge bei der numerischen Integration
Table[NIntegrate[
Boole[Sqrt[1 - cosk^2]*Sqrt[1 - cosk2^2] > Abs[a - cosk*cosk2]]/
Sqrt[(1 - cosk^2)*(1 - cosk2^2) - (a - cosk*cosk2)^2],
{cosk, -1,1}, {cosk2, -1, 1}, Method -> "GlobalAdaptive"], {a, -.9, .9, .1}]
Die Integration liefert komplexe Werte, obwohl aufgrund der Booleschen Funktion im Integra das Argument in der sqrt immer positiv sein sollte und daher nur in realen Werten führen. Ist es möglich, zuerst die boole Funktion zu evaluieren und nur dann, wenn es wahr ist, dann numerisch zu integrieren?
Wenn ich die gleiche Integral berechnen unter Verwendung einer Monte-Carlo-Integrationsstrategie
Table[NIntegrate[
Boole[Sqrt[1 - cosk^2]*Sqrt[1 - cosk2^2] > Abs[a - cosk*cosk2]]/
Sqrt[(1 - cosk^2)*(1 - cosk2^2) - (a - cosk*cosk2)^2], {cosk, -1,
1}, {cosk2, -1, 1}, Method -> {"MonteCarlo", "MaxPoints" -> 10^8,
"SymbolicProcessing" -> None}], {a, -.9, .9, .1}]
wie kann ich herausfinden, ob es eine Menge Nullen durch die Boolesche Funktion fasst? Ich denke, die Auswertung kann eine Menge Rechenzeit einsparen, wenn sie zuerst die Boolesche Funktion für jeden Abtastpunkt des Monte-Carlo-Gitters auswertet. Wenn ich "MonteCarlo" durch "AdaptiveMonteCarlo" ersetze, geht das Ergebnis völlig falsch.