![]() |
MonteCarlo....Optimierung des Grundgedankens?
Hi,
der Grundgedanke der Monte-Carlo-Simulation zur Berechnung ist ja folgender: ganz viele zufällige punkte suchen und die zählen die im kreis sind...dann ist pi:=4*PunkteImKreis/PunkteGesamt wäre nicht folgender Ansatz viel Performanter zu realisieren? (da kein zufallsgenerator...) man nimmt keine zufälligen punkte sondern erstellt ein Raster (zB 256*256) und prüft jeden punkt. Vorteile: - kein zufall => weniger rechenaufwand (?) - keine Abweichung (Die zufällige Abweichung die zwangsweise aus den zufälligen Punkten entsteht fällt weg) - zwangsläufig nur Integer-Rechnung... Die Genauigkeit könnte man durch ein einfaches vergrößern des Rasters erreichen... Würde das funktionieren? Wäre das theoretisch schneller? |
Re: MonteCarlo....Optimierung des Grundgedankens?
also es geht ja gerade um die Zufälligkeit bei der Sache
Zitat:
|
Re: MonteCarlo....Optimierung des Grundgedankens?
Zitat:
und dann kann man doch gleich die komplett gleichmäßige verteilung nehmen, oder nicht? |
Re: MonteCarlo....Optimierung des Grundgedankens?
Zitat:
Greetz alcaeus |
Re: MonteCarlo....Optimierung des Grundgedankens?
Da hast Du im Prinzip Recht, nur ist dein Gedankengang hier nicht wirklich begründet, aus mehreren Gründen:
Die Pi-Bestimmung über die Monte Carlo Methode ist nur ein simples Anwendungsbeispiel, das immer wieder gern herangezogen wird, um die Methode verständlich rüber zu bringen. Und weiter probier ich mal, die die Statistik etwas näher zu bringen. Du gibtst Dir ein 100x100 Raster, und nach deiner Methode kriegst Du ja 10.000 Testfälle. Über Zufall kann ich beliebig viele Testfälle generieren lassen, und krieg daduch natürlich auch irgendwann die gleiche Genauigkeit raus. Es geht also nicht drum, zu zeigen dass die MCM performant, genau und schnell ist. Sie ist einfach nur eine Methode, über Zufälle gewisse Aussagen treffen zu können. In deinem Pi-Beispiel gibt es viele andere Methoden, die viel genauer sind und vor allem viel schneller sind, diese 3,1415... zu bestimmen. Das ist aber leider nicht bei allen physikalischen, biologischen, mathematischen... Vorgängen möglich, einen geeigneten, schnellen Algo zu finden, da zu oft viel zu viel Randwertprobleme einfliessen, die eine genau Bestimmung einfach unmöglich machen. Und genau da greift die MCM, da sie unabhängig von der Komplexität halbwegs vernünftige Aussagen machen kann. Voraussetzung ist aber immer wieder irgendein grundlegendes Modell, denn sonst nützt auch die MCM nichts. Beispiel aus meiner Diplomarbeit: Geht ein Lichtstrahl durch ein nicht transparentes Medium, so wird die Intensität geschwächt, und zwar exponentiell mit der Tiefe. Diese Kenntnis muss man haben, um über die MCM einen Lichtstrahl zu simulieren. |
Re: MonteCarlo....Optimierung des Grundgedankens?
hmm....prinzipiell hat Jelly ja recht :?
Aber ich konnte es natürlich nicht lassen :)
Delphi-Quellcode:
relevante rechenzeiten...
function CalculatePi(Raster: Int64): Extended;
var i: Integer; Upper, Lower, T, RQuad: Int64; E: Currency; //Currency...selbe genauigkeit, 2 Byte weniger...die Nachkommastellen interessieren hier eh nicht begin Upper:=0; Lower:=0; RQuad:=Raster*Raster; //Einmal Quadrieren reicht for i:=0 to Raster-1 do begin T:=i+1; // Wenns Integer bleibt gibts nen Overflow E:=Sqrt(RQuad - T*T); Inc(Upper,Ceil(E)); //Max und Min zählen Inc(Lower,Floor(E)); end; Result:=2*(Upper+Lower)/RQuad; //Aus Durchschnitt PI berechnen end; die gibts erst ab eine Rastergröße von ca. 1.000.000 (Athlon 2600+) Übersicht:
Delphi-Quellcode:
gemessen mit QueryPerformanceCounter....
Raster Millisek Genauigkeit(Stellen)
1000 0 2 10000 2 4 100000 21 5 1000000 214 6 10000000 2225 7 100000000 22681 8 Sinnlos...aber es geht... :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz