Algorithmus herausfinden von Zahlenfolge?
Ich habe eine Zahlenfolge, wie z.B. 5, 10, 18, 32, 52. Die mehr oder weniger eine Kurve darstellen. Hab bei Log,Sin,Cos aber nicht so wirklich aufgepasst...
Wie kann ich den zugrundeliegenden Algorithmus herausfinden?
Edit:
Es geht um Exp/Lvl bei einem Videospiel. Wie das System funktioniert weiß ich leider nicht, aber ich habe ziemlich viele Werte:
5, 10, 18, 32, 52, 81, 119, 168, 231, 307, 400, 510, 639, 788, 959, 1154, 1375
Ich würde die Zahlenreihe gern erweitern ohne die Kurve zu verändern. Sie ist leider nicht linear.
2 Antworten
Also bei sowas am besten erst einmal plotten. Also so:
Das sieht nach einer einfachen Exponentialfunktion aus. 2. Grades.
Spiele machen so etwas aber auch gerne unnoetig kompliziert. Aber wir koennen ja mal versuchen eine einfache Quadratische Funktion aus den Punkten zu bilden, vielleicht haben wir ja Glueck und unsere Annaeherung ist gut genug.
Da ich jetzt nicht viel manuell rechnen will mache ich das mal fix mit einem online Rechner aber allgemein braucht man nur 3 Punkte in die allgemeine Formel einer Quadratischen einzusetzen und dann die Unbekannten aufloesen: http://www.analyzemath.com/parabola/three_points_para_calc.html
Um die Genauigkeit zu erhoehen nehme ich Punkte, die weiter auseinander liegen. (Also nicht direkt nebeneinander sind) Ich nehme auch nicht den ersten, da es dort vielleicht durch Rundungsfehler wegen der niedigen Zahlen auch zu Problemen kommen koennte.
Also z.B.
3|18
10|307
17|1375
Die Website gibt mir nun dieses Ergebnis:
Das ist mit Sicherheit nicht genau was das Game tut, da es doch sehr schiefe Zahlen sind. Aber nimmt man dies nun sollte es genau genug sein um ungefaehr die Erfahrung fuer Level 18 vorherzusagen. Also x = 18 einsetzen.
Das ergibt nun 1591,176, wir runden ab und kommen auf wahrscheinlich 1591 XP.
Das ist nicht 100% genau, da man nicht wissen kann was fuer eine Funktion die Devs da genau verwenden, dafuer braucht man genauere Analysemethoden aber es ist schon genug um eine relativ genaue Vorhersage treffen zu koennen. Man kann auch probieren ob bei einem schon bekannten Wert auch das Gleiche wieder herauspurzelt:
z.B. x = 13
Das ergibt dann 669.331 anstatt der tatsaechlichen 639.
Nun faellt schon auf, dass es wohl keine Quadrahtische Funktion ist, sondern vielleicht eine Kubische. Leider gibt es eine unendliche Anzahl von Funktionen, die auf eine Zahlenfolge passen koennten. Somit weiss man nicht genau welche Funktion es sein muss nur anhand der Zahlen. Da hilft nur Erfahrung und ausprobieren. Wenn man eine gefunden hat, die mit absolut glatten Zahlen heraus kommt dann hat man auch "den code geknackt" sozusagen.
Es gibt ein Tool, das dies erleichtert, das findet sich hier:
Da kann man seine Punkte eingeben und versuchen verschiedene Funktionen zu "passen" um zu sehen ob eine doch geht.


Habe aus langeweile mit dem Tool ein bisschen rumgespielt. Die genaue Funktion habe ich immer noch nicht aber eine doch sehr genaue Annaeherung nun
y = 2.088235 + 2.334967*x + 0.2577399*x^2 + 0.256106*x^3
- man müsste schon n bisschen über das System wissen, das diese Zahlenfolge gemacht hat...
- oder man braucht viel mehr Zahlen...
- ein Polynom n-ten Grades kann man perfekt durch (n-1) Punkte biegen...
- aber sowas suchst du wohl nich...
- bei ner Geraden könnte man die Summe der Quadrate des Fehlers in jedem Punkt minimieren...
- das geht wohl so ähnlich auch bei log, exp, sin, cos, ... aber nach ner Schwingung sehn die Beispiel-Zahlen ja nun wirklich nich aus...
ja... da hat man dann viele Freiheiten und macht trotzdem nix falsch... LOL so wie Zap Brannigan als er einmal den Kurs festgelegt hat... https://www.reddit.com/r/futurama/comments/onfiw/apparently_the_captain_of_costa_concordia_the/
Ich will ja nicht angeben ihr beiden aber ich hab als ich fuer meinen Beitrag nach Tools online geschaut hab das hier gefunden: https://mycurvefit.com/
LEIDER gibts nur nen kostenlosen Test, das ist schon sehr bloed. Sowas braeuchte man in openSource und kostenlos. Einfach zu geil, mir ging sofort die Hose auf als ich es ausprobiert hatte. ;-;
Durch n+1 Punkte.