Tag: 续分数

算法挑战:为浮点生成连续分数

( 编辑 :回应脾气暴躁的评论,不,这不是功课。我正在进行音调检测,获取一系列潜在的谐波峰值,并尝试构建基频的候选者。因此,它实际上是一个非常实际的问题。 ) 考虑(例如)pi的最佳分数近似,按增加的分母排序:3 / 1,22 / 7,355 / 113,…… 挑战:创建一个整洁的 C算法,它将为给定的浮点数生成第n个商近似值a / b,同时返回差异。 calcBestFrac(float frac,int n,int * a,int * b,float * err){…} 我认为最好的技术是持续分数 拿走pi的小部分,你得到3 现在,余数是0.14159 … = 1 / 7.06251 .. 所以下一个最佳理性是3 + 1/7 = 22/7 从7.06251拿走7,你得到0.06251 ..大约1 / 15.99659 .. 称之为16,然后是下一个最佳近似值 3 + 1 /(7 + 1/16)= 355/113 但是,转换成干净的C代码远非微不足道。 如果我得到一些整洁的话,我会发帖。 同时,有人可能会喜欢它作为脑力激荡器。