C语言实现迭代法求平方根
使用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()函数计算平方根,并输出结果。
希望这个答案对你有帮助!如有其他问题,请随时问我。
原文地址: https://www.cveoy.top/t/topic/bGjK 著作权归作者所有。请勿转载和采集!