Skip to content

Instantly share code, notes, and snippets.

@pengdu
Created August 9, 2023 12:16
Show Gist options
  • Save pengdu/705f5a7932da7992b87652722541dd61 to your computer and use it in GitHub Desktop.
Save pengdu/705f5a7932da7992b87652722541dd61 to your computer and use it in GitHub Desktop.
chatgpt使用二分法计算开平方

下面是使用二分法计算开平方的 C++ 示例代码:

#include <iostream>

double squareRoot(double x, double epsilon = 0.00001) {
    double low = 0.0;
    double high = x;
    double guess = (low + high) / 2.0;

    while (std::abs(guess * guess - x) > epsilon) {
        if (guess * guess > x) {
            high = guess;
        } else {
            low = guess;
        }
        guess = (low + high) / 2.0;
    }

    return guess;
}

int main() {
    double number;
    std::cout << "Enter a number: ";
    std::cin >> number;
    
    double result = squareRoot(number);
    std::cout << "Square root of " << number << " is " << result << std::endl;

    return 0;
}

在这个示例中,我们定义了一个名为 squareRoot 的函数,它接受一个参数 x,表示要计算开平方的数,以及一个可选参数 epsilon,表示误差范围,默认为 0.00001。

在函数中,我们使用二分法来逼近开平方的值。我们首先初始化一个区间 [low, high],其中 low 初始为 0,high 初始为 x。然后,我们计算区间的中点 guess。如果 guess * guess 大于 x,则将 high 更新为 guess,否则将 low 更新为 guess。重复这个过程,直到 guess * guessx 的差小于 epsilon,即满足所需的精度。

main 函数中,我们从用户输入中获取一个数,并调用 squareRoot 函数计算其开平方。然后,将结果输出到控制台。

希望对你有帮助!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment