2016-05-17 16 views

Antwort

3

pow für Punkt Argumente Floating wahrscheinlich als exp (y log x) implementiert ist (dies ist, nebenbei gesagt, bemerkenswert klug seit log und exp insbesondere sehr schnell auf dem modernen Chipsatz ausgewertet werden kann). Natürlich funktioniert das nicht für nicht positive x, daher Ihre Ausgabe.

Der Standard legt fest, dass pow nur für eine positive x wenn x und y sind Gleitkomma- definiert ist. http://en.cppreference.com/w/cpp/numeric/math/pow ist eine gute Referenz.

+0

Danke. Ich habe versucht, zu exp (y ln x), aber gescheitert. Weil ln (-0,7) zurückliefert, zeigt dies einen Domänenfehler an. Laut Referenz in pow geschrieben (-1, ± ∞). ± ∞ bedeutet eine beliebige Anzahl? sogar dezimal ?? – user1320165

+0

Sie verstehen, dass -0,726354 auf 0,954 erhöht hat keine echte Lösung? (Eher eine Familie komplexer Zahlen)? – Bathsheba

+0

Ich löste es beziehen sich auf obere Antwort. Vielen Dank. – user1320165

5

Die Potenz negativer Zahlen mit nicht ganzzahligem Exponenten sind in der Regel komplexe Zahlen. Die pow-Funktion gibt eine double zurück, die eine Annäherung an eine reelle Zahl darstellt. Daher kann das nicht funktionieren.

Wenn Sie daran interessiert sind nur in dem absoluten Wert sind, können Sie es als umschreiben:

x^y = (x)^y * (-1)^y

Sie die linke berechnen Begriff mit pow weil -x ist positiv. Der richtige Ausdruck hat einen absoluten Wert von 1.

Die Funktion pow gibt übrigens keinen "unendlich" -Wert zurück, sondern einen Wert, der auf einen Domänenfehler hinweist.

+0

Zuerst. Danke für Corret an mich. Ich werde feststellen, dass ein Domänenfehler vorliegt. und Ist diese Gleichung ((-1)^y) Immer 1 zurückgeben ??? – user1320165

+0

@ user1320165: Der Wert von (-1)^y ist nicht wirklich 1, sondern eine komplexe Zahl mit einem absoluten Wert von 1. In der komplexen Ebene sind dies Werte auf dem Einheitskreis. –

+0

Laut Ihrer Antwort. 1 ist ein ungefährer Wert. Ich verstehe es. Vielen Dank. – user1320165