使用C语言实现迭代法求平方根

问题描述:

利用迭代法求解一个数的平方根,求平方根的迭代公式为:

x_(n+1) = (x_n + a / x_n) / 2

其中,a 为要计算平方根的数字,x_n 为第 n 次迭代的近似解,x_(n+1) 为第 n+1 次迭代的近似解。

要求前后两次求出的 x 的差的绝对值小于 1e-5

输入说明:

输入一个浮点数 a

输出说明:

输出一个浮点数 x,小数点后保留 5 位小数。

输入样例:

3

输出样例:

1.73205

C语言代码:

#include <stdio.h>

double sqrt_iter(double a) {
    double x = 1.0;  // 初始值设为1.0
    double diff = 1.0;  // 初始差值设为1.0

    while (diff > 1e-5) {
        double next_x = (x + a / x) / 2.0;  // 迭代公式
        diff = next_x - x;
        if (diff < 0) {
            diff = -diff;
        }
        x = next_x;
    }

    return x;
}

int main() {
    double a;
    scanf("%lf", &a);

    double result = sqrt_iter(a);

    printf("%.5lf\n", result);

    return 0;
}

输入示例解释:

  • a = 3,表示要求解平方根的数字。

输出示例解释:

  • 计算得到平方根的结果为 1.73205

代码解析:

  • sqrt_iter() 函数使用迭代法计算平方根,它接受一个浮点数 a 作为参数,并返回计算结果。
  • 函数首先设置初始值 x 和差值 diff,并进入循环,根据迭代公式更新 x 的值,直到前后两次求出的 x 的差的绝对值小于 1e-5
  • main() 函数读取输入的数字 a,调用 sqrt_iter() 函数计算平方根,并输出结果。

希望这个答案对你有帮助!如有其他问题,请随时问我。

C语言实现迭代法求平方根

原文地址: https://www.cveoy.top/t/topic/bGjK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录