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 }