打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
计算机如何进行更复杂的计算?
https://www.toutiao.com/a6516047852358074627/

​1.Taylor展开计算机问世以来,函数表这种东西便退出了历史舞台,然而计算机又是如何进行复杂初等函数的计算的呢?恐怕最容易想到的方法就是Taylor逼近,比如e^x= 1+x+x^2/2!+x^3/3!+...+x^n/n!+Rn(x),乍一看手工计算似乎都很方便的样子,然而对计算机来说计算浮点数的幂级数没有高性能的快速乘法器几乎是天方夜谈。举个简单例子:计算3.456^3首先将3.456用科学计数发表示成3456*10^-3, 3.456^3=3456*3456*3456*10^(-3-3-3)。单纯的使用加法器将进行的是3456*3456+2次加法运算,运算速度可想而知。并且在没有浮点数运算指令的平台上,利用各种级数展开的算法是非常不可靠的。2.CORDIC算法CORDIC的全称是Coordinate Rotation Digital Computer,即所谓的坐标旋转数字计算方法,由J.D.Volder1于1959年首次提出,当时是用来进行三角函数计算的主要算法。

​最先开始探究的并不是坐标旋转,而是旋转坐标系,现在想想也是很有意思的东西。咳咳,似乎扯远了。不过很奇怪的是当时并不知道什么CORDIC算法,核心思想居然已经如此接近。3.坐标旋转表达式由(x1,y1)进行圆周旋转θ度到(x2,y2),式子很简单,不做赘述。

提出cos公因子:
下面得到伪坐标旋转表达式:
伪坐标旋转表达式的意义何在?伪旋转后的向量与旋转后的向量共线,去除cos因子,少一次乘法。4.二分查找从一个例子说起:计算atan2
θ的值即是所求。如何用二分查找来求呢?换句话说,二分查找在这里找的是什么呢?找的就是让A点不断的进行逆时针旋转,旋转后纵坐标最接近0的A'点。先旋转45°看看,(x1,y1)设为(1000,2000)利用伪坐标旋转表达式计算出y2的值。y2=2000-1000=1000>0;x2=1000+2000=3000继续旋转22.5°y3=1000-3000*tan22.5=-242.64<0;旋转过了,这时一共转了67.5°了,也就是说实际的θ值要比67.5°小,那就再顺时针转11.25°求出y4y4=-242.64+3414.21*tan11.25=436.49>0;此时已逆时针旋转56.25°。再逆时针旋转5.625°,依次下去。直至旋转第n次时yn的值在误差范围内,每次旋转角度进行累加,估算出θ的值。通过二分查找,我们很明显的发现,这实际上是一个迭代过程。拿上一次伪旋转后的坐标计算本次伪旋转后的坐标,并且这个过程还要进行角度的累加。将这个过程用数学语言表现:
角度累加器,di等于-1或1,表示逆时针旋转或顺时针旋转。很多同学会产生疑问,这里的tan22.5怎么算啊?不还是有很多的乘法运算吗?下面我们介绍的就是CORDIC算法的精髓,如何消去乘法运算。5.消去乘法运算我们采用二分查找法时每次旋转的角度是前一次的1/2,在这里对旋转角度我们稍稍动一点儿手脚。令θi为第i次旋转的角度。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
三角函数计算,Cordic 算法入门
基于FPGA的数字三相锁相环优化设计
cordic算法的verilog实现及modelsim仿真
“计算”与“机”
神奇!6大乘法口诀,运算速度堪比计算机!留给孩子学
利用FPGA进行基本运算及特殊函数定点运算
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服