Berechenbarkeit Pi Algorithmus

hunter19441

Grünschnabel
Hallo Leute,

ist es möglich die Zeit die ein Algorithmus benötigt voraus zu sagen ?
Ich hab einen Tröpfelalgorithmus für die Zahl Pi. Ich nutze CodeBlocks mit Mingw. Nach jeder Programmausführung zeigt Codeblocks in der Konsole die benötigte Zeit in Sekunden, nachdem das Programm durchgelaufen ist. Diese Zeitangabe ist mein Versuchswert.
In dem Algorithmus kann ich entsprechend die Nachkommastellen im Quellcode angeben die berechnet werden sollen, während der Laufzeit selber wird keine Eingabe getätigt.
Ergebnisse:
1000 Stellen: 0,14s
5000 Stellen: 1,5s
8000 Stellen: 3,6s
10000 Stellen: 5,7s
Ich habe mehrmals gemessen und Durchschnittswerte gebildet.

Mit diesen Werten müsste sich doch eine Funktion aufstellen lassen und man sieht bereits, dass diese nicht linear sein kann. Also Oberstufenmathematik raus und los gehts. Ich habe eine eFunktion errechnet mit den Punkten A(3,6|8000); B(5,7|10000) ABER die daraus resultierende Funktion gibt falsche Werte aus, so dass sich die Funktion nicht zur Voraussage der benötigten Zeit verwenden lässt.


Danke für Tipps
 
Hi

Wenn es nur derartig grob sein soll (also nicht auf 0.001 Sekunden genau oder so) kann man schon Voraussagen machen, nur reicht Oberstufenmathematik allein da nicht. Mit einer O(...)-Laufzeit kann man etwas mehr machen, und der eigentliche Code ist noch viel besser....

Btw., ist "eFunktion" ein Tippfehler oder meinst du wirklich e wie die Eulersche Zahl?
Wenn ja, warum denkst du dass e für deinen Code relevant ist?
(evt. stimmt es ja auch, aber ohne Grund wohl nicht)
 
Als Erweiterung: Idealerweise findest du das Landau-Theta deines Codes zur Berechnung, damit kannst du das ganze bis auf einen konstanten Faktor einschränken.
 
Ich habe mir gedacht, dass die Zeit je nach Nachkommastellen exponentiell ansteigt. Daraus hab ich dann gefolgert, weil man Exponentialfunktionen von f(x)=a^x über den Logarithmusnaturalis in eine einheitliche Form bringen kann, einfach zwei Gleichungen aufstellen, Variablen raus finden.. usw - Wäre auch zu einfach gewesen, bin da wahrscheinlich mega auf dem Holzweg :D

Es soll grob sein, ich will einfach nur sagen können für X Stellen braucht man Y Sekunden oder Stunden.
 
Ich habe mir gedacht, dass die Zeit je nach Nachkommastellen exponentiell ansteigt.
Kann sein, muss aber nicht. Je nach Code. Und auch wenn was Exponentielles dabei ist
muss das noch nicht alles sein; zusammengesetze Sachen wie e^n*log(n)+4000n usw.usw.. gehn auch

..mit dem Code können wir dir weiterhelfen...
 

Neue Beiträge

Zurück