Natürlich...
Also ...
Mir geht es um die Bestimmung der Nachkommastellen der Zahl Wurzel 2 (etwa 1,414 bla)
Dazu muss ich als erstes 2 Dinge festlegen, eine obere und eine untere Grenze. Ich habe 1 und 2 Gewählt.
1² = 1
2² = 4
Wurzel(2) ² = 2
also ist klar das sich Wurzel(2) zwischen 1 und 2 befinden muss, wir haben also eine untere und obere Grenze, nämlich 1 und 2.
Den Raum zwischen der oberen und der unteren Grenze nennt man Intervall.
Jetzt gilt es dieses Intervall immer weiter zu verkleinern um die Zahl Wurzel 2 immer genauer bestimmen zu können. Dazu macht man folgendes:
1. Wir wissen 1 < Wurzel(2) < 2
Wir bilden den Mittelwert aus der oberen und der unteren Grenze:
1+2 = 1,5.
Nun muss geprüft werden, ist 1,5 kleiner oder grösser Wurzel 2
also
1,5² = 2,25
1,5 ist also grösser als Wurzel(2)
Damit haben wir eine neue obere Grenze, nämlich 1,5
Dann geht das Spiel wieder von vorne los.
1 < Wurzel (2) < 1,5
Wir bilden die Mitte
1,25 - Ist 1,25 kleiner oder grösser Wurzel 2?
1,25² = 1,5625
Wurzel(2)² = 2
Also ist 1,25 kleiner Wurzel 2
wir haben eine neue untere Grenze.
Und wieder geht es von vorne los... diesmal mit 1,25 < Wurzel (2) < 1,5
Prinzip ist recht einfach. Quellcode dürfte für dich als C++´ler auch sehr leich verständlich sein:
Code:
halb = (min + max) / 2.0;
halbpow = Math.pow(halb,2); //Quadrierung des Mittelwertes
if(halbpow > 2.0)
{
max = halb;
}
else
{
min = halb;
}
Der Teil sitzt halt in einer Schleife, also geht man iterativ vor
Das Problem das sich mir gerade stellt ist wie kann ich auf eine bestimmte nachkommastelle hin genau brechnen, hab zwar ne Methode mit String konvertierungen, aber der geht nach ner hand voll nachkommastellen die puste aus... Ansonsten muss ich einfach nen festen Wert an Wiederholungen der Schleife setzen.