# berechnung von potenzen und wurzel-ziehen ohne klasse "



## januarkind (12. Mai 2007)

Hallo,

wie schon oben gesagt, muss ich ein Programm erstellen, dass potenzieren und die Wurzel ziehen kann, all das aber ohne die Klasse "Math". Potenzieren hab' ich mir schon wie folgt überlegt:


```
Eingabe von 'a' und 'b'
erg=1
for (int i=1; i <= b; 1++)
  erg = erg * a;
```

das müsste im Grunde funktionieren.. oder?
Probleme gibt's aber noch mehr mit dem Wurzel ziehen.
Das soll für beliebige a und b funktionieren und zwar: 
	

	
	
		
		

		
			





 (sorry, aber besser gings nicht *g*)

Habt ihr da irgendwelche Ideen? :/


----------



## januarkind (12. Mai 2007)

entschuldigt, ich meinte natürlich i++.


----------



## SlaterB (12. Mai 2007)

wow, bist du dir sicher die Aufgabe richtig verstanden zu haben?
im Vergleich zu der Potenz-Berechnung nur mit natürlichen Zahlen ist das ja mega-schwer,

habe ich selbst noch nie gemacht,
vielleicht ist das hier der einfachste Weg:
http://de.wikipedia.org/wiki/Intervallhalbierungsverfahren

wenn du was kompliziertes lesen magst  :
http://de.wikipedia.org/wiki/Newtonverfahren
http://de.wikipedia.org/wiki/Wurzel_(Mathematik)


----------



## januarkind (12. Mai 2007)

Bei beiden fällen sollen a & b є Z sein.
Gibt's in Java nicht noch irgendeine Klasse, anstatt "Math", die mir da helfen könnte? Ich seh auch bei den Links nur schwarz. *g*


----------



## SlaterB (12. Mai 2007)

wenn auch bei Potenz b negativ sein kann, dann musst du die Potenz-Operation ändern,
oder was kommt dort bei -5^-7 bei dir raus?

-----

also der obere Link ist doch leicht,
fange mit a > o und b> 0 an,

wenn du dann die a-te Wurzel aus b hast,
ist das Ergebnis auf jeden Fall zwischen 0 und b,

wähle die Mitte = b/2.0;
berechne h^a

da ist h zwar nicht unbedingt eine ganze Zahl, aber sollte mit einem ähnlichen Potenz-Alogrithmus immer noch funktionen,
der hoch-Parameter ist ja ne ganze Zahl, das ist wichtige für die Schleife,

wenn h^a größer oder kleiner als b ist,
dann arbeitest du entweder im Intervall (0 - h) oder (h - b) weiter

genau die gleiche Situation wie vorher: Mitte suchen, berechnen vergleichen,
bis irgendwann die gesuchte Zahl gefunden oder die Abweichung sehr klein ist,

so funktioniert das Verfahren, schwer, aber Schritt für Schritt machbar,

-------

wenn es funktioniert, dann die negativen Zahlen mit einbauen

und auf Spezialfälle achten,
z.B. geht die (zweite)-Wurzel aus -1 nicht, die dritte Wurzel dagegen schon


----------



## januarkind (12. Mai 2007)

Tschuldige, aber ich versteh null. Ich hab keine Probleme Algorithmen umzusetzen, aber erstmal das "mathematische" ist für mich das schwerste.. und n Matheass bin ich absolut nicht.. 
bedeutet denn die Aufgabenstellung, dass ich auch negative Zahlen potenzieren muss?


----------



## SlaterB (12. Mai 2007)

> bedeutet denn die Aufgabenstellung, dass ich auch negative Zahlen potenzieren muss?
??

> Bei beiden fällen sollen a & b є Z sein. 
=
Auch bei Potenz-Aufgabe sollen a & b є Z sein. 
= 
Auch bei Potenz-Aufgabe können a & b < 0 sein. 

wenn wir da die gleiche Vorstellung vom Zahlenraum Z haben,

-------

dass du das ganze nicht verstehst verwundert mich nicht,
hab ja gesagt: für deinen Kenntnis-Stand sehr schwer

ich jedenfalls kann nicht mehr dazu sagen


----------



## Der Müde Joe (12. Mai 2007)

```
public double pow(double x, double y){
	return (y>0) ? power(x, y) : 1/power(x, -y);
}

private double power(double x, double y){
	if ( y == 0){
		return 1;
	}
	if(y%2 == 0){
		return power(x*x , y/2);
	}
	else{
		return x * power(x , y-1);     		
	}	
}
```

so etwa ...


----------



## Leroy42 (12. Mai 2007)

januarkind hat gesagt.:
			
		

> Bei beiden fällen sollen a & b є Z sein.



*i*-te Wurzel aus( *i* )  ???:L

Edit:
= i^(1/i)
= i^(-i)
= 1 / i^i
=  ???:L


----------



## Der Müde Joe (12. Mai 2007)

Leroy42 hat gesagt.:
			
		

> januarkind hat gesagt.:
> 
> 
> 
> ...



:?: 

i^(1/x) = x-te Wurzel von i
i^(-x)   = (1 / i)^x  = 1 / (i^x) 

und Z (das grichische) ist die Menge der Ganzen Zahlen =  ...,-2,-1,0,1,2,....

die x-te Wurzel aus i  : i^(1/x)

wobei 1/x eine Rationale Zahl ist (oder Q)

dh ein rationaler Exponent in einer Potenz ist gleich einer Wurzel
i^(x/y) = (y-te Wurzel)i^x

http://de.wikipedia.org/wiki/Potenz_(Mathematik)
http://de.wikipedia.org/wiki/Ganze_Zahlen
http://de.wikipedia.org/wiki/Rationale_Zahl


----------



## Leroy42 (12. Mai 2007)

Der Müde Joe hat gesagt.:
			
		

> ...



Und was ist nun die i-te Wurzel aus i

Beziehungweise i^i ?

Edit: Ach ja! 

i^i = e^(-pi/2) = 0.20787...

Also was reelles!

Schon irgendwie merkwürdig?  :shock:  ???:L


----------



## Quickbeam2k1 (12. Mai 2007)

also man kann wurzel z.B mit dem Newtonverfahren berechnen.

möchtest du die n-te Wurzel von a bestimmen, musst du mit dem newton verfahren "nur" eine spezielle Nullstelle von f(x)=x^n - a bestimmen.

Also das newtonverfahren würde ich auf jedenfall verwenden.
Wofür brauchst du denn die Aufgabe? Du kannst hier ja auf jedenfalf mit den gegebenen Zahlen Lösungen erzeugen, die komplex seien müssen.


----------



## Milo (12. Mai 2007)

Hi,



			
				Quickbeam2k1 hat gesagt.:
			
		

> also man kann wurzel z.B mit dem Newtonverfahren berechnen.



Für die Qudadratwurzel reicht es, über den Flächeninhalt eines Quadrates zu gehen, analog lässt sich das nach oben steigern. Ein Beispielcode findest Du unter anderen hier als MatLab-Code.

Milo


----------



## januarkind (13. Mai 2007)

Ich brauch die Aufgabe für den Informatikunterricht... Wir haben Java seit ca. 1einhalb Monaten und der Lehrer meinte, die Aufgabe hier sei "komplex, sonst aber sehr einfach zu lösen".. ts. Naja, auf jeden Fall danke ich euch, auch wenn ich kein Stück weiter bin, macht aber auch nix, ich hab's immerhin probiert. Dankeschön für eure Mühe!


----------



## Der Müde Joe (13. Mai 2007)

januarkind hat gesagt.:
			
		

> Ich hab keine Probleme Algorithmen umzusetzen



na dann nutzt doch mal WIKIPEDIA

http://de.wikipedia.org/wiki/Wurzel_(Mathematik)

da hats sogar ein Beispiel des Newtonverfahren .....

sollte wohl nicht der Brüller sein eine Methode mit
zwei Variablen zu schreiben?
ne for Schleife mit x Iterationen und die Annäherung steht....


----------

