手写sqrt 牛顿迭代法
牛顿迭代法:
x^2 = a的解,也就是函数f(x) = x^2 – a与x轴的交点。可以在x轴上先任选一点x0,则点(x0, f(x0))在f(x)上的切线,与x轴的交点为x1,它们满足切线的方程:f(x0)=(x0-x1)f’(x0),可得x1更接近最终的结果,解方程得到:x1 = (x0 + (a/x0))/2。以x1为新的x0,按照切线的方法依次迭代下去,最终求得符合精确度要求的结果值。
玄学数字:0x5f375a86 它来自一个传奇算法(求平方根倒数)。
float InvSqrt(float x)
{float mid = 0.5f * x;int i = *(int*)&x;i = 0x5f375a86 - (i>>1);x = *(float*)&i;x = x*(1.5f-mid*x*x);x = x*(1.5f-mid*x*x);x = x*(1.5f-mid*x*x);return 1/x;
}
不过这个代码有点局限性,只能用float而不能用double。。
但是这个玩意的运行效率比系统库的还快不少!!
手写sqrt 牛顿迭代法相关推荐
- lio-sam框架:点云匹配之手写高斯牛顿下降优化求状态量更新
lio-sam框架:点云匹配之手写高斯牛顿优化求状态量更新 前言 代码分 前言 LIO-SAM的全称是:Tightly-coupled Lidar Inertial Odometry via Smoo ...
- 《视觉SLAM十四讲》手写高斯牛顿—笔记记录
<视觉SLAM十四讲>手写高斯牛顿-笔记记录 我们的最终目的:使用高斯牛顿法,拟合参数abc 我们的实际小目标:求解增量方程得到ΔX(有了Δx就可以不停的迭代Eabc使得拟合Rabc啦) ...
- slam十四讲-ch6-非线性优化(包含手写高斯牛顿、使用g2o库、使用ceres库三种方法的源码详细注释)
一.自写高斯-牛顿法 该程序是要进行一个非线性优化,对非线性函数的系数进行优化 y=exp(ax2+bx+c) 给定初始的系数 ae,be,ce(估计的) ar,br,cr(真实的) 源码如下: // ...
- 手写系列之手写LM(Levenberg–Marquardt)算法(基于eigen)
紧接上次的手写高斯牛顿,今天顺便将LM算法也进行了手写实现,并且自己基于eigen的高斯牛顿进行了对比,可以很明显的看到,LM的算法收敛更快,精度也略胜一筹,这次高博的书不够用了,参考网上伪代码进行实 ...
- 【数学】手写开根号(牛顿迭代法 | 二分)
题目链接 [编程题]开根号 题面 在没有任何数学库函数的情况下,求一个数 m 开 n 次方的结果. 输入描述: 每组输入只有1行,包括有一个正实数m和一个正整数n,其中1<=n<=321 ...
- 牛顿迭代法实现平方根函数sqrt
转自利用牛顿迭代法自己写平方根函数sqrt 给定一个正数a,不用库函数求其平方根. 设其平方根为x,则有x2=a,即x2-a=0.设函数f(x)= x2-a,则可得图示红色的函数曲线.在曲线上任取一点 ...
- 141. Sqrt(x)【牛顿迭代法求平方根 by java】
Description Implement int sqrt(int x). Compute and return the square root of x. Example sqrt(3) = 1 ...
- 用matlab写牛顿迭代法,牛顿迭代法的MATLAB实现
20 牛顿迭代法的MATLAB实现 云 磊 (襄樊学院,湖北 襄阳 441053) 摘要:牛顿迭代法是方程求根中的一种较快捷的迭代方法,但遇到较复杂的方程时计算量较大.文章采用了MATLAB编程来实现 ...
- 牛顿迭代法 简单入门
引言 牛顿迭代法是在计算机编程领域广泛用来求解方程的算法. 此算法类似于二分枚举(仅仅感觉上很类似= =) 我们每次枚举一个值 X 0 X_0 X0,代入方程看是否为根,不是的话则将 X 0 X_0 ...
最新文章
- Redis数据介绍与指令大全
- 蚂蚁森林合种计划(2020.12.12,7天有效,每周6更新)
- OpenAI与GitHub联手推出AI代码生成工具,比GPT-3更强大
- 第28讲 | 弄懂数字货币交易平台(二)
- Java 泛型背后的原理是什么?
- 用电梯服务器怎样解电梯显示E34,默纳克品牌电梯故障代码e41怎么处理
- LVS DR模式搭建、keepalived+LVS
- 【Elasticsearch】Elasticsearch高级调优方法论之——根治慢查询!
- 异常:org.springframework.http.converter.HttpMessageNotReadableException
- c盘local文件太大_win7 c盘清理的方法教程
- 计算机组成与设计01——计算机概要与技术
- 如何修改Excel2016默认的等线字体--亲测可用
- makefile中的隐含规则
- 单目3D多人姿态估计网络(整合自上而下和自下而上网络)
- python xlsxwriter生成图片保存_Python Excel操作模块XlsxWriter之插入图片worksheet.insert_image()...
- Java的字面量和符号引用
- CentOS7下安装和配置MySQL5.7亲测有效(附图文)
- 中国云计算产业渐成熟 加速传统产业转型升级
- DeepFlow Large displacement optical flow with deep matching
- C/C++关于行末空格的控制输出
热门文章
- gin学习——邮箱发送验证码注册用户
- ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
- 如何选择PMP、IPMP、CPMP?
- java调用七鱼返回文件_网易七鱼 Android 高性能日志写入方案
- mysql 查询 断号_Mysql断号查询(连续数字查询中间断开的地方)
- PaddleSpeech TTS 设计要素 — 训练组件
- 项目Demo —— socket下载器
- 用计算机弹很多的歌,抖音用计算器弹奏音乐曲谱大全 极乐净土、体面和成都等歌曲...
- 【移动安全高级篇】————5、Andorid APK反逆向解决方案---梆梆加固原理探寻
- 余姚dns服务器位置,余姚广电dns服务器地址