首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何用CGAL和CORE精确计算sin(2*m*Pi/n)?

如何用CGAL和CORE精确计算sin(2*m*Pi/n)?
EN

Stack Overflow用户
提问于 2014-04-14 23:41:04
回答 1查看 410关注 0票数 3

使用Chebyshev多项式,我们可以使用CGAL和核心库精确计算sin(2*Pi/n),如以下代码:

代码语言:javascript
运行
AI代码解释
复制
#include <CGAL/CORE_Expr.h>
#include <CGAL/Polynomial.h>
#include <CGAL/number_utils.h>
//return sin(theta) and cos(theta) for theta = 2pi/n
static std::pair<AA, AA> sin_cos(unsigned short n) {
    // We actually use -x instead of x since root_of will give the k-th
    // smallest root but we want the second largest one without counting.
    Polynomial x(CGAL::shift(Polynomial(-1), 1));
    Polynomial twox(2*x);
    Polynomial a(1), b(x);
    for (unsigned short i = 2; i <= n; ++i) {
        Polynomial c = twox*b - a;
        a = b;
        b = c;
     }
     a = b - 1;
     AA cos = -CGAL::root_of(2, a.begin(), a.end());
     AA sin = CGAL::sqrt(AA(1) - cos*cos);
     return std::make_pair(sin, cos);
}

但是如果我想精确地计算sin(2*m*Pi/n),其中m和n是整数,我应该使用的多项式的公式是什么?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-04-15 17:36:26

(部分解决方案。)

这本质上是计算单位根的实部和虚部作为代数数字。让我们表示w(m) = exp(2*pi*I*m/n)。那么,w(m)本身就是En(x) = x^n-1的复根。

您需要找到Re(w(m))的定义多项式。结式是找到这样一个多项式的工具: 2*Re(w(m))是Res (En(x- y),En(y);y)的根。

对于这种情况的解释:请注意2*Re( w(m) ) =w(M)+ conj(w(m)),并且En的复根是共轭对;因此,conj(w(m))也是En的根。现在松散地说,En(y)部分“约束”y为En的任何(复数)根,并且将其与第一个参数相结合,允许x采用任何复数值,使得x-y也是En的根。因此,一个可能的赋值是y= conj(w(m))和x-y = w(m),因此x= w(m)+conj(w(m)) = 2*Re(w(m))。

CGAL可以计算多元多项式的结式,所以你可以计算这个结式,你只需要选择正确的实根。(最大的显然是w(0) = 1,最小的是2*Re(w(floor(n/2)。)

不幸的是,结果具有很高的复杂度(n^2级),并且结果计算不会是您见过的最快的操作。此外,尽管您的实例非常稀疏和结构化,但您将为密集多项式买单。YMMV;我对你的用例一无所知,如果你需要更高的学位。

然而,我在一个计算机代数系统中做了一些测试,我发现结果分裂成更合理大小的因子,并且它的所有实根实际上只属于一个更简单的次数下限(n/2)+1的多项式。(没有证据,只是观察。)

我不知道一个直接的公式来写下这个因子,我也不想去猜测它。但也许mathoverflow或math.stackexchange的一些人可以提供帮助?

编辑:以下是至少一个递归公式的猜测。

我写s(n,x)表示包含除0之外的所有实根的合成多项式的有效因子。这意味着s(n,x)以m != n/4,3*n/4的所有值2*Re(w(m))为根。

s(0,x) =0

s(1,x) =x-2

s(2,x) = x^2 -4

s(3,x) = x^2 -x-2

s(4,x) = x^2 -4

s(5,x) = x^3 - x^2 - 3*x +2

s(6,x) = x^4 - 5*x^2 +4

s(7,x) = x^4 - x^3 - 4*x^2 + 3*x +2

s(8,x) = x^4 - 6*x^2 +8

s(n,x) = (x^2-2)*s(n-4,x) - s(n-8,x)

等待证据。

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

https://stackoverflow.com/questions/23072256

复制
相关文章
如何动态更换App图标
在Android开发中,通常会有这样的需求,逢年过节UI的小伙伴们都会做出节日或活动相关的APP图标让我们更换,可是每次更换都要发版实现。那么,如何在不发版的情况下动态地更换我们的图标呢?本篇文章就来讲讲动态更换的方法。
蜻蜓队长
2019/08/02
4.2K0
如何动态更换App图标
如何优雅的动态修改app 图标
在iOS 10.3之后,苹果官方提供了相关的API来实现这个功能,主要是下面这几个方法:
xiangzhihong
2022/11/30
1.6K0
Android 动态改变app图标
别名的name设置成一个activity,尽量和一个<activity>的name保持一致,如果不设置成一个activity的名字,部分手机会有问题。
网罗开发
2021/01/29
1.1K0
NuGet 如何设置图标
在找 NuGet 的时候可以看到有趣的库都有有趣的图标,那么如何设置一个 NuGet 的图标?
林德熙
2020/09/10
1.6K0
NuGet 如何设置图标
mapboxGL中多图标加载的实现
mapboxGl中多图标的实现可以在style中指定sprite来实现,但是在实际使用的时候会出现sprite之外的图标需要引用,此时通过map.addImage()来实现,但是如果存在多个图标的时候,因为map.addImage()需要先通过map.loadImage()先加载图标,而map.loadImage()是一个异步的,使用起来就有点麻烦。本文希望通过再再加sprite来实现一次性添加图标。
牛老师讲GIS
2022/09/29
2K0
mapboxGL中多图标加载的实现
【Flutter】Icons 组件 ( 加载 Flutter 内置的图标 | 材料设计图标完整展示 )
Flutter 中内置了一些默认图标 , 可以在 https://material.io/resources/icons/ 界面进行查询 ;
韩曙亮
2023/03/29
3.7K0
【Flutter】Icons 组件 ( 加载 Flutter 内置的图标 | 材料设计图标完整展示 )
阿里图标库引入图标
比wordpress默认图表库的图标好看多的 默认图标库的图标一般都是灰白色简直难看死了哈哈 今天分享给大家如何插入阿里图标库的彩色图标 阿里图标库有什么好处呢 插入方便 图标样式多 彩色图标应有尽有 反正你用都用不完 重点还永久免费使用
傲绝
2023/03/13
2.8K0
阿里图标库引入图标
C#动态系统托盘图标
C#动态系统托盘图标 利用timer组件定时执行变化。 1 using System; 2 using System.Windows.Forms; 3 4 namespace DynamicStockIcon 5 { 6 public partial class DynamicStockIcon : Form 7 { 8 public DynamicStockIcon() 9 { 10 InitializeCompo
landv
2018/06/22
9050
iOS开发中动态更换应用图标
注意:更换的icon不能放在asserts文件中,否则无法更换成功。(你可以试试)
用户1451823
2018/09/13
1.7K0
iOS开发中动态更换应用图标
C#动态系统托盘图标
C#动态系统托盘图标 利用timer组件定时执行变化。 1 using System; 2 using System.Windows.Forms; 3 4 namespace DynamicStockIcon 5 { 6 public partial class DynamicStockIcon : Form 7 { 8 public DynamicStockIcon() 9 { 10 InitializeCompo
landv
2018/05/24
9760
通过重建图标缓存文件来解决程序图标显示错误的问题
最近发现一两个程序的图标显示不太正确。很明显,上图在资源管理器与详细信息面板的图标不同。
williamwong
2018/07/24
1.4K0
通过重建图标缓存文件来解决程序图标显示错误的问题
字体图标
图片是有诸多优点的,但是缺点很明显,比如图片不但增加了总文件的大小,还增加了很多额外的"http请求",这都会大大降低网页的性能的。更重要的是图片不能很好的进行“缩放”,因为图片放大和缩小会失真。 我们后面会学习移动端响应式,很多情况下希望我们的图标是可以缩放的。此时,一个非常重要的技术出现了, 这就是字体图标(iconfont).
星辰_大海
2020/09/30
3.9K0
信号图标
类视图**和对象浏览器显示表示代码实体的图标,例如命名空间、类、函数和变量。下表演示并描述了这些图标。
vv彭
2020/12/01
2.1K0
图标小结
series[].type xAxis yAxis markPoint markLine label barWidth
Qwe7
2022/06/16
1.9K0
前端基础-CSS网站图标和字体图标
作用:一个好的ico图标可以加深用户对于网站的记忆。降低用户记忆成本,就好像现在说道熊爪大家都能够想到度娘,更多的属于用户体验。有利于识别当前窗口是在哪个网站。
cwl_java
2020/04/07
5.9K0
前端基础-CSS网站图标和字体图标
大屏可视化之番外篇图标/图表制作 图标1图标2图标3图标4,5图表总结
实际项目开发中,往往是让设计人员把相关的图标做成矢量图或者位图,交给开发人员,开发人员直接使用到实际的项目中去。
用户3158888
2020/05/12
3.1K0
大屏可视化之番外篇图标/图表制作
                            图标1图标2图标3图标4,5图表总结
哪吒探针如何修改ico图标
代码 查看docker信息 docker -ps ico目录 /dashboard/resource/static/ 进入docker目录 docker exec -it dashboard_dashboard_1 sh 替换svg文件 docker cp 你的ico的svg文件路径 docker ID:/dashboard/resource/static/logo.svg CSS 具体查看我这篇文章:哪吒一站式轻监控轻运维系统
团团生活志
2022/08/16
1K0
微信小程序----自定义加载图标
效果图 实现思路 首先通过HTML+CSS实现加载动画的静态效果; 根据需求给每个动画设计不同的动画效果。 例如第一个加载图标的静态绘制 1、首先确定动画的盒子宽高; 2、设置盒子中每一个长方形的
Rattenking
2021/02/01
1.3K0
微信小程序----自定义加载图标
MIUI加载时的等待图标#有趣的加载icon-1
如果直接用的话,改:root选择器里面的值即可,有注释,调试一下就能得到自己想要的效果。
逝水经年
2021/08/31
9980
Windows图标显示异常解决方法。桌面图标异常,开始菜单图标异常,任务栏图标异常。图标缓存位置。
解决办法: 在C:\Users\Administrator\AppData\Local里有个IconCache.db图标缓存,它是隐身的。一般图标出现异常就是这个缓存的问题了,我们把这个删掉,之后重启后会自动重新生成新的,然后就好了。
小蓝枣
2020/09/23
5.4K0

相似问题

在R中安装mxnet软件包时发出的问题

613

无法加载R4.0.2软件包“XXXX”中的软件包

10

如何在google上安装mxnet?

110

如何在R中通过mxnet软件包使用AMD RX Radeon

138

在Rstudio中安装mxnet包

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档