蒙特卡罗辐射分析
理论:计数光线求辐射
概述
蒙特卡罗法用随机数吧?这样能得出准确答案吗?
发射足够多的光线就能得出。但误差只随光线数平方根减小,精度越高计算越重。作为交换,形状再复杂、性质随波长或方向变化、气体吸收散射光,都能用追踪光线这一相同步骤处理。我们用有精确解的两块圆盘之间的角系数和吸收层的透射率,确认蒙特卡罗法吻合到什么程度、随光线数如何变化。
角系数与统计误差
在表面1上均匀选点,方向按余弦分布选取以符合漫射辐射($R$为0~1均匀随机数)。打到表面2的比例就是角系数。命中与否服从二项分布,离散为 $\sqrt{F(1-F)/N}$。
吸收层
$s$ 为被吸收前的距离,由吸收系数κ的指数分布抽样。漫射光包含斜向光线,路径更长,所以比平行光更难透过。
从洛斯阿拉莫斯到热辐射
蒙特卡罗法是1940年代乌拉姆、冯·诺伊曼等人在美国洛斯阿拉莫斯为计算中子运动而提出的方法,名字取自以赌场闻名的摩纳哥地区。1960年代豪厄尔等人把它应用于热辐射,用于计算形状复杂的炉子和航天器的辐射。如今电影计算机图形学也用同样的光线追踪思路计算光照。
算例
例1:相对圆盘之间的角系数
半径1、间距1的两块同轴圆盘,精确值0.38197。每种光线数换随机种子各算10次。
| 光线数 | 平均 | 标准差 | 理论标准差 |
|---|---|---|---|
| 100 | 0.3710 | 0.0671 | 0.0486 |
| 1,000 | 0.3876 | 0.0122 | 0.0154 |
| 10,000 | 0.3829 | 0.0038 | 0.0049 |
| 100,000 | 0.3820 | 0.0012 | 0.0015 |
| 1,000,000 | 0.3819 | 0.0006 | 0.0005 |
例2:吸收层透射率
| 光学厚度 κL | 平行光 MC | exp(−κL) | 漫射光 MC | 2E₃(κL) |
|---|---|---|---|---|
| 0.1 | 0.9045 | 0.9048 | 0.8323 | 0.8326 |
| 1 | 0.3678 | 0.3679 | 0.2185 | 0.2194 |
| 3 | 0.0503 | 0.0498 | 0.0180 | 0.0179 |
各用20万条光线计算。
要100万条光线才能让小数点后第四位稳定,挺费劲的。
这正是蒙特卡罗法的弱点:误差减到十分之一,光线要增加100倍。但无论形状多复杂、表面多少,误差下降方式都不变。与表面数增加时角系数矩阵急剧变大的方法相比,问题越复杂越有利。实际中按所需精度(例如热流1%)确定光线数参考值,把数量加倍、四倍确认结果稳定。降低方差的技巧(重要性抽样、利用互易关系)能在同样光线数下提高精度。
分析要点
- 先用有精确解的简单形状确认代码。
- 光线数逐次加倍,确认离散按1/√N减小。
- 用互易关系A₁F₁₂ = A₂F₂₁和完整性ΣF = 1检查结果。
- 小表面或不易命中的表面误差大,要重点分配光线。
- 记录随机数质量和种子,保证结果可复现。
“小传感器温度结果不稳定”
某炉子辐射分析中,壁上小温度传感器的计算温度每次计算都相差几十K。传感器面积与整个炉子相比非常小,打到它的光线寥寥无几。改用向传感器多发射光线、相应减小权重的重要性抽样后,同样计算时间下离散缩小到几K。蒙特卡罗法需要确认关注的位置有足够的光线到达。
常见错误
错误与对策
| 错误 | 后果 | 对策 |
|---|---|---|
| 方向按均匀分布选取 | 不符合漫射辐射 | 用余弦分布 |
| 光线数太少 | 结果离散 | 按1/√N确定 |
| 光线到不了小表面 | 局部误差 | 重要性抽样 |
| 不检查互易关系 | 漏掉缺陷 | 用总和与互易检查 |
| 不固定随机种子 | 无法复现 | 记录种子 |
我想了解相关内容。
价值
详细
错误