Рубрики

Вавилонский метод для квадратного корня

Алгоритм:
Этот метод может быть получен из (но предшествует) метода Ньютона-Рафсона.


1 Start with an arbitrary positive start value x (the closer to the 
   root, the better).
2 Initialize y = 1.
3. Do following until desired approximation is achieved.
  a) Get the next approximation for root using average of x and y
  b) Set y = n/x

Реализация:

C ++

#include <iostream>

using namespace std;

class gfg {

    / * Возвращает квадратный корень из n. Обратите внимание, что функция * /

public:

    float squareRoot(float n)

    {

        / * Мы используем само n в качестве начального приближения

          Это определенно можно улучшить * /

        float x = n;

        float y = 1;

        float e = 0.000001; / * е решает уровень точности * /

        while (x - y > e) {

            x = (x + y) / 2;

            y = n / x;

        }

        return x;

    }

};

  
/ * Программа драйвера для проверки вышеуказанной функции * /

int main()

{

    gfg g;

    int n = 50;

    cout << "Square root of " << n << " is " << g.squareRoot(n);

    getchar();

}

С

#include <stdio.h>

  
/ * Возвращает квадратный корень из n. Обратите внимание, что функция * /

float squareRoot(float n)

{

    / * Мы используем само n в качестве начального приближения

   Это определенно можно улучшить * /

    float x = n;

    float y = 1;

    float e = 0.000001; / * е решает уровень точности * /

    while (x - y > e) {

        x = (x + y) / 2;

        y = n / x;

    }

    return x;

}

  
/ * Программа драйвера для проверки вышеуказанной функции * /

int main()

{

    int n = 50;

    printf("Square root of %d is %f", n, squareRoot(n));

    getchar();

}

Джава

class GFG {

  

    / * Возвращает квадратный корень из n.

    Обратите внимание, что функция * /

    static float squareRoot(float n)

    {

  

        / * Мы используем себя как

        начальное приближение это

        безусловно, можно улучшить * /

        float x = n;

        float y = 1;

  

        // e решает уровень точности

        double e = 0.000001;

        while (x - y > e) {

            x = (x + y) / 2;

            y = n / x;

        }

        return x;

    }

  

    / * Программа для тестирования драйверов

    вышеуказанная функция * /

    public static void main(String[] args)

    {

        int n = 50;

  

        System.out.printf("Square root of "

                          + n + " is " + squareRoot(n));

    }

}

  
// Этот код дополнен
// Смита Динеш Семвал

Python 3

# Возвращает квадратный корень из n.
# Обратите внимание, что функция

def squareRoot(n):

  

    # Мы используем себя как

    # начальное приближение это

    # можно определенно улучшить

        x = n

        y = 1

          

        # e решает уровень точности

        e = 0.000001

        while(x - y > e):

      

            x = (x + y)/2

            y = n / x

      

        return x

  
# Драйвер программы для тестирования
# над функцией

n = 50

  

print("Square root of", n, "is",

              round(squareRoot(n), 6))

  
# Этот код предоставлен
# Смита Динеш Семвал

C #

// C # Porgram для вавилонского
// метод квадратного корня

using System;

  

class GFG {

  

    // Возвращает квадратный корень из n.

    // Обратите внимание, что функция

    static float squareRoot(float n)

    {

  

        // Мы используем n как

        // начальное приближение This

        // определенно можно улучшить

        float x = n;

        float y = 1;

  

        // е решает

        // уровень точности

        double e = 0.000001;

        while (x - y > e) {

            x = (x + y) / 2;

            y = n / x;

        }

        return x;

    }

  

    // Код драйвера

    public static void Main()

    {

        int n = 50;

        Console.Write("Square root of "

                      + n + " is " + squareRoot(n));

    }

}

  
// Этот код принадлежит нитин митталь.

PHP

<?php

  
// Возвращает квадратный корень из n.
// Обратите внимание, что функция

function squareRoot($n)

{

      

    // мы сами используем n

    // в качестве начального приближения

    // Это определенно может быть

    // улучшен

    $x = $n;

    $y = 1;

      

    / * е решает

       уровень точности * /

    $e = 0.000001; 

    while($x - $y > $e)

    {

        $x = ($x + $y)/2;

        $y = $n / $x;

    }

    return $x;

}

  
// Код драйвера
{

    $n = 50;

    echo "Square root of $n is ", squareRoot($n);

}

  
// Этот код предоставлен нитин митталь.
?>

Выход :

Square root of 50 is 7.071068

Пример:

n = 4 /*n itself is used for initial approximation*/
Initialize x = 4, y = 1
Next Approximation x = (x + y)/2 (= 2.500000), 
y = n/x  (=1.600000)
Next Approximation x = 2.050000,
y = 1.951220
Next Approximation x = 2.000610,
y = 1.999390
Next Approximation x = 2.000000, 
y = 2.000000
Terminate as (x - y) > e now.

Если мы уверены, что n — идеальный квадрат, то мы можем использовать следующий метод. Метод может идти бесконечным циклом для неидеальных квадратов чисел. Например, для 3 приведенный ниже цикл while никогда не прекратится.

C ++

// C ++ программа для вавилонского
// метод для квадратного корня
#include <iostream>

using namespace std;

  

class gfg {

  

    / * Возвращает квадратный корень из n.

Обратите внимание, что функция * /

public:

    float squareRoot(float n)

    {

        / * Мы используем само n в качестве начального приближения

    Это определенно можно улучшить * /

        float x = n;

        float y = 1;

  

        / * е решает уровень точности * /

        float e = 0.000001;

        while (x - y > e) {

            x = (x + y) / 2;

            y = n / x;

        }

        return x;

    }

};

  
/ * Код водителя * /

int main()

{

    gfg g;

    int n = 49;

    cout << "Square root of " << n << " is " << g.squareRoot(n);

    getchar();

}

  
// Этот код предоставлен SoM15242

С

// C программа для вавилонского
// метод для квадратного корня
#include <stdio.h>

  
/ * Возвращает квадратный корень из

   п. Обратите внимание, что функция

   не будет работать для чисел

   которые не идеальны

   квадраты * /

unsigned int squareRoot(int n)

{

    int x = n;

    int y = 1;

    while (x > y) {

        x = (x + y) / 2;

        y = n / x;

    }

    return x;

}

  
// Код драйвера

int main()

{

    int n = 49;

    printf("root of %d is %d", n, squareRoot(n));

    getchar();

}

Джава

// Java программа для вавилонского
// метод для квадратного корня

import java.io.*;

  

public class GFG {

  

    / * Возвращает квадратный корень из

    п. Обратите внимание, что функция

    не будет работать для чисел

    которые не идеальны

    квадраты * /

    static long squareRoot(int n)

    {

        int x = n;

        int y = 1;

        while (x > y) {

            x = (x + y) / 2;

            y = n / x;

        }

        return (long)x;

    }

  

    // Код драйвера

    static public void main(String[] args)

    {

        int n = 49;

        System.out.println("root of "

                           + n + " is " + squareRoot(n));

    }

}

  
// Этот код предоставлен anuj_67.

python3

# python3 программа для вавилонского
# метод для квадратного корня

  
# Возвращает квадратный корень из n.
# Обратите внимание, что функция
# не будет работать для чисел
# которые не являются идеальными квадратами

  

def squareRoot(n):

    x = n;

    y = 1;

    while(x > y):

        x = (x + y) / 2;

        y = n / x;

    return x;

  
Код водителя

n = 49;

print("root of", n, "is", squareRoot(n));

  
# Этот код предоставлен mits.

C #

// C # программа для вавилонского
// метод для квадратного корня

  

using System;

  

public class GFG {

  

    / * Возвращает квадратный корень из

    п. Обратите внимание, что функция

    не будет работать для чисел

    которые не идеальны

    квадраты * /

    static uint squareRoot(int n)

    {

        int x = n;

        int y = 1;

        while (x > y) {

            x = (x + y) / 2;

            y = n / x;

        }

        return (uint)x;

    }

  

    // Код драйвера

    static public void Main()

    {

        int n = 49;

        Console.WriteLine("root of "

                          + n + " is " + squareRoot(n));

    }

}

  
// Этот код предоставлен anuj_67.

PHP

<?php
// PHP программа для вавилонского
// метод для квадратного корня

  
/ * Возвращает квадратный корень из

   п. Обратите внимание, что функция

   не будет работать для чисел

   которые не идеальны

   квадраты * /

function squareRoot( $n)

{

    $x = $n;

    $y = 1;

    while($x > $y)

    {

        $x = ($x + $y) / 2;

        $y =$n / $x;

    }

    return $x;

}

  
// Код драйвера

$n = 49;

echo " root of ", $n, " is ", squareRoot($n);

            
// Этот код предоставлен anuj_67.
?>


Выход :

 root of 49 is 7


Ссылки;

http://en.wikipedia.org/wiki/Square_root
http://en.wikipedia.org/wiki/Babylonian_method#Babylonian_method

На вопрос Снехаля

Пожалуйста, пишите комментарии, если вы обнаружите какую-либо ошибку в вышеуказанной программе / алгоритме или если вы хотите поделиться дополнительной информацией о вавилонском методе.

Рекомендуемые посты:

Вавилонский метод для квадратного корня

0.00 (0%) 0 votes