Schneller Algorithmus für Potenzen mit Exponenten aus den reellen Zahlen



  • Hallo,

    ich suche einen Algorithmus für Potenzen mit einem reellen Exponenten.

    Ich habe mir folgenden überlegt (nur ein Beispiel, ich weiß):

    $6^{2,3}=\sqrt[10]{6^{23}}$

    Leider ist meine Vorgehensweise sehr uneffizient, vor allem wenn der Exponent aus dem Bereich der irrationalen Zahlen kommt.

    Kann mir einer einen besseren verraten?

    Danke im Voraus.

    [EDIT] Mir ist grad eingefallen, dass es mit Intervallschachtelung geht. Aber das geht bestimmt noch besser 😉 [/EDIT]



  • Wie wär's mit Logarithmus und e-Funktion?



  • Kannst du mir bitte sagen, wie das geht?



  • z = xy | log
    log z = y * log x | e()
    z = e^y*log x^

    MfG Jester



  • Und was machste, wenn x < 0? Das ist außerdem kein Algorithmus. Würde mich auch mal interessieren, wie man das machen könnte, so à la Wurzelziehen per Iterationsverfahren.



  • WebFritzi schrieb:

    Und was machste, wenn x < 0?

    Würdest Du mir freundlicherweise (-2)[wur]3[/wur] ausrechnen? Ich finde die Aufgabenstellung sieht reell aus.

    WebFritzi schrieb:

    Das ist außerdem kein Algorithmus.

    Ein Algorithmus ist (grob gesagt) ein Verfahren um von einem Problem zu einer Lösung zu kommen. Also ist das ein Algorithmus. Genauso wie x+y der Algorithmus zur Berechnung der Summe zweier Zahlen ist.

    Ansonsten fehlen die Randbedingungen: Was darf ich dennk benutzen und was nicht?

    MfG Jester



  • Dumme Frage: Was spricht gegen die Exponentialreihe?



  • Jester schrieb:

    WebFritzi schrieb:

    Und was machste, wenn x < 0?

    Würdest Du mir freundlicherweise (-2)[wur]3[/wur] ausrechnen? Ich finde die Aufgabenstellung sieht reell aus.

    Hö? Verstehe nicht, was du meinst. Ich glaube, du hast mich nicht verstanden. Also nochmal: wie berechnest du mit deiner Methode (-2)3?



  • Taurin schrieb:

    Dumme Frage: Was spricht gegen die Exponentialreihe?

    Nichts, aber der Logarithmus müsste bei Jesters Lösung auch noch berechnet werden.



  • WebFritzi schrieb:

    Nichts, aber der Logarithmus müsste bei Jesters Lösung auch noch berechnet werden.

    Für den es doch auch eine Potenzreihe gibt....



  • Jau, aber nur in [1,2].



  • WebFritzi schrieb:

    Jau, aber nur in [1,2].

    Reicht ja im Grunde aus.

    ϕ:=log2(x)\phi := \lfloor log_2(x) \rfloor

    Dann ist

    ln(x)=ϕln(2)+ln(x2ϕ)ln(x) = \phi \cdot ln(2) + ln(\frac{x}{2^{\phi}})

    Somit kann die Reihendarstellung des ln verwendet werden und Phi kann ja relativ einfach durch wiederholtes Teilen berechnet werden.

    Aber eigentlich nur eine Spinnerei. Wirklich effizient dürfte das nicht sein.

    Das Ausgangsproblem würde ich mit dem Newton-Verfahren näherungsweise lösen.



  • space_ schrieb:

    Das Ausgangsproblem würde ich mit dem Newton-Verfahren näherungsweise lösen.

    Öhm, wie das?



  • Also ich sehe Jesters Lösung immer noch als die Beste an, denn wenn die Basis negativ ist, dann ist bei dem Algorithmus eh eine komplexe Zahl als Lösung fällig, sei das der Fall, fängt man halt alle negativen Basen ab, ist sie negativ, aber der Zähler des Exponenten positiv, gehts auch wie gehabt weiter, andernfalls abfangen, komplexe Lösung bestimmen... darüber hinaus sind sicherlich die meisten anderen Lösungen zu umfangreich und rechenintensiv.



  • Winn schrieb:

    wenn die Basis negativ ist, dann ist bei dem Algorithmus eh eine komplexe Zahl als Lösung fällig

    Quatsch!



  • WebFritzi schrieb:

    space_ schrieb:

    Das Ausgangsproblem würde ich mit dem Newton-Verfahren näherungsweise lösen.

    Öhm, wie das?

    Da man bei einem irrationalen Exponenten r sowieso verloren hat (ich geh mal davon aus, dass es hier um ein entsprechendes Programm geht. Für exakte Werte nimmt man halt die Reihen), approxmiert man die Zahl einfach durch eine rationale Zahl p/q.

    Nun einfach ausnutzen, dass
    a^{p/q} = \sqrt[q]{a^p}

    D.h. gesucht ist x mit
    x = \sqrt[q]{a^p}

    Gleichbedeutend (naja): Gesucht ist eine Nullstelle von
    f(x)=xqapf(x) = x^q-a^p

    Iterationsverfahren:
    xn+1=x_nf(x_n)f(x_n)=x_nx_nqapqx_nq1x_{n+1} = x\_n - \frac{f(x\_n)}{f'(x\_n)} = x\_n - \frac{x\_n^q-a^p}{q \cdot x\_n^{q-1}}

    Geeignet vereinfachen, Startwert "passend" wählen und lositerieren.

    Also nochmal: wie berechnest du mit deiner Methode (-2)3?

    Bei negativer Basis sind sowieso nur ganzzahlige Exponenten möglich. Also in dem Spezialfall einfach via Schulmethode: -2 * -2 * -2. Zeitaufwand: O(n)
    Das geht aber auch in O(log n), womit ebenfalls x^q und a^p aus der obigen Iterationsvorschrift berechnet werden können.



  • WebFritzi schrieb:

    Winn schrieb:

    wenn die Basis negativ ist, dann ist bei dem Algorithmus eh eine komplexe Zahl als Lösung fällig

    Quatsch!

    Na sicher, wenn die Basis negativ und der Zähler des Exponenten ungerade ist, folgt ein negativer Wert, der wenn noch eine Wurzel gezogen werden muß zu einer komplexen Zahl führt... das steht aber auch im Text, zwar ein Zeile später, als jene die Du zitiert hast, aber sie steht dort...



  • Winn schrieb:

    Na sicher, wenn die Basis negativ und der Zähler des Exponenten ungerade ist, folgt ein negativer Wert, der wenn noch eine Wurzel gezogen werden muß zu einer komplexen Zahl führt...

    Wenn man keine Ahnung hat... du weißt schon. Beispiel: (1)5/3(-1)^{5/3}. Aber du hattest recht. Es kommt tatsächlich eine komplexe Zahl raus, aber keine mit nicht verschwindendem Imaginärteil. Und das Gegenteil war sicher deine Behauptung. Für die Zukunft: In mathematischen Diskussionen mit mir wirst du meist den kürzeren ziehen.

    @space: Guter Ansatz! 🙂



  • WebFritzi schrieb:

    Für die Zukunft: In mathematischen Diskussionen mit mir wirst du meist den kürzeren ziehen.

    Das kann sehr gut sein... mir ist nun aber der Geschmack dieser Ansage fadig. Und hat in einem Forum meiner Meinung nach nichts zu suchen. Und das... hatte ich Dir schonmal gesagt.



  • Sorry, hatte den ;)-Smiley am Ende vergessen. 😉


Anmelden zum Antworten