牛顿迭代法快速寻找平方根

如何用牛顿迭代平方根 设函数y=f(x)在点x0的某个邻域内有定义,当自变量x在x0处有增量Δx,(x0+Δx)也在该邻域内时,相应地函数取得增量Δy=f(x0+Δx)-f(x0);如果Δy与Δx之比当Δx→0时极限存在,则称函数y=f(x)在点x0处可导,并称这个极限为函数y=f(x)在点x0处的导数记作①f’(x0) ;②y’│x=x0 ;③ │x=x0, 即 导函数 如果函数y=f(x)在开区间内每一点都可导,... 阅读详情
下面这种方法可以很有效地求出根号a的近似值:首先随便猜一个近似值x,然后不断令x等于x和a/x的平均数,迭代个六七次后x的值就已经相当精确了。
    例如,我想求根号2等于多少。假如我猜测的结果为4,虽然错的离谱,但你可以看到使用牛顿迭代法后这个值很快就趋近于根号2了:

(       4  + 2/   4     ) / 2 = 2.25
(    2.25  + 2/   2.25  ) / 2 = 1.56944..
( 1.56944..+ 2/1.56944..) / 2 = 1.42189..
( 1.42189..+ 2/1.42189..) / 2 = 1.41423..

….

      
    这种算法的原理很简单,我们仅仅是不断用(x,f(x))的切线来逼近方程x^2-a=0的根。根号a实际上就是x^2-a=0的一个正实根,这个函数的导数是2x。也就是说,函数上任一点(x,f(x))处的切线斜率是2x。那么,x-f(x)/(2x)就是一个比x更接近的近似值。代入f(x)=x^2-a得到x-(x^2-a)/(2x),也就是(x+a/x)/2。
[算]快速平方根倒数算学习-Fast Inverse Square Root 平方根倒数速算是一种用于快速计算32位浮点数的算术平方根的倒数的算。最早可能由SGI在90年代前期发明,在1999年的《雷神之锤III竞技场》源代码中应用,但直到2002-2003年间才在Usenet等公共论坛上出现。该算的优势在于减少了求平方根倒数时的大量运算耗费。在计算机图形学领域,例如计算照明和投影的波动角度与反射效果时,常需要计算平方根倒数。算通过对32位带符浮点数进行一系列操作,包括右移、使用特定十六进制魔术数字的减以及牛顿迭代,以快速得到平方根倒数的近似值。该算在相同精度下比直接使 阅读详情

相关推荐

融合ZILN损失与深度学习的LTV预测:从概率分布到精准营销决策

本文探讨了融合ZILN损失与深度学习的LTV预测方,通过深度概率模型精准预测用户生命周期价值(LTV),优化营销决策。文章详细解析了ZILN损失函数的优势、模型架构设计要点及工程化落地实践,帮助企业在预算分配、用户分层等场景实现数据驱动的精准营销。

weixin_29093169的博客 285

牛顿迭代逼近】求根号2的快速

如果要求根号2,比较快的方有:1)二分;2)牛顿迭代逼近

二十三小时 2万+

Hive数据迁移

【迁移背景】 本次需要将老集群的hive数据(共30多张表)迁移至新集群中。 老集群版本为CDH5.13,未启用kerberos; 新集群版本为CDH5.14,启用了kerberos。 由于cloudera官方文档说明,在5.x的版本不支持从未启用kerberos的集群与启用了kerberos的集群之间的数据复制。因此无通过bdr方式进行数据同步。于是采用手工方式进行测试验证。 第一步...

wangkuangood3200的专栏 449

用“牛顿迭代”求根号2的近似值

一、提出问题,引入新课 1、作为高中生,大家都知道根号2的近似值是1.414,这是应该记住的常数,可你知不知道如何去求这个近似值呢?(提出问题,激发兴趣,开阔思路,启迪思维,导入新课) 2、学生回答:有学生说用二分,有学生说逐步必近(因为无显示,故用同音字替代),但追问如何二分,如何必近,就没有下文了。(在这里主要是让学生认识到不能机械的对书本上的知识采用“拿来主义”,老师说根号2是

liujianfei526的专栏 3万+

立方数 唯一分解 开方四舍五入

链接:https://ac.nowcoder.com/acm/contest/3007/E 来源:牛客网 立方数 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 对于给定的正整数 N,求最大的正整数 A,使得存在正整数 B,满足 A3B=N 输入包含 T 组数据,1≤T≤1...

郭源潮 800

C 迭代求开方 牛顿迭代求根近似值

#include <stdio.h> #include <math.h> double f(double x); double f2(double x); int main(){ //利用迭代求√a的值 int a=7; double s1=0; double s2=0; s2=a; ...

weixin_30492601的博客 460

sqrt的实现牛顿迭代快速寻找平方根

【经典面试题】实现平方根函数sqrt https://blog.csdn.net/xusiwei1236/article/details/25657611 实现平方根函数,不得调用其他库函数。 二分 //二分 public static float SqrtByBisection(float num) { if (num &lt;= 0) r...

qq_35422344的博客 662

Exercise: Loops and Functions (牛顿迭代快速寻找平方根)

A Tour of Go Exercise: Loops and Functions https://tour.golang.org/flowcontrol/8 牛顿迭代(简称“牛迭”)快速寻找平方根 上面的程序求 10, 20, 30 ... 100 的平方根,运行结果如下: (括号里的数字是牛迭的循环次数,比如 5 表示循环了五次得出结果。) 后来发现 A T...

weixin_30508309的博客 213

二分和牛顿平方根 python

二分 def erfen(num): e = 0.001 if num < 1: up = 1 low = num else: up = num low = 0 res = (up+low)/2 count = 1 while abs(num-res**2) > e: if num-res**2 < 0: up = res

weixin_43494312的博客 472

牛顿迭代(Newton's Method)

牛顿迭代(简称牛顿)由英国著名的数学家牛顿爵士最早提出。但是,这一方在牛顿生前并未公开发表。 牛顿的作用是使用迭代的方来求解函数方程的根。简单地说,牛顿就是不断求取切线的过程。 对于形如f(x)=0的方程,首先任意估算一个解x0,再把该估计值代入原方程中。由于一般不会正好选择到正确的解,所以有f(x)=a。这时计算函数在x0处的斜率,和这条斜率与x轴的交点x1。 f(

無名黑洞 7万+

解决“求平方根”问题(牛顿迭代

牛顿迭代(也称为牛顿-拉弗森方或牛顿-弗森方)是一种强大且广泛应用的数值技术,用于寻找实数和复数的方程的零点(或根)。如前所述,牛顿迭代可用于计算数的平方根。求解(a)的平方根等价于求解(f(x) = x^2 - a = 0)的根。通过选择合适的初始值(x_0)并重复应用上述公式,(x_n)将迅速收敛到(a)的平方根。是第(n)次迭代的近似值,(f(x))是目标方程,(f’(x))是(f(x))的导数。,每次迭代的目的是找到更好的近似解(x_{n+1}),直到满足一定的终止条件。

5-StarrySky的博客 1804

牛顿迭代

转自 LeetCode 解答   牛顿迭代是一种可以用来快速求解函数零点的方。   以 LeetCode 上的一题为例:模拟 int sqrt(x) 函数,返回的开方值向下取整。   为了叙述方便,我们用 C 表示待求出平方根的那个整数。显然,C 的平方根就是函数 y=f(x)=x2−C y = f(x) = x^2 - C y=f(x)=x2−C   的零点。   牛顿迭代的本质是借助泰勒级数,从初始值开始快速向零点逼近。我们任取一个 x0x_0x0​ 作为初始值,在每一步的迭代中,我们找到图像上

yleave的博客 1万+
上一篇: csu1563: Lexicography以及找出多重集的第k个串的讲解
下一篇: 斜率优化DP以及本人对原作的补充遐想
Last0rder
博客等级 码龄18年 50粉丝 325原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值