1021 - C语言程序设计教程(第三版)课后习题6.11
时间限制:1秒
内存限制:128兆
题目描述
用迭代法求 。求平方根的迭代公式为:
X[n+1]=1/2(X[n]+a/X[n])
要求前后两次求出的得差的绝对值少于0.00001。
输出保留3位小数
输入
X
输出
X的平方根
样例输入
4
样例输出
2.000
迭代求根公式可能会有一些小伙伴没有看懂,其实
就是在进行一个 f(x)=(x+a/x)/2的公式,x为
上一次f(x)的值a为第一次的x的值,循环终止的
条件为上一次的f(x)的值与本次f(x)的值相差
的绝对值在0.00001以内 ,具体的迭代求根原理可
以自行百度了解
#include<stdio.h>
#include<math.h>
int main()
{
float x, y, a;
y=0;
scanf("%f",&a);
x=a;
while(fabs(x-y)>=0.00001)//fabs为math函数库中的绝对值函数,也可以写作
//(x-y)>=-0.00001&&(x-y)<=0.00001来代替
{
y=x;
x=(x+a/x)/2;
}
printf("%.3lf",x);
return 0;
}