报名编号:CICC1327
团队名称:301小队
Newton-Raphson算法采用乘法来代替除法运算,即a/b=a(1/b),基本原理如下:
已知曲线方程f(x),我们在xn点做切线,求xn+1
首先我们猜测x0,由f(x)在该点处的切线方程y-f(x0) = f’(x0)(x-x0),找出使y = 0的新的一点x1,则x1更加接近xn.
一般来说,y-f(xi) = f’(xi)(x-xi),令y = 0,我们有新的一点xi+1 = xi – f(xi)/f’(xi)。重复上述过程,一直到xn足够精确为止。
对于a/b计算来说, 令f(x) = 1/x – d,则在x=1/b处f(x0)。根据上述的牛顿迭代算法,一直逼近于f(x) = 0的点,则有xi+1 = xi (2 - xi b),这样我们能够用下述步骤实现a/b:
1)把b移位,使其满足0.5≤b<1;
2)使用b的高若干位查ROM表得到1/b的近似值x0;
3)迭代xi+1 = xi (2 - xi b),直到xn足够精确为止;
4)计算axn,把结果反向移位以消除第一步造成的影响。
3.14159/2.71828的理论值为:1.155727
如上图所示结果为1.15573,浮点除法功能正常。