用迭代法求x=\(\sqrt{a}\)。求平方根的迭代公式為
\(x_{n+1}\) = \(\frac{1}{2}\)(\(x_{n}\) + \(\frac{a}{x_n}\))
要求前后兩次求出的x的差的絕對值小於\(10^{-5}\)。
答案解析:
題面上已經告訴兩條信息,一個是x=\(\sqrt{a}\),所以我們可以通過a求出x的值。另外一條是\(x_{n+1}\) = \(\frac{1}{2}\)(\(x_{n}\) + \(\frac{a}{x_n}\)),可以通過x的值求出\(x_{n+1}\)的值,所以,只需要輪詢的計算,不斷的計算差值,直到滿足差值小於\(10^{-5}\)就可以停止了
代碼示例:
#include <stdio.h>
#include <math.h>
int main()
{
float a, x0, x1;
printf("請輸入一個正數: ");
scanf("%f", &a);
x0 = a / 2;
x1 = (x0 + a / x0) / 2;
do
{
x0 = x1;
x1 = (x0 + a / x0) / 2;
} while (fabs(x0 - x1) >= 1e-5);
printf("[%f] 的平方根為 [%f]\n", a, x1);
return 0;
}