公式:求a的平方根的迭代公式为:
X[ n+1 ] = ( X[ n ] + a / X[ n ] ) / 2
输入格式
X
输出格式
X的平方根
样例输入
4
样例输出
2.000
题目解析:
用迭代法求 平方根
公式:求a的平方根的迭代公式为:
X[ n+1 ] = ( X[ n ] + a / X[ n ] ) / 2
即:
后一项 = ( 这一项 + a / 这一项 ) / 2 ;
要求前后两次求出的差的绝对值少于0.00001。 输出保留3位小数
题解:
X[ n+1 ] = ( X[ n ] + a / X[ n ] ) / 2
(1)套公式,最后得到的就是 X[ n+1 ]
(2)在代码里,b =X[ n ] , c =X [ n+1 ] ,a =a
也就是b是当前项,初始化为a的一半;
c是下一项,为公式
(3)如何检验:
题目说,前后两次的差要少于0.00001
X[ n+1 ] - X[ n ] >= 0.00001
也就是代码里的: fabs(c - b) < 0.00001 ; //fabs( )为绝对值方法
(代码不是明显三次迭代版本,算是循环递归吧)
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double a, b, c; // 定义变量a, b, c用于存储计算过程中的数值
cin >> a; // 从输入中读取一个数a
b = a / 2.0; // 将b初始化为a的一半
while (1) { // 进入一个无限循环
c = (b + a / b) / 2.0; // 根据公式计算c的值
if (abs(b - c) < 0.00001) { // 判断b与c的差的绝对值是否小于0.00001
cout << fixed << setprecision(3) << b; // 输出b的值,保留3位小数
break; // 终止循环
}
b = c; // 将c的值赋给b,进行下一次迭代
}
return 0;
}