KZ夜黎


私信TA

用户名:dotcpp0754974

访问量:225

签 名:

时光清浅处,一步一安然

等  级
排  名 52901
经  验 266
参赛次数 0
文章发表 2
年  龄 18
在职情况 学生
学  校 江西财经大学
专  业 VR

  自我简介:

TA的其他文章

解题思路:

首先,解释一下迭代公式:
X[n+1]=2X[n]+X[n]a
这个公式是用来逼近a的平方根的。初始时,可以随机选择一个X[0](通常选择a或者a的一半作为初始值),然后通过这个公式不断迭代,每次迭代都会得到一个更接近a的平方根的值X[n+1]。

接下来,题目给出了迭代终止的条件:
前后两次求出的差的绝对值少于0.00001。
这意味着当∣X[n+1]−X[n]∣<0.00001时,迭代就可以停止了,因为此时X[n+1]已经非常接近a的平方根了。

最后,题目要求输出保留3位小数。
这意味着在输出最终求得的平方根时,应该使用某种方法(比如四舍五入)将其保留到小数点后三位。

综上所述,题目的意思是:给定一个数a,使用迭代公式X[n+1]=2X[n]+X[n]a来求a的平方根,直到前后两次求出的差的绝对值少于0.00001为止,并输出最终求得的平方根,保留3位小数。



注意事项:

注意,在使用这些函数时,需要包含相应的头文件。对于整数类型,通常包含<cstdlib>;对于浮点数类型,通常包含<cmath>。在C++11及以后版本中,<cmath>也提供了针对整数类型的std::abs重载。

最后,记住在使用浮点数时要考虑精度问题,因为浮点数的表示方式可能导致一些小的舍入误差。如果你需要更精确的数值计算,可能需要考虑使用特定的数学库或数据结构。

在使用C++11或更高版本,你也可以使用std::abs函数模板,它可以自动推断类型并调用相应的绝对值函数。



参考代码:

#include<iostream>

#include<cmath>

#include<iomanip>                             //用于输出时限定小数点的位数和输出形式

double square(double n,double a) {                   //定义迭代求平方根公式的递归函数

if (n == 0) { return a; }

return (square(n - 1, a) + a / square(n - 1, a)) / 2;

}

using namespace std;

int main()

{

double x;

cin >> x;

double n1, n2,i=0;

while (true)                          使用while循环得到满足∣X[n+1]−X[n]∣<0.00001条件的值,即所求的平方根X[n+1]

{

n1 = square(i, x);

n2 = square(i + 1, x);

double absn = abs(n2-n1);

if ( absn<= 0.00001)

{

cout <<fixed<<setprecision(3)<< n2 << endl;              //满足条件后按照题目要求格式输出平方根,并退出循环

break;

}

i++;

}

return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »