4. 蒙特卡洛模拟:随机抽样原理、正态分布与均匀分布的应用、模拟次数与置信度

公差分析做到一定深度,你会发现一个尴尬的事实:

极值法太保守,方和根法又太理想。真实的光学系统装调出来,误差分布从来不是简单的加减法。这时候,蒙特卡洛模拟就该上场了。

说白了,它就是用计算机模拟“虚拟装调”。你想想看,如果我们能模拟一万次装调,看看最终性能的分布情况,是不是比拍脑袋给个公差范围靠谱得多?

4.1 随机抽样的底层逻辑

蒙特卡洛的核心就一句话:用大量随机样本逼近真实分布。

我刚开始接触这方法时,总觉得它有点“笨”——不就是瞎蒙吗?后来才明白,这种“笨办法”在复杂系统里反而是最聪明的。

具体到光谱仪公差分析,流程是这样的:

  1. 定义输入参数:每个光学元件的偏心、倾斜、厚度、曲率半径等。
  2. 设定概率分布:每个参数服从什么分布?正态?均匀?
  3. 随机抽样:从分布中抽取一组随机数,代表一次“虚拟装调”。
  4. 计算性能:把这组参数代入光学设计软件,算出像质、光谱分辨率等。
  5. 重复N次:通常几千到几万次。
  6. 统计分析:看性能指标的直方图,算良率。

关键认知:蒙特卡洛不告诉你“最坏情况”,它告诉你“最可能的情况”以及“坏到哪种程度的概率有多大”。

4.2 正态分布 vs 均匀分布——什么时候用哪个?

这是新手最容易搞混的地方。我见过不少工程师,不管三七二十一,所有公差全给正态分布。结果模拟出来的良率虚高,实际装调时被打脸。

正态分布(高斯分布):

  • 适用于大量独立随机因素叠加的误差,比如机械加工误差。
  • 特点:中间多,两头少。±1σ内占68.3%,±3σ内占99.7%。
  • 我个人的习惯:透镜曲率半径、厚度、空气间隔,只要是大批量CNC加工,优先用正态。

均匀分布:

  • 适用于有明确上下限,且区间内概率相等的情况。
  • 典型场景:镜片偏心(靠工装定位)、胶合透镜的胶层厚度、手动调整的螺钉位置。
  • 为什么?因为这些误差往往由“一次定位”决定,而不是大量随机因素叠加。
分布类型 适用场景 数学表达 我的经验
正态分布 曲率半径、厚度、折射率 N(μ, σ²) 加工批次稳定时首选
均匀分布 偏心、倾斜、手动调整量 U(a, b) 工装定位类误差必用
截断正态 有物理极限的正态误差 N(μ, σ²) 截断 避免抽到离谱值

⚠️ 我曾经踩过的坑:有一次做一款便携式光谱仪,镜片偏心我用了正态分布,模拟良率85%。结果试产时良率只有60%。后来发现,偏心是由工装夹具的定位销决定的——每次装夹位置固定,误差是均匀分布。改成均匀分布后,模拟良率降到65%,和实际吻合了。

所以,分布类型选错了,模拟就是自欺欺人。

4.3 模拟次数与置信度——到底要跑多少次?

这个问题,几乎每次培训都有人问。我的回答是:看你要多高的置信度。

蒙特卡洛的误差与模拟次数的平方根成反比:

误差 ∝ 1 / √N

也就是说:

  • 跑100次,误差约10%
  • 跑10000次,误差约1%
  • 跑1000000次,误差约0.1%

但光学系统仿真一次可能几秒甚至几分钟,跑一百万次不现实。所以需要权衡。

我一般遵循这个经验法则:

目的 推荐次数 置信度
初步探索 500 ~ 1000 ±5%
公差分配优化 2000 ~ 5000 ±2%
最终验证 10000 ~ 50000 ±1%
高可靠性要求 100000+ ±0.3%

💡 小技巧:先跑500次看看分布形状。如果性能指标已经呈现明显的正态分布,且良率远高于或远低于目标值,那2000次就够了。如果良率刚好卡在边界(比如目标90%,模拟出来88%~92%),那就加码到10000次以上。

4.4 蒙特卡洛模拟流程图

下面这张图,是我每次做公差分析时脑子里都会过的流程。你可以把它当成一个检查清单:

蒙特卡洛公差模拟流程图 1. 定义公差输入参数 2. 设定概率分布(正态/均匀) 3. 随机抽样(N组参数) 4. 光学仿真计算性能指标 5. 是否达到预设模拟次数? 否,继续抽样 6. 统计分析 & 良率评估 关键参数 • 模拟次数 N • 置信区间 • 分布类型选择

4.5 实战中的几个坑

嗯,这里我要多说几句。蒙特卡洛看起来简单,但实际用起来,坑不少。

坑一:参数相关性被忽略

光谱仪里,镜片的偏心X和偏心Y往往是相关的,倾斜和偏心也可能耦合。但很多工程师直接当成独立参数抽样。结果模拟出来的分布比实际窄,良率虚高。

我的建议:如果两个参数强相关(比如同一个镜片的X/Y偏心),用联合分布或者协方差矩阵来抽样。

坑二:抽样次数不够,结论不可靠

我曾经见过一个报告,只跑了200次就说良率99%。我一看,性能指标刚好卡在规格线外一点点,200次里只出现了一次不合格。这能说明问题吗?显然不能。

记住:良率越接近100%,需要的模拟次数就越多。想验证99.7%的良率,至少需要跑10000次以上。

坑三:分布边界处理不当

正态分布理论上可以取到无穷大,但实际公差不可能。比如镜片厚度,±0.1mm的公差,正态分布可能会抽到+0.3mm的离谱值。

解决办法:用截断正态分布,或者把超出边界的值重新抽样。

核心总结:蒙特卡洛模拟不是“跑个脚本就完事”的工具。分布类型选对、次数够用、相关性处理好,它才能真实反映你的光谱仪装调后的表现。否则,就是 garbage in, garbage out。