Skip to content

Latest commit

 

History

History
79 lines (56 loc) · 1.83 KB

2868.md

File metadata and controls

79 lines (56 loc) · 1.83 KB

牛顿迭代 2868: 牛顿迭代方法

题目要求采用牛顿迭代法计算一个数的平方根。

题目来源

2868: 牛顿迭代方法

总时间限制: 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。