首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更快、更精确地计算Sin函数?

如何更快、更精确地计算Sin函数?
EN

Software Engineering用户
提问于 2012-10-08 13:06:17
回答 3查看 2.6K关注 0票数 8

我想要计算y(n)=32677Sin(45/1024•n),其中y是一个整数,n范围从0到2048。怎样才能使这个过程更快、更准确?现在,我想给大家一个参考答案:因为Sin(a+b)=Sin(a)Cos(b)+Cos(a)Sin(b)Cos(a+b)=Cos(a)Cos(b)-Sin(a)Cos(b)。所以我可以存储Sin(45/1024•1)Cos(45/1024•1) only.Then,使用以下公式:

Sin(45/1024•2)=Sin(45/1024•1+45/1024•1)Cos(45/1024•2)=Cos(45/1024•1+45/1024•1)Sin(45/1024•n)=Sin(45/1024•(n-1)+45/1024•1)Cos(45/1024•n)=Cos(45/1024•(n-1)+45/1024•1),这种方式在不存储大数组的情况下可能会更快。

EN

回答 3

Software Engineering用户

发布于 2012-10-08 13:17:05

如果n范围从0到2048,您可以预先计算值,然后存储在数组中。y(n)将成为values[n]

票数 18
EN

Software Engineering用户

发布于 2012-10-08 16:52:01

在编译时而不是运行时计算表。

您正在执行一个由16位缩放整数值组成的2048元素表。

编写一个便宜的Matlab脚本,打印出适合你最终编程语言的数据线。将结果剪切并粘贴到源代码中,作为常量数据表,并在运行时进行表查找。这会将初始计算时间推入构建周期,而不是程序启动时间。

票数 1
EN

Software Engineering用户

发布于 2012-10-10 16:46:00

给定函数的形式,自然的答案是CORDIC算法。这是一个比问题中的问题更清晰的方法。另一方面,它所需要的表格比其他人所建议的要小得多。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/167954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档