用c语言迭代法求平方根
时间: 2024-12-24 09:12:15 浏览: 63
在C语言中,可以使用牛顿迭代法来近似计算一个数的平方根。这种方法基于这样一个事实,即对于任意非负实数a,如果x_n是a的一个近似值,那么下一个更好的近似值x_{n+1}可以通过下面的公式得到:
x_{n+1} = (x_n + a / x_n) / 2
这个过程会一直迭代,直到满足精度要求为止,比如当x_{n+1} - x_n < ε(其中ε是一个很小的正数,通常取double类型的最小可表示差异)。以下是简单的C代码实现:
```c
#include <stdio.h>
#include <math.h> // 包含fabs函数用于计算绝对值
#include <stdbool.h>
double sqrt_iterative(double num, double epsilon) {
if (num < 0) {
printf("Error: Square root of negative number is undefined.\n");
return -1; // 或者抛出异常
}
double guess = num / 2; // 初始猜测值为数的一半
while (fabs(guess * guess - num) > epsilon) { // 检查是否达到精度
guess = (guess + num / guess) / 2;
}
return guess;
}
int main() {
double input_num;
printf("Enter a non-negative number for square root: ");
scanf("%lf", &input_num);
double result = sqrt_iterative(input_num, 1e-9); // 设置精度为双精度的千万分之一
if (result != -1) {
printf("Square root of %.2lf is %.2lf\n", input_num, result);
}
return 0;
}
```
在这个代码里,用户输入一个非负数,程序通过迭代求得其平方根并显示结果。如果输入的是负数,函数将返回错误信息。
阅读全文
相关推荐

















