Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

The Problem Your first job is to create a Java program that repeatedly asks the

ID: 640283 • Letter: T

Question

The Problem

Your first job is to create a Java program that repeatedly asks the user whether they wish to calculate another square root. If the response is "y", then the program should proceed; if it is anything else, then the program should quit. Whenever it proceeds, the program should prompt the user for a number (a positive double , and your program may simply assume the input is consistent with this requirement) and then report the square root of that number to within a relative error of no more than 0.01%. The computation must be done using Newton iteration.

The intuitive idea of Newton iteration for computing square roots is fairly straightforward. Suppose you have a guess r for x1/2 that is too large; the argument is similar if it is too small. If r is too large to be the square root of x, then x/r must be too small, so the average of r and x/r should be a better guess than either r or x/r. This suggests that if you repeatedly replace your current guess r by (r + x/r)/2, then your sequence of guesses should converge to x1/2. And indeed it can be proved that it does. A good initial guess for x1/2 is simply r = x. If you continue updating r until |r2

Explanation / Answer

import java.util.Scanner;

public class SqaureRoot {

   public static double sqrt(double n) {
       double guess = n / 2;
       if (n < 0) {
           System.out.println("Can't find square root of a negative number");
           guess = -1;
       } else {
           double pctDiff = Double.MAX_VALUE;
           double lastGuess = guess;

           while (Math.abs(pctDiff) >= 0.01) {
               double r = n / guess;
               guess = (guess + r) / 2;
               pctDiff = ((guess - lastGuess) / lastGuess);
               lastGuess = guess;
           }
       }
       return guess;
   }

   public static void main(String args[]) {
       Scanner input = new Scanner(System.in);
       String l = new String();
       while(true){
           System.out.print("do you wish to calculate a square root: ");
           l = input.nextLine();
           if(l.equalsIgnoreCase("y")){
               System.out.print("Enter number to compute the square root of: ");
               double n = input.nextDouble();
               double guess = sqrt(n);
               System.out.println("The estimate of the square root of " + n + " is " + guess);
               input.nextLine();
           }
           else{
               break;
           }
       }
       System.out.println("End of Program");
   }
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote