Kvadrat kökü#3968

Kvadrat kökü (Həll təhlili)

Alqoritm Analizi

Funksiyanı nəzərdən keçirin f(x) = x^2 + \sqrt{x}. Aşkar ki:

Beləliklə, tənliyin kökü

f(x) = C

aralığında yerləşir . Funksiya sərt artandır. Kök -i ikili axtarışla tapırıq.

Nümunə

Funksiyanın qrafikini nəzərdən keçirin f(x) = x^2 + \sqrt{x}. Görə bilərik ki:

Buna görə, tənliyin kökü f(x) = C aralığında yerləşir [0; \sqrt{C}] və ikili axtarışla tapıla bilər.

Funksiyanın qrafiki

Alqoritmin Həyata Keçirilməsi

Sabit EPS və funksiya f(x)-i elan edin.

#define EPS 1e-10

double f(double x)
{
    return x * x + sqrt(x);
}

Proqramın əsas hissəsi. dəyərini oxuyun.

scanf("%lf", &c);

İkili axtarış sərhədlərini [left; right] = [0; C] təyin edin.

left = 0; right = c;

İkili axtarışa başlayın.

while (right - left > EPS)
{
    middle = (left + right) / 2;
    y = f(middle);
    if (y > c) right = middle; else left = middle;
}

Cavabı çıxarın.

printf("%lf\n", left);

Java Həyata Keçirilməsi

import java.util.*;

public class Main
{
    static double f(double x)
    {
        return x * x + Math.sqrt(x);
    }

    public static void main(String[] args)
    {
        Scanner con = new Scanner(System.in);
        double c = con.nextDouble();
        double left = 0, right = c;

        while (right - left > 1e-10)
        {
            double middle = (left + right) / 2;
            double y = f(middle);
            if (y > c) right = middle; else left = middle;
        }
        System.out.println(left);
        con.close();
    }
}