Griever: Berechnungsformel zurückberechnen

Hallo

Ich habe hier eine Formel, die anhand eines Wertes (X), einen zweiten wert berechnet (Y). Das ganze läuft unter PHP. Die Formel hat sich ein Kumpel von mir einfallen lassen. Jedoch weiß ich garnicht, wie die so richtig funktioniert.

$Y = floor(pow($X/10,0.5));

Habe 2 Fragen.

1. Könnte mir einer die Formel mal (für doofe) erklären?

2. Ist es möglich, anhand eines Y-Wertes den X-Wert herauszuberechnen? (die Formel also Rückwärts gehen?)

Hoffe, mir kann da mal jemand helfen. Bin nämlich etwas überfragt.

MFG
Griever

  1. Hallo,

    $Y = floor(pow($X/10,0.5));

    Habe 2 Fragen.

    1. Könnte mir einer die Formel mal (für doofe) erklären?

    ... ka, das sind mathefunktionen: such mal im PHP-Manual

    1. Ist es möglich, anhand eines Y-Wertes den X-Wert herauszuberechnen? (die Formel also Rückwärts gehen?)

    Es gibt für (fast) alles umkehroperationen/umkehrfunktionen.

    MfG

  2. $Y = floor(pow($X/10,0.5));

    1. Könnte mir einer die Formel mal (für doofe) erklären?

    Gerne doch. Wobei: pow ist sehr verbreiteter Funktionsname, der dir z.B. auch in C begegnen wird (ich vermute sogar, dass PHP dort einfach nur pow in C aufruft...)

    Also, in mathematischer Notation steht dort nichts anderes als:

    [latex]
    y = \left(\frac{x}{10}\right)^{\frac{1}{2}}
    [/latex]

    Dass kann auch noch anders schreiben:

    [latex]
    y = \sqrt{\left(\frac{x}{10}\right)}
    [/latex]

    floor macht dann nichts anderes als den Wert der rauskommt, auf die nächste ganze Zahl (aka Integer) abzurunden.

    1. Ist es möglich, anhand eines Y-Wertes den X-Wert herauszuberechnen? (die Formel also Rückwärts gehen?)

    Natürlich ist dass möglich. Das ist eine relativ triviale Gleichung, die sich mit etwas Aufwand nach x umformen lässt. Das überlasse ich dir mal.

    Einziges Problem ist dass floor, da dir dadurch Informationen verloren gehen. Daher wirst nicht das ursprüngliche Ergebnis bekommen. Unter Einbeziehung von Float würde es unendlich viele Lösungen für die nach x umgestellte Gleichung geben.

    Gruß

    Stareagle

  3. Tach.

    $Y = floor(pow($X/10,0.5));

    [latex]
    y = \left\lfloor \left(\frac{x}{10}\right)^\frac{1}{2} \right\rfloor = \left\lfloor \sqrt{ \frac{x}{10}} \right\rfloor
    [/latex]

    1. Könnte mir einer die Formel mal (für doofe) erklären?

    Das ist eine etwas umständliche Schreibweise für: Ziehe die Quadratwurzel aus $X/10 und schmeiß die Nachkommastellen des Ergebnisses weg. $X darf dabei nicht kleiner als Null sein.

    1. Ist es möglich, anhand eines Y-Wertes den X-Wert herauszuberechnen? (die Formel also Rückwärts gehen?)

    Nur in besonderen Fällen. Durch das Abschneiden der Nachkommastellen gehen Informationen unwiederbringlich verloren. Nur wenn nach dem Wurzelziehen sowieso eine ganze Zahl rauskommt, kannst Du auch wieder $X korrekt berechnen. Andernfalls kommst Du höchstens in die Nähe:

    [latex]
    x = 10 \cdot y^2
    [/latex]

    --
    Once is a mistake, twice is Jazz.
    1. Hallo Blaubart,

      Andernfalls kommst Du höchstens in die Nähe:

      Man kann zumindest einen Bereich angeben.

      [latex]
      10 \cdot y^2 \le x < 10 \cdot (y+1)^2
      [/latex]

      Beispiel:
      x = 250
      y = floor(sqrt(x/10)) = 5 (Abrunden wäre hier nicht nötig)

      Mit obiger Formel erhält man für y = 5:

      [latex]
      250 \le x < 360
      [/latex]

      Wenn x = 359 wäre, würde also auch y = 5 rauskommen.

      Jonathan

    2. Moin!

      Das ist eine etwas umständliche Schreibweise für: Ziehe die Quadratwurzel aus $X/10 und schmeiß die Nachkommastellen des Ergebnisses weg.

      floor() macht was anderes als die Nachkommastellen wegzuwerfen.

      floor(2.45765) = 2
      floor(-2.378689) = -3 (!)

      Nur der durch pow() eingeschränkte Wertebereich rettet dich in diesem konkreten Fall.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
      1. Tach.

        floor() macht was anderes als die Nachkommastellen wegzuwerfen.

        floor(2.45765) = 2
        floor(-2.378689) = -3 (!)

        Ist mir bekannt. Da aber sowieso eine Wurzel vorher gezogen werden sollte, muß (zumindest in PHP) ein Wert >= 0 hineingesteckt werden, und es kommt auch ein solcher heraus. Für den macht floor() genau das, was ich beschrieben habe.

        --
        Once is a mistake, twice is Jazz.
  4. An alle:

    Scheinbar ist es ungünstig, dass dort ein floor drinsteht. Aber das soll so sein.

    Grund: Das ganze ist ein Script zur Berechnung eines Levels aufgrund von Erfahrungspunkten. Es sind also immer Ganzzahlen.

    Wie die ganze Sache funktioniert, weiß ich nun. Ich danke euch allen, dass ihr euch die Mühe gemacht habt, mir das mal zu erklären. Somit kann ich ja, wie es aussieht, anstatt pow für die berechnung, sqrt nehmen. Somit würde die Formel kürzer werden:

    $Y = floor(sqrt($X / 10));

    Nochmal zur "Rückberechnung" von X:

    Ich möchte nur erkennen, welches der Mindesterforderliche Wert X ist, um Y zu erreichen.

    Z. B.:

    X ist 0 bei 8
    X ist 0 bei 9
    X ist 1 bei 10 <<<
    X ist ...
    X ist 1 bei 38
    X ist 1 bei 39
    X ist 2 bei 40 <<<
    X ist ...
    usw.

    Die mit "<<<" angezeigten werte möchte ich errechnet haben. ;D Nur auf die Formel komm ich nicht. Aber da ja jetzt bekannt ist, dass es die "Wurzel" ist, dämmerts mir.

    Ich werde schauen, ob sich mit "try through work it" was bewirkt. Werde dan natürlich meine "Lösung" hier schreiben ;D

    Danke an euch, dass ihr euch mal die Zeit genommen habt.

    MFG
    Griever

    1. Hi,

      Die mit "<<<" angezeigten werte möchte ich errechnet haben. ;D Nur auf die Formel komm ich nicht.

      10*n² wäre ein Anfang.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Hi,

        Die mit "<<<" angezeigten werte möchte ich errechnet haben. ;D Nur auf die Formel komm ich nicht.

        10*n² wäre ein Anfang.

        Cheatah

        Jap. Habe es exakt so gemacht ;D

        Somit wird bei meinem Game (http://fraggit.dl.am/) derzeit der Rest-EXP-Wert berechnet.

        Danke für eure Mühe ;D

        MFG
        Griever