题目要求采用牛顿迭代法计算一个数的平方根。
总时间限制: 1000ms 内存限制: 65536kB
用牛顿迭代方法求一个数number的平方根,输出根以及迭代次数
注意: (迭代中止条件为 error<=1E-6 )
初始x=1.0
输出格式如下:
#include
cout << i << ' '
<< setprecision(2)
<< setiosflags(ios::fixed)
<< root << endl;
一个数字,double/int均可。
输出两个数字: 迭代次数和根
迭代次数为一个整数
根为一个浮点数,保留小数点后两位。
12
25
144
6 3.46
7 5.00
8 12.00
牛顿迭代法是一种数值逼近方法,从某一点x_0开始,计算x_0处y=x^2曲线的切线,其与x轴的交点作为更新的x_0点,如此不断迭代直到满足精度或者终止条件。与之前二分法不同的是,要给出迭代次数。
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
double num;
while (cin >> num) {
double root = 1.0;
int sum = 1;
while (fabs(root * root - num) > 1e-6) {
root = 0.5 * (root + num / root);
sum++;
}
cout << sum << " " << setprecision(2) << fixed << root << endl;
}
return 0;
}
2868.cpp 代码长度:337B 内存:128kB 时间:2ms 通过率:92% 最小内存:128kB 最短时间:0ms
题目给出了初始x_0点,可以用一个整型记录迭代次数,计算误差时采用fabs求绝对值,切线与x轴交点的公式可以事先通过数学计算得到,最后按照要求输出保留两位小数。
有任何的改进意见欢迎大家在微信平台公众号主页面留言或者发表issue。