c/c++语言开发共享如何在C中实现连续分数的自然对数?

我有一点问题。 从这个公式创建一些东西:

如何在C中实现连续分数的自然对数?

这就是我所拥有的,但它不起作用。 Franky,我真的不明白它应该如何工作..我试着用一些不好的指令来编写代码。 N是迭代次数和分数的一部分。 我认为它以某种方式导致递归,但不知道如何。

谢谢你的帮助。

double contFragLog(double z, int n) { double cf = 2 * z; double a, b; for(int i = n; i >= 1; i--) { a = sq(i - 2) * sq(z); b = i + i - 2; cf = a / (b - cf); } return (1 + cf) / (1 - cf); } 

    中央循环是混乱的。 返工。 也不需要递归。 只需先计算最深的术语,然后逐步解决问题。

     double contFragLog(double z, int n) { double zz = z*z; double cf = 1.0; // Important this is not 0 for (int i = n; i >= 1; i--) { cf = (2*i -1) - i*i*zz/cf; } return 2*z/cf; } void testln(double z) { double y = log((1+z)/(1-z)); double y2 = contFragLog(z, 8); printf("%e %e %en", z, y, y2); } int main() { testln(0.2); testln(0.5); testln(0.8); return 0; } 

    产量

     2.000000e-01 4.054651e-01 4.054651e-01 5.000000e-01 1.098612e+00 1.098612e+00 8.000000e-01 2.197225e+00 2.196987e+00 

    [编辑]

    根据@MicroVirus的提示,我发现double cf = 1.88*n - 0.95;double cf = 1.0;更好地工作double cf = 1.0; 。 使用更多的术语时,使用的值会产生较小的差异,但是良好的初始cf需要较少的术语才能获得良好的答案,尤其是对于|z| 接近0.5。 当我研究0 < z <= 0.5可以在这里做更多的工作。 @MicroVirus对2*n+1建议可能接近我的建议,因为n是一个n

    这是基于反向计算并注意到CF[n]的值随着n增加而增加。 我很惊讶“种子”值似乎不是一个很好的整数方程式。

    这是使用递归的问题的解决方案(如果有人感兴趣):

     #include  #include  /* `i` is the iteration of the recursion and `n` is just for testing when we should end. 'zz' is z^2 */ double recursion (double zz, int i, int n) { if (!n) return 1; return 2 * i - 1 - i * i * zz / recursion (zz, i + 1, --n); } double contFragLog (double z, int n) { return 2 * z / recursion (z * z, 1, n); } void testln(double z) { double y = log((1+z)/(1-z)); double y2 = contFragLog(z, 8); printf("%e %e %en", z, y, y2); } int main() { testln(0.2); testln(0.5); testln(0.8); return 0; } 

    输出与上面的解决方案相同:

     2.000000e-01 4.054651e-01 4.054651e-01 5.000000e-01 1.098612e+00 1.098612e+00 8.000000e-01 2.197225e+00 2.196987e+00 

      以上就是c/c++开发分享如何在C中实现连续分数的自然对数?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/559940.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐