C语言用迭代法求x等于根号a
时间: 2023-05-29 14:03:42 浏览: 131
以下是用牛顿迭代法求解 $x=\sqrt{a}$ 的 C 语言代码:
```
#include <stdio.h>
double sqrt(double a) {
double x = a; // 初始值为 a
double y = (x + a / x) / 2; // 迭代公式的结果
while (x - y > 0.0000001 || y - x > 0.0000001) { // 精度要求:小数点后 7 位
x = y;
y = (x + a / x) / 2;
}
return y;
}
int main() {
double a;
printf("请输入一个正数 a:");
scanf("%lf", &a);
printf("sqrt(%lf) = %lf\n", a, sqrt(a));
return 0;
}
```
该程序先输入一个正数 $a$,然后调用 `sqrt` 函数求解 $x=\sqrt{a}$,最后输出结果。在 `sqrt` 函数中,我们采用了牛顿迭代法的公式:
$$x_{n+1}=\frac{1}{2}\left(x_n+\frac{a}{x_n}\right)$$
该公式的迭代过程是 $x_0=a$,$x_{n+1}=\frac{1}{2}\left(x_n+\frac{a}{x_n}\right)$,直到 $x_n$ 和 $x_{n+1}$ 的差小于某个精度要求(这里取 $10^{-7}$)。最后返回 $x_{n+1}$ 即为所求的 $\sqrt{a}$。
阅读全文