发明名称 一种基于泰勒展开式的高精度正弦/余弦函数计算方法
摘要 本发明涉及一种基于泰勒展开式的高精度正弦/余弦函数计算方法,具体包括三个子模块,以产生高精度的正弦/余弦函数值;三个子模块分别是,相位细分模块,初值计算模块和迭代求解模块;其中,相位细分模块将需要求取三角函数相位值分为N份,N为正整数;初值计算模块计算得出细分后相位的三角函数值,并作为迭代初值;迭代求解模块根据计算方程式将初值迭代相应的步数,迭代结果即对应于三角函数的正弦和余弦值。本发明采用较少的迭代次数即可获得高精度的正弦及余弦数值。
申请公布号 CN103049427A 申请公布日期 2013.04.17
申请号 CN201210527993.9 申请日期 2012.12.10
申请人 北京航空航天大学 发明人 曹章;徐立军;彭智聪;宋伟
分类号 G06F17/15(2006.01)I 主分类号 G06F17/15(2006.01)I
代理机构 代理人
主权项 一种基于泰勒展开式的高精度正弦/余弦函数的计算方法,其特征在于,该方法包括步骤:步骤一,相位细分;将待求相位η细分为2N份,所述待求相位η的取值范围是[0,2π],细分后的相位τ0为:τ0=η/2N                (1)步骤二,初值计算;针对所述细分后的相位τ进行正弦/余弦函数值的计算,所述正弦/余弦函数的计算采用了泰勒展开式,理论上可以展开成无穷多项,但在实现时,考虑到高次幂对正弦/余弦值的贡献很小,故取前三项参与运算,式(2)中S0表示正弦函数的初值,式(3)中1+C0表示余弦函数初值; <mrow> <msub> <mi>S</mi> <mn>0</mn> </msub> <mo>=</mo> <msub> <mrow> <mi>sin</mi> <mi>&tau;</mi> </mrow> <mn>0</mn> </msub> <mo>&ap;</mo> <msub> <mi>&tau;</mi> <mn>0</mn> </msub> <mo>-</mo> <mfrac> <msubsup> <mi>&tau;</mi> <mn>0</mn> <mn>3</mn> </msubsup> <mrow> <mn>3</mn> <mo>!</mo> </mrow> </mfrac> <mo>+</mo> <mfrac> <msubsup> <mi>&tau;</mi> <mn>0</mn> <mn>5</mn> </msubsup> <mrow> <mn>5</mn> <mo>!</mo> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow> <mrow> <mn>1</mn> <mo>+</mo> <msub> <mi>C</mi> <mn>0</mn> </msub> <mo>=</mo> <msub> <mrow> <mi>cos</mi> <mi>&tau;</mi> </mrow> <mn>0</mn> </msub> <mo>&ap;</mo> <mo>-</mo> <mfrac> <msubsup> <mi>&tau;</mi> <mn>0</mn> <mn>2</mn> </msubsup> <mrow> <mn>2</mn> <mo>!</mo> </mrow> </mfrac> <mo>+</mo> <mfrac> <msubsup> <mi>&tau;</mi> <mn>0</mn> <mn>4</mn> </msubsup> <mrow> <mn>4</mn> <mo>!</mo> </mrow> </mfrac> <mo>-</mo> <mfrac> <msubsup> <mi>&tau;</mi> <mn>0</mn> <mn>6</mn> </msubsup> <mrow> <mn>6</mn> <mo>!</mo> </mrow> </mfrac> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow>步骤三,迭代求解;所述迭代次数为N,N是正整数,迭代结果是所述待求相位η的正弦/余弦函数值,根据(1)可知,η=2N×τ0;所述迭代过程中每次参与迭代的相位值都是前次参与迭代相位值的2倍,迭代公式基于正弦/余弦函数的倍角公式,因此第i+1(i=0,1,2,3…N‑1)次迭代的相位τi+1的正弦/余弦函数可以表示成第i次迭代相位τi的正弦/余弦函数的线性组合的形式: <mrow> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msub> <mi>S</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <msub> <mrow> <mi>sin</mi> <mi>&tau;</mi> </mrow> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mi>sin</mi> <mrow> <mo>(</mo> <msub> <mrow> <mn>2</mn> <mi>&tau;</mi> </mrow> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mrow> <mn>2</mn> <mi>sin</mi> <mi>&tau;</mi> </mrow> <mi>i</mi> </msub> <msub> <mrow> <mi>cos</mi> <mi>&tau;</mi> </mrow> <mi>i</mi> </msub> <mo>=</mo> <mn>2</mn> <msub> <mi>S</mi> <mi>i</mi> </msub> <mrow> <mo>(</mo> <mn>1</mn> <mo>+</mo> <msub> <mi>C</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <msub> <mi>C</mi> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <msub> <mrow> <mi>cos</mi> <mi>&tau;</mi> </mrow> <mrow> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <mn>1</mn> <mo>=</mo> <mi>cos</mi> <mrow> <mo>(</mo> <msub> <mrow> <mn>2</mn> <mi>&tau;</mi> </mrow> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mn>1</mn> <mo>=</mo> <mo>-</mo> <mn>2</mn> <msubsup> <mrow> <mi>sin</mi> <mi>&tau;</mi> </mrow> <mi>i</mi> <mn>2</mn> </msubsup> <mo>=</mo> <mo>-</mo> <msubsup> <mrow> <mn>2</mn> <mi>S</mi> </mrow> <mi>i</mi> <mn>2</mn> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>迭代结果可以直接表示为所述待求相位η的三角函数值的形式: <mrow> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <mi>sin</mi> <mi>&eta;</mi> <mo>=</mo> <msub> <mi>S</mi> <mi>N</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mi>cos</mi> <mi>&eta;</mi> <mo>=</mo> <msub> <mi>C</mi> <mi>N</mi> </msub> <mo>+</mo> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>
地址 100191 北京市海淀区学院路37号