题目 1021: [编程入门]迭代法求平方根

发布时间 2023-04-06 18:14:35作者: ha_1007

题目描述

用迭代法求 平方根

公式:求a的平方根的迭代公式为: X[n+1]=(X[n]+a/X[n])/2 要求前后两次求出的差的绝对值少于0.00001。 输出保留3位小数

 

一、何为迭代法
  1. 迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。利用迭代算法解决问题,需要做好以下三个方面的工作:

  2. a.确定迭代变量(本题可设 x[x+1]为xx1x[n])

  3. b.建立迭代关系式(本题为 X[n+1]=(X[n]+a/X[n])/2)

  4. c.对迭代过程加以控制(本题为 while(fabs(x-x1)>1E-5))

二、何为牛顿迭代法
  1. 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。
  2. 公式即为 X[n+1]=(X[n]+a/X[n])/2

 

#include"stdio.h"
#include"math.h"
int main()
{
    int a;
    double x=1.0,x1=10;
    scanf("%d",&a);
    while(fabs(x-x1)>1e-5)       //判断结束条件
    {
        x1=x;
        x=(x1+a/x1)/2;
    }
    printf("%0.3lf",x);
    return 0;
}