迭代法求平方根

Description

 

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

Input

 

X

Output

 

X的平方根

Sample Input 1 

4

Sample Output 1

2.000

思路:公式x1=(x0+a/x0)/2;

1 先自定一个初值x0,作为a的平方根值,在我们的程序中取a/2作为a的初值;利用迭代公式求出一个x1。此值与真正的a的平方根值相比,误差很大。

⒉把新求得的x1代入x0中,准备用此新的x0再去求出一个新的x1.

⒊利用迭代公式再求出一个新的x1的值,也就是用新的x0又求出一个新的平方根值x1,此值将更趋近于真正的平方根值。

⒋比较前后两次求得的平方根值x0和x1,如果它们的差值小于我们指定的值,即达到我们要求的精度,则认为x1就是a的平方根值,去执行步骤5;否则执行步骤2,即循环进行迭代。

迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行:

⑴ 选一个方程的近似根,赋给变量x0;

⑵ 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;

⑶ 当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤⑵的计算。

若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。

AC代码:(C语言)

#include <bits/stdc++.h>
using namespace std;
int main()
{
  float x;
  float a,b;
  scanf("%f",&x);
  b=1.0;
  while(fabs(b-a)>0.00001)
  {
     a=b;
     b=(a+x/a)/2;
  }
  printf("%0.3f\n",b);
  return 0;
}

AC代码:(Java)

import java.util.*;
import java.io.*;
import java.math.*;
import java.text.*;
public class Main{
	public static void main(String args[]) {
		Scanner cin=new Scanner(System.in);
		float x=cin.nextFloat();
		float a,b;
		a=0;
		b=1;
//		DecimalFormat df=new DecimalFormat("0.000");
		while(Math.abs(b-a)>0.00001)
		  {
		     a=b;
		     b=(a+x/a)/2;
		  }
		System.out.printf("%.3f",b);
	}
}


 

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值