首页> 中国专利> 一种基于欧拉公式的高精度正弦/余弦函数计算方法

一种基于欧拉公式的高精度正弦/余弦函数计算方法

摘要

本发明涉及一种基于欧拉公式的高精度正弦/余弦函数的计算方法,运用复数运算的泰勒展式得到高精度的正弦/余弦函数值;所述方法包括:设计三个子模块,分别是,相位细分模块,初值计算模块和迭代求解模块;其中,相位细分模块将需要求取三角函数相位值分为N份,N为正整数;初值计算模块计算得出细分后相位的三角函数值,并作为迭代初值;迭代求解模块将初值代入计算方程式进行迭代计算,迭代次数越多,所得正弦/余弦值计算精度越高;最后,运用欧拉公式可将迭代结果转换为对应待求相位的正弦/余弦值。

著录项

  • 公开/公告号CN103065039A

    专利类型发明专利

  • 公开/公告日2013-04-24

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201210529384.7

  • 发明设计人 曹章;徐立军;彭智聪;宋伟;

    申请日2012-12-10

  • 分类号G06F19/00;

  • 代理机构

  • 代理人

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2024-02-19 19:11:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-02-24

    授权

    授权

  • 2013-05-29

    实质审查的生效 IPC(主分类):G06F19/00 申请日:20121210

    实质审查的生效

  • 2013-04-24

    公开

    公开

说明书

技术领域

本发明涉及数字信号发生领域,尤其涉及一种高精度正弦/余弦函数值的计算方法。 

背景技术

直接数字频率合成现已成为信号发生的重要设计方法,它的主要优点是输出频率、相位和幅度能够在数字处理器的控制下精确而快速地变换。相位-幅度变换器是直接数字频率合成器的重要组成部分,它的精度直接决定了输出正弦/余弦波的精度和纯度,因此,对正弦/余弦值的精确计算是重中之重。 

目前,正弦/余弦函数数值的计算方法主要有查表法、插值法和CORDIC算法。在对相位和频率分辨率以及输出精度要求很高的场合,查表法会消耗大量的存储单元,这不仅增大了能耗,而且增加了芯片面积。CORDIC算法运用坐标旋转求取相应的正余弦值,它解决了资源的消耗问题,且非常适合在FPGA上实现,但CORDIC算法在固定迭代次数的情况下,计算的精度随待计算角度的变化而变化。因此,CORDIC算法在频率变化比较大的场合满足不了高精度的要求。 

直接数字频率合成在高端技术和军事技术,以及通信技术中有着较为广泛的需求,这就对它极微小的频率调谐和相位分辨能力,以及在两个频率之间的“跳跃”能力,提出了较高的要求,因而,设计一种计算精度与输入角度无关的正弦/余弦计算方法尤为重要。 

发明内容

本发明的目的在于提出一种基于欧拉公式的高精度正弦/余弦函数的计算方法,实现计算精度与输入角度无关的正弦/余弦计算方法。所述方法依据精细积分原理,可以求得在[0,2π]间任意相位高精度的正弦/余弦值。 

本发明的技术方案是: 

所述方法通过细分待求相位,根据欧拉公式求得小相位下的迭代初值,并迭代相应次数N(N为正整数),将迭代结果进行转换,进而得到所述待求相位下的正弦/余弦值;所述方法包括以下步骤: 

步骤一,相位细分;将待求相位η细分为2N份,所述待求相位η的取值范围是[0,2π],细分后的相位τ0为: 

τ0=η/2N    (6) 

步骤二,初值计算;针对细分后的相位代入欧拉公式进行复数值的计算,所述复数值的计算采用了泰勒展开式,理论上可以展开成无穷多项,但在实现时,考虑到高次幂对复数值的贡献很小,故取前五项参与运算: 

cosτ0+isinτ0=eiτ01+iτ0+(iτ0)22+(iτ0)36+(iτ0)424---(7)

(7)中,令T0=iτ0+(iτ0)22+(iτ0)36+(iτ0)424,得T0就是所述的迭代初值。 

步骤三,迭代求解;所述迭代次数为步骤一中定义的N,迭代结 果进行变换后得到待求相位η的正弦/余弦值,根据(1)可知,η=2N×τ0,所述变换依据欧拉公式进行;迭代过程中每次参与迭代相位值都是前次参与迭代相位值的2倍,迭代公式基于多项式的平方公式,第i+1(i=0,1,2,3,...N-1)次迭代的相位τi+1的复数值与第i次迭代相位τi的复数值具有相同的表现形式: 

eiτi=1+Tieiτi+1=ei(2×τi)=(1+Ti)2=1+2Ti+Ti2=1+Ti+1---(8)

所述迭代公式为 

Ti+1=2Ti+Ti2           (9) 

所得正弦/余弦计算值为 

cosη=img(e)=img(eiτN)=img(1+TN)sinη=real(e)=real(eiτN)=real(1+TN)---(10)

进一步的,所述的一种基于欧拉公式的高精度正弦/余弦函数的计算方法,对于任意一个相位值,计算误差都是独立的,不存在相位值之间的累积误差。 

进一步的,所述的一种基于欧拉公式的高精度正弦/余弦函数的计算方法,迭代次数越多,正弦/余弦函数值越精确。 

附图说明

图1为本发明算法框图; 

图2为迭代计算流程图; 

图3为迭代次数与精度的对应关系。 

具体实施方式

参见图1,一种基于欧拉公式的高精度正弦/余弦函数的计算方法的算法框图。 

所述方法包括以下步骤: 

步骤一,相位细分;将待求相位η细分为2N份,所述待求相位η的取值范围是[0,2π],细分后的相位τ0为: 

τ0=η/2N        (11) 

步骤二,初值计算;针对细分后的相位代入欧拉公式进行复数值的计算,所述复数值的计算采用了泰勒展开式,理论上可以展开成无穷多项,但在实现时,考虑到高次幂对复数值的贡献很小,故取前五项参与运算: 

cosτ0+isinτ0=eiτ01+iτ0+(iτ0)22+(iτ0)36+(iτ0)424---(12)

(7)中,令T0=iτ0+(iτ0)22+(iτ0)36+(iτ0)424,得T0就是所述的迭代初值。 

步骤三,迭代求解;所述迭代次数为步骤一中定义的N,迭代结果进行变换后得到待求相位η的正弦/余弦值,根据(1)可知,η=2N×τ0,所述变换依据欧拉公式进行;迭代过程中每次参与迭代相位值都是前次参与迭代相位值的2倍,迭代公式基于多项式的平方公式,第i+1(i=0,1,2,3,...N-1)次迭代的相位τi+1的复数值与第i次迭代相位τi的复数值具有相同的表现形式: 

eiτi=1+Tieiτi+1=ei(2×τi)=(1+Ti)2=1+2Ti+Ti2=1+Ti+1---(13)

所述迭代公式为 

Ti+1=2Ti+Ti2        (14) 

迭代计算的流程图参见图2。 

所得正弦/余弦计算值为 

cosη=img(e)=img(eiτN)=img(1+TN)sinη=real(e)=real(eiτN)=real(1+TN)---(15)

所述的一种基于欧拉公式的高精度正弦/余弦函数的计算方法,对于任意一个相位值,计算误差都是独立的,不存在相位值之间的累积误差。迭代次数越多,正弦/余弦函数值越精确。迭代次数与正弦/余弦值计算精度之间的关系参见图3。 

以上对本发明及其实施方式的描述,并不局限于此,附图中所示仅是本发明的实施方式之一。在不脱离本发明创造宗旨的情况下,不经创造地设计出与该技术方案类似的结构或实施例,均属本发明保护范围。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号