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

The Babylonian algorithm to compute the square root of a number n is as follows:

ID: 3650429 • Letter: T

Question

The Babylonian algorithm to compute the square root of a number n is as follows: Make a guess at the answer (you can pick n/2 as your initial guess). Compute r = n / guess Set guess = (guess + r) / 2 Go back to step 2 for as many iterations as necessary. The more that steps 2 and 3 are repeated, the closer guess will become to the square root of n. Write a program that inputs an integer for n, iterates through the Babylonian algorithm until guess is within 1% of the previous guess, and outputs the answer as a double (with 14 digits precision, no need to set to fixed point notation). Guess is within 1% of the previous guess means: oldGuess * (1 - 0.01) <= newGuess <= oldGuess * (1 + 0.01) Try your code with integers 1, 2, 3, 4, 5, 6, 7, 8, 9. What is the result of sqrt of 9? Now: modify your code so that you loop until Guess is within 0.1% of the previous guess, and recompute. Write your code so that it is easy to change the accuracy of the guess (i.e., the percentage of new guess from old guess) from one value (1%) to the other (0.1% or 0.01% or so forth).

Explanation / Answer

: #include
: using namespace std;
:
: #include // getch()
: #include // fabs()
: #include // system()
:
: int main()
: {
:
: int n;
: double guess, prev_guess, r;
:
: cout << "Enter an integer to compute its square root : ";
: cin >> n;
:
: guess = (double) n/2;
:
: while( true )
: {
: prev_guess = guess; // for comparison
:
: r = (double) n/guess;
: guess = (double) (guess+r)/2;
:
: if ( ( ((double) fabs((double)guess - prev_guess))/ prev_guess ) < 0.01 ) // guess is within 1% of the previous guess ?
: break;
: }
:
: cout << "The square root of " << n << " is = " << guess << endl ;
: system("pause");
:
: return 0;
: }