发明名称 一种基于欧拉公式的高精度正弦/余弦函数计算方法
摘要 本发明涉及一种基于欧拉公式的高精度正弦/余弦函数的计算方法,运用复数运算的泰勒展式得到高精度的正弦/余弦函数值;所述方法包括:设计三个子模块,分别是,相位细分模块,初值计算模块和迭代求解模块;其中,相位细分模块将需要求取三角函数相位值分为N份,N为正整数;初值计算模块计算得出细分后相位的三角函数值,并作为迭代初值;迭代求解模块将初值代入计算方程式进行迭代计算,迭代次数越多,所得正弦/余弦值计算精度越高;最后,运用欧拉公式可将迭代结果转换为对应待求相位的正弦/余弦值。
申请公布号 CN103065039A 申请公布日期 2013.04.24
申请号 CN201210529384.7 申请日期 2012.12.10
申请人 北京航空航天大学 发明人 曹章;徐立军;彭智聪;宋伟
分类号 G06F19/00(2006.01)I 主分类号 G06F19/00(2006.01)I
代理机构 代理人
主权项 1.一种基于欧拉公式的高精度正弦/余弦函数的计算方法,其特征在于,该方法包括下述步骤:步骤一,相位细分;将待求相位η细分为2<sup>N</sup>份,所述待求相位η的取值范围是[0,2π],细分后的相位τ<sub>0</sub>为:τ<sub>0</sub>=η/2<sup>N</sup>    (1)步骤二,初值计算;针对细分后的相位代入欧拉公式进行复数值的计算,所述复数值的计算采用了泰勒展开式,理论上可以展开成无穷多项,但在实现时,考虑到高次幂对复数值的贡献很小,故取前五项参与运算:<maths num="0001"><![CDATA[<math><mrow><mi>cos</mi><msub><mi>&tau;</mi><mn>0</mn></msub><mo>+</mo><mi>i</mi><mi>sin</mi><msub><mi>&tau;</mi><mn>0</mn></msub><mo>=</mo><msup><mi>e</mi><mrow><mi>i</mi><msub><mi>&tau;</mi><mn>0</mn></msub></mrow></msup><mo>&ap;</mo><mn>1</mn><mo>+</mo><mi>i</mi><msub><mi>&tau;</mi><mn>0</mn></msub><mo>+</mo><mfrac><msup><mrow><mo>(</mo><mi>i</mi><msub><mi>&tau;</mi><mn>0</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mn>2</mn></mfrac><mo>+</mo><mfrac><msup><mrow><mo>(</mo><mi>i</mi><msub><mi>&tau;</mi><mn>0</mn></msub><mo>)</mo></mrow><mn>3</mn></msup><mn>6</mn></mfrac><mo>+</mo><mfrac><msup><mrow><mo>(</mo><mi>i</mi><msub><mi>&tau;</mi><mn>0</mn></msub><mo>)</mo></mrow><mn>4</mn></msup><mn>24</mn></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>(2)中,令<maths num="0002"><![CDATA[<math><mrow><msub><mi>T</mi><mn>0</mn></msub><mo>=</mo><mi>i</mi><msub><mi>&tau;</mi><mn>0</mn></msub><mo>+</mo><mfrac><msup><mrow><mo>(</mo><mi>i</mi><msub><mi>&tau;</mi><mn>0</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mn>2</mn></mfrac><mo>+</mo><mfrac><msup><mrow><mo>(</mo><mi>i</mi><msub><mi>&tau;</mi><mn>0</mn></msub><mo>)</mo></mrow><mn>3</mn></msup><mn>6</mn></mfrac><mo>+</mo><mfrac><msup><mrow><mo>(</mo><mi>i</mi><msub><mi>&tau;</mi><mn>0</mn></msub><mo>)</mo></mrow><mn>4</mn></msup><mn>24</mn></mfrac><mo>,</mo></mrow></math>]]></maths>得<img file="FDA00002553570500013.GIF" wi="282" he="66" />T<sub>0</sub>就是所述的迭代初值。步骤三,迭代求解;所述迭代次数为步骤一中定义的N,迭代结果进行变换后得到待求相位η的正弦/余弦值,根据(1)可知,η=2<sup>N</sup>×τ<sub>0</sub>,所述变换依据欧拉公式进行;迭代过程中每次参与迭代相位值都是前次参与迭代相位值的2倍,迭代公式基于多项式的平方公式,第i+1(i=0,1,2,3,...N-1)次迭代的相位τ<sub>i+1</sub>的复数值与第i次迭代相位τ<sub>i</sub>的复数值具有相同的表现形式:<maths num="0003"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><msup><mi>e</mi><mrow><mi>i</mi><msub><mi>&tau;</mi><mi>i</mi></msub></mrow></msup><mo>=</mo><mn>1</mn><mo>+</mo><msub><mi>T</mi><mi>i</mi></msub></mtd></mtr><mtr><mtd><msup><mi>e</mi><mrow><mi>i</mi><msub><mi>&tau;</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mrow></msup><mo>=</mo><msup><mi>e</mi><mrow><mi>i</mi><mrow><mo>(</mo><mn>2</mn><mo>&times;</mo><msub><mi>&tau;</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></msup><mo>=</mo><msup><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>T</mi><mi>i</mi></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>=</mo><mn>1</mn><mo>+</mo><mn>2</mn><msub><mi>T</mi><mi>i</mi></msub><mo>+</mo><msubsup><mi>T</mi><mi>i</mi><mn>2</mn></msubsup><mo>=</mo><mn>1</mn><mo>+</mo><msub><mi>T</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>所述迭代公式为T<sub>i+1</sub>=2T<sub>i</sub>+T<sub>i</sub><sup>2</sup>        (4)所得正弦/余弦计算值为<maths num="0004"><![CDATA[<math><mrow><mfenced open='{' close=''><mtable><mtr><mtd><mi>cos</mi><mi>&eta;</mi><mo>=</mo><mi>img</mi><mrow><mo>(</mo><msup><mi>e</mi><mi>i&eta;</mi></msup><mo>)</mo></mrow><mo>=</mo><mi>img</mi><mrow><mo>(</mo><msup><mi>e</mi><mrow><mi>i</mi><msub><mi>&tau;</mi><mi>N</mi></msub></mrow></msup><mo>)</mo></mrow><mo>=</mo><mi>img</mi><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>T</mi><mi>N</mi></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mi>sin</mi><mi>&eta;</mi><mo>=</mo><mi>real</mi><mrow><mo>(</mo><msup><mi>e</mi><mi>i&eta;</mi></msup><mo>)</mo></mrow><mo>=</mo><mi>real</mi><mrow><mo>(</mo><msup><mi>e</mi><mrow><mi>i</mi><msub><mi>&tau;</mi><mi>N</mi></msub></mrow></msup><mo>)</mo></mrow><mo>=</mo><mi>real</mi><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>T</mi><mi>N</mi></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>
地址 100191 北京市海淀区学院路37号