# wurzel ziehen



## jazzcookie (9. Nov 2009)

hi,
ich moechte ein programm schreiben, dass mir die wurzel aus einer beliebigen zahl n bis auf einen fehler
0.00001 abschaetzt.das ganze soll iterativ mit intervallschachtelung gemacht werden mein programm sieht bis jetzt so aus,funktioniert aber noch nicht richtig.jmd eine idee wo der fehler liegt?


```
double n;
		double m;
		n=Tools.readInt();//n einlesen
		double a=1.0;
		double b=n+1;//n+1^2 wird immer groesser sein als n
		m=(b+a)/2.0;
		while (errorMargin>0.00001)
		{
			if (((b+a)/2.0)*((b+a)/2.0)<=n)
			{
			m=(m+b)/2.0;
			}
			else
			{
				m=(a+m)/2.0;
			}
			errorMargin=Math.abs(Math.sqrt(n)-m);
		}
		System.out.println(m);
```


----------



## SlaterB (9. Nov 2009)

> if (((b+a)/2.0)*((b+a)/2.0)<=n)

weder a noch b oder n ändern sich während der Schleife, dieses if wird also immer dasselbe zeigen,
vielleicht
if (m*m<=n)


----------



## ttplayer (9. Nov 2009)

vielleicht so:

```
double n = Tools.readInt();//n einlesen
        double a=1.0;
        double b=n+1;   //n+1^2 wird immer groesser sein als n
        double realsqrt = Math.sqrt(n);
        while (realsqrt - a > 0.00001)
        {
            if (((b+a)/2.0)*((b+a)/2.0)<=n) a=(a+b)/2.0;
            else b=(a+b)/2.0;
        }
        System.out.println(a);
```


----------

