You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TensorFlow实现cos(x)+1的7阶泰勒展开时结果与实际值不符

泰勒展开代码问题定位
  • 首先明确:你当前输出的-0.21135不是代码计算笔误的结果,而是逻辑正确截断到x⁶项的必然值。代入数学公式验证:2 - (3.14159²)/2! + (3.14159⁴)/4! - (3.14159⁶)/6! ≈ -0.21135,和你的输出完全匹配。
  • 偏差产生的第一个核心原因是对展开精度的预期不符合实际:
    你实现的是cos(x)+1在x=0处的麦克劳林展开,这类展开仅在x靠近0的位置能快速收敛到高精度。如果严格按照“最高阶数为7”的要求截断,由于展开式仅包含偶次项,能取到的最高幂次就是x⁶。此时在x=3.14(距离展开点3个多单位)的位置,截断误差达到0.2量级是正常的数学结果,根本不可能达到3.5e-12的精度。你看到的高精度值,需要把展开延伸到x^12及更高次项才能实现,远超出7阶截断的能力范围。
  • 偏差产生的第二个核心原因是循环范围设置错误:
    如果你本意是要尽可能逼近x=3.14处的真实值,仅循环到i=3(对应x⁶项)是远远不够的。你目前的交替符号判断逻辑(i为奇数时减项、偶数时加项)是完全匹配展开要求的,但需要把循环范围向外扩展,逐次累加x⁸、x¹⁰、x¹²等高次项,才能快速压低截断误差,最终得到接近真实值的结果。
  • 代码实现的注意事项:
    • 你直接把result初始值设为2,已经提前计入了展开的常数项,要避免在循环里重复计算x^0对应的项,否则会引入1的常数偏差。
    • 计算阶乘时要注意数值边界,当展开项数较多时,高次幂和阶乘的数值会快速增长,需要和TensorFlow的张量运算精度做好匹配。

内容的提问来源于stack exchange,提问作者Naman Bansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.31 01:24:03