【Python3】23.求平方根---牛顿迭代法

  1. 问题描述
    求出任一个非负实数的平方根

  2. 思路分析

平方根是一个数学概念,要找到计算平方根的过程性描述(算 法),也需要通过数学领域的
知识。基本算术课程中介绍过如何求任一正实数的平方 根,但在那个方法里需要做试除,不
太适合机械进行(可以实现,但比较麻烦)。而求平方根 的另一种算法称为牛顿迭代法,描
述如下:
0.对给定正实数x和允许误差e,令变量y取任意正实数值,如令y=x
1.如果y x y与x足够接近,即|_y x y—x|<e,计算结束并把作为结果;
2.取z=(y+x/y)/2;
3.将z作为y的新值,回到步骤1。
  1. 具体实现
函数
def sqrt(x):
	y = 1.0
	while abs(y*y - x) > 1e-6:
		y = (y + x/y)/2
	return y

其中变量y的初值为1.0,允许误差为10的-6次方
  1. 测试
def sqrt(x):
	y = 1.0
	while abs(y*y - x) > 1e-6:
		y = (y + x/y)/2
	return y
	
print(sqrt(2))
  1. 小结
  • 从这个简单实例可以看到从问题的描述出发最终得到一个可用程序的工作过程。
  • 在上述例子中,最不清晰的一步就是从平方根的定义到求平方根 的算法。
  • 算法设计是一种创造性工作,依赖于对问题的认识和相关领域的知识,没有放之四海 而皆准的路径可循。
笔记------裘宗燕著《数据结构与算法》
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值