001    package de.hska.info1.uebung.suchen;
002    
003    /**
004     * Zum nährungsweise Finden der Quadratwurzel einer Zahl mit Hilfe eines
005     * Unterteilungsverfahren.
006     * 
007     * @author Christian Pape
008     */
009    public class Quadratzwurzel {
010    
011        private double epsilon;
012    
013        public Quadratzwurzel() {
014            this(0.00001);
015        }
016        
017        public Quadratzwurzel(double epsilon) {
018            this.epsilon = epsilon;
019        }
020    
021        public double wurzelZiehen(double x) {
022            return wurzelZiehen(x, 1, x);
023        }
024    
025        private double wurzelZiehen(double x, double links, double rechts) {
026            double wurzel = (links + rechts) / 2.0;
027    
028            if (Math.abs(wurzel * wurzel -  x) < epsilon ) {
029                return wurzel;
030            } else if (wurzel * wurzel > x) {
031                return wurzelZiehen(x, links, wurzel);
032            } else {
033                return wurzelZiehen(x, wurzel, rechts);
034            }
035        }
036    
037    }