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

为何任意初始值反复取余弦函数最终都会得到同一高精度数值?

为啥反复取余弦最终都会收敛到同一个值?

嘿,这个观察真的超敏锐!你碰到的其实是数学里不动点迭代的经典案例,咱们来把这个现象掰碎了说:

核心原因:余弦函数的不动点

你最终得到的那个稳定数值,其实是方程 cos(x) = x 的唯一实数解——数学上管这个叫函数的不动点。意思就是当x等于这个值时,对它取余弦的结果还是它自己,所以迭代到这一步后数值就再也不会变了。

为啥不管初始值都能收敛?

这要归功于巴拿赫不动点定理(也叫压缩映射原理):

  • 余弦函数在整个实数域上是个「压缩映射」——简单说,对于任意两个实数a和b,|cos(a) - cos(b)| ≤ |a - b|,而且除了少数特殊点外,这个不等式是严格小于的。
  • 这种特性意味着,每一次迭代都会让当前的数值更靠近那个不动点,不管你从整数、小数甚至0开始,经过足够多次迭代后,都会被「拉」到这个唯一的不动点上。

关于32位小数的精度

你提到的高精度稳定值,是因为计算器(或其背后的计算引擎)使用了高精度的浮点运算。当迭代到一定次数后,数值的变化量已经小于当前精度下能表示的最小单位了,所以就会稳定在这个32位精度的不动点上。

小验证代码

如果你想自己试试,用Python跑这段代码(随便换初始值都可以):

import math

x = 100  # 换成0、-5.6、3.14都没问题
for _ in range(100):
    x = math.cos(x)
print(x)

最终会输出约 0.7390851332151607,迭代次数越多,精度就越高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:32:48