Potenzieren mit rationalen Potenzen ohne Math.pow

Diskutiere Potenzieren mit rationalen Potenzen ohne Math.pow im Allgemeine Java-Themen Bereich.
S

Scha7tenblut

Hi, für ein Berufsschulprojekt möchte ich eine Potenzfunktion schreiben, die 2 Parameter braucht, um das Ergebnis zu berechnen. Dabei soll sie nicht Math.pow verwenden und muss bei ihren Parametern double-Zahlen akzeptieren, also zum Beispiel 1,5 hoch -1,7. Könnt ihr mir da weiterhelfen, weil egal, wie ich versuche, es mir darzustellen, ich komme jedesmal dabei raus, dass Math.pow notwendig ist.
12955
So sieht die Funktion derzeit aus und ich möchte halt double ergebnis ohne Math.pow errechnen können.
Ich danke im Voraus für gute Vorschläge
Scha7tenblut
 
A

abc66

Du könntest das umlagern:
Java:
	static double pow(double x, double y) {
	    return Math.exp(Math.log(x)*y);
	}
jetzt müsstest Du nur noch log und exp umsetzen.
 
S

Scha7tenblut

Tut mir leid, habe vergessen zu sagen, ich möchte allgemein Math nicht nutzen. also ohne Math.pow, co.
 
Blender3D

Blender3D

So sieht die Funktion derzeit aus und ich möchte halt double ergebnis ohne Math.pow errechnen können
x^y b,x Element aus den reellen Zahlen
e Die Eulersche Zahl
Es gilt:
x = e^ln(x) -> x^y = (e^ln(x))^y = e^(y*ln(x))

Also benötigst Du noch den Logarithmus.
Beachten Sie, dass man mit den Logarithmen zwischen 1 -10
Logarithmen von beliebigen Zahlen berechnen kann, z.B.
lg 123456.78 = lg (1.2345678 * 105) = 5 + lg 1.2345678 oder lg 0.00012345678 = lg (1.2345678 * 10-4) = -4 + lg 1.2345678
Zur Berechnung der Logarithmen zwischen 1 -10 verwendet man z.B. eine Taylorreihe.
https://www.mathematik.ch/anwendungenmath/logarithmen/
 
A

abc66

das hab ich doch weiter oben:
return Math.exp(Math.log(x)*y);
Math.exp(a); ist Folgendes:
Returns Euler's number e raised to the power of a double value. [...]
also braucht er einmal den Logarithmus berechnen und einmal Math.exp...

Das aber auch NUR, wenn es sich um reelle/irrationale/double Zahlen handelt. Wenn der Exponent eine Ganzzahl ist, wäre es ja viel einfacher...
 
A

abc66

Ok ich müsste jetzt die Web browsing history von Vor zwei Tagen hervorkramen und mir 1000 Einträge angucken - dazu hab ich keine Lust. :p Wie gesagt es stand irgendwo, aber ich hab es nicht gebookmarked... Wenn ich es gebookmarked hätte, wäre es vielleicht noch schlimmer. o_O
 
S

Scha7tenblut

Im Grund muss man "nur" (*) herausfinden was die in Java.Math vorgegebene pow-Funktion intern tut: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html Und man kann durchaus 0^0 rechnen (Ergebnis 1): 0^0 im Google Rechner

(*)leicht gesagt
Math.pow verweist auf VMMAth.pow und dort ist es als native methode ohne weitere information definiert. Und zu dem null hoch null: Du kannst daran aus drei Richtungen rangehen: x hoch 0=1, 0 hoch x = 0 oder direkt undefiniert deklarieren, weil es sonst heißen würde, dass 0=1 und das ist ja, wie wir wissen, totaler Unsinn
 
S

Scha7tenblut

Also erneutes Edit: Es sollen nicht nur rationale Zahlen, sondern auch reelle Zahlen als Exponenten funktionieren. Die Basis ist in der Hinsicht erstmal egal, da sie ja dann einfach multipliziert wird/mit ihr "nur" gerechnet wird.
 
Thema: 

Potenzieren mit rationalen Potenzen ohne Math.pow

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben