Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

21

11.08.2015, 18:59

Bei Spielen werden häufig auch verschiedene Funktionen für verschiedene Intervalle benutzt, weil die Werte ab oder bis zu einem gewissen Eingabewert zu schnell oder zu langsam steigen. Also wäre es eventuell unmöglich eine einzige passende Funktion zu finden.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

22

13.08.2015, 14:24

Ich habe jezt nach übertrieben viel ausprobieren eine Formel gefunden, die für die ersten 30 Werte passt (danach nicht überprüft). Ausnahme sind genau drei Werte nämlich 10, 20 und 30. Das kann doch kein Zufall sein, oder? Außerdem stimmte ein Werte nicht, den ich berechnet hatte. Für x=5 ist f(x) = 25500 (nicht wie geschrieben 25230). Die Formel sieht so aus. Die Werte für x=10, 20 und 30 passen ganz knapp nicht nicht. Habt ihr vielleicht eine Idee, wie ich das gefixt bekomme?

Viele Grüße
newby

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

23

13.08.2015, 18:50

Als Erstes sollte auffallen, dass man die 2er in die übrigen Konstanten hineinmultiplizieren kann.
Da nur bestimmte Werte etwas daneben liegen, liegt nahe das der Term der gerundet wird, noch nicht ganz stimmt. (Rundung in die falsche Richtung)
Wenn man den mal von 1 bis 30 ausgeben lässt, fällt auf, dass wenn x eine Vielfachheit von 5 (also 5, 10, 15, 20, ...) ist das Ergebnis genau .5 enthält. Nur wenn x aber auch gleichzeitig eine Vielfachheit von 10 ist (10, 20, 30, ...), wird aber ein falsches Ergebnis geliefert. Wenn man mal die Rundung für x=5 und x=10 in Wolfram Alpha untersucht, fällt auf das einmal ab- und einmal aufgerundet wird. Wolfram Alpha rundet also mathematisch und nicht kaufmänisch. 0.5 wird immer auf die nächstliegende geraden Zahl gerundet. Mit dieser Erkenntnis kann man den Term so modifizieren, dass sich genau die Rundungen bei den Vielfachheiten von 10 ändern...
table[floor(408000/(1+ceil(0.6x²))), {x, 1,30}]

Die ersten 30 Zahlen scheinen nun überein zu stimmen.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (13.08.2015, 21:40)


24

13.08.2015, 21:03

Ziemlich gut, kann man dich liken? ;)
Ich bin beeindruckt, dass man sogar Terme, in denen zwei Rundungen vorkommen, mit genügend Aufwand bestimmen kann. Ist ja verrückt :D
Vielen Dank für die Hilfe und die ausführliche Erklärung noch dazu. Deswegen mag ich dieses Forum auch so gerne :)

25

13.08.2015, 22:28

Danke [Anonymer Benutzer]Soft , aber wir haben die Formel doch schon gefunden ;)
Reines BruteForce hätte wohl nicht funktioniert, da das bei Rundungen versagt. Und für Polynome ohne gibt es bessere Approximationsverfahren, die Koeffizienten bestimmen können.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

26

14.08.2015, 01:08

Es handelt sich in dem Fall aber um keine ganzrationale Funktion. Also würde man die Funktion natürlich nicht finden, in dem man koeffizienten von ganzrationalen Funktionen durchprobiert. Durch die Rundung ist es nichtmal eine gebrochen rationale Funktion. Natürlich könnte man sogar ganz ohne probieren analytisch eine Funktion 29sten Grades(immer ein Grad weniger als Punkte) durch die 30 Punkte legen. Nur leider wird diese schon beim 31. Punkt sehr sehr weit daneben liegen. Damit wäre also gar nix gewonnen.

Und Excel kann auch nicht zaubern und ist nicht mal eine gute Mathesoftware. Ich glaube also nicht, dass man damit etwas gewinnen kann.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (14.08.2015, 10:28)


27

14.08.2015, 10:05

Nope, es geht um das Spiel GigraWars, eine GalaxyWars Nachmache. Ich möchte ein Programm schreiben, welches mir optimale Baureihenfolgen berechnet.

Werbeanzeige