2. 数学描述:面型的数学表达

面型怎么描述?说白了,就是用一个数学公式把镜片或反射镜的曲面形状给"写"出来。我刚开始做光学设计那会儿,总觉得给个曲率半径就够了,后来发现根本不是这么回事——尤其是自由曲面和阵列系统,没有精确的数学表达,加工和检测根本无从下手。

这一节,我们聊聊三种最常用的面型数学工具:Zernike多项式、XY多项式、径向基函数。每种都有它的脾气,选对了事半功倍。

2.1 面型数学表达的基本框架

先搭个骨架。任何光学面型,都可以写成:

z(x, y) = 基底曲面 + 偏差项

基底曲面通常是球面或二次曲面,偏差项就是我们要重点讨论的多项式展开。我习惯把偏差项看作"修形量"——在基底上叠加一个微小的形变,来校正像差或实现特殊功能。

面型类型 基底曲面 偏差项 典型应用
球面 球冠 无 传统透镜
非球面 二次曲面 旋转对称多项式 单透镜像差校正
自由曲面 平面/球面 Zernike/XY多项式 离轴系统、阵列
阵列面型 周期基底 径向基函数 微透镜阵列

核心要点:面型数学表达的关键在于"基底+偏差"的分解方式。基底决定了面型的大致形状,偏差项决定了局部细节。两者缺一不可。

2.2 Zernike多项式:光学界的"普通话"

Zernike多项式在光学领域有多普及?这么说吧,几乎所有干涉仪和光学设计软件都支持它。为什么?因为它每一项都对应一种经典的像差类型。

Zernike多项式的标准形式:

Z(ρ, θ) = Σ C_n^m · R_n^m(ρ) · cos(mθ) + S_n^m · R_n^m(ρ) · sin(mθ)

其中ρ是归一化径向坐标(0到1),θ是角度坐标。R_n^m是径向多项式,C_n^m和S_n^m是系数。

我整理了一个常用项对照表,方便你快速查阅:

项编号 表达式 像差名称 物理意义
Z1 1 平移 整体偏移
Z2 ρ·cosθ X倾斜 X方向倾斜
Z3 ρ·sinθ Y倾斜 Y方向倾斜
Z4 2ρ²-1 离焦 焦点偏移
Z5 ρ²·cos2θ 0°像散 水平/垂直方向曲率差
Z6 ρ²·sin2θ 45°像散 斜向曲率差
Z7 (3ρ³-2ρ)·cosθ X彗差 X方向彗形像差
Z8 (3ρ³-2ρ)·sinθ Y彗差 Y方向彗形像差
Z9 6ρ⁴-6ρ²+1 球差 球面像差

我的经验:在自由曲面设计中,我通常只用到Z4到Z9这六项。再高阶的项,加工精度往往跟不上,反而引入不必要的波纹。记住——不是项数越多越好,够用就行。

Zernike多项式最大的优点是正交性。在单位圆内,任意两项的内积为零。这意味着你可以独立调整每一项的系数,不会互相干扰。这在优化时特别方便——调离焦不影响像散,调彗差不影响球差。

但要注意一个坑:Zernike多项式只在单位圆内正交。如果你的面型不是圆形口径,或者口径内有遮挡,正交性就没了。我曾经在一个矩形口径的自由曲面项目里硬用Zernike,结果优化半天收敛不了,后来换成XY多项式才搞定。

2.3 XY多项式:自由曲面的"万能钥匙"

XY多项式,顾名思义,就是用x和y的幂次组合来描述面型:

z(x, y) = Σ A_ij · x^i · y^j

其中A_ij是系数,i和j是非负整数。通常我们只取到一定阶数,比如i+j ≤ 10。

XY多项式的优势很明显:

  • 任意口径——矩形、环形、异形都能用
  • 计算简单——就是多项式求值,没有三角函数
  • 梯度好算——求导直接得到法向量,对光线追迹很友好

但缺点也突出:各项之间不正交。你调一个系数,其他项对应的像差也会变。这导致优化时容易"牵一发而动全身"。

我个人的习惯是:

  1. 先用Zernike做初步优化,因为物理意义明确
  2. 转到XY多项式做精细调整,因为加工文件通常用XY格式
  3. 最后用干涉仪实测数据反算系数,做闭环验证

避坑指南:我曾经在一个项目中,直接用XY多项式拟合一个高次非球面,结果拟合残差很大。后来发现是项数选少了——对于陡峭的面型,需要包含足够高的幂次。建议先用Zernike估算面型复杂度,再决定XY多项式的阶数。

2.4 径向基函数:阵列面型的"利器"

径向基函数(RBF)跟前两种不太一样。它不依赖全局多项式,而是用一系列"基函数"的加权和来逼近面型:

z(x, y) = Σ w_k · φ(||(x, y) - (x_k, y_k)||)

其中φ是径向基函数(比如高斯函数、多二次函数),(x_k, y_k)是中心点,w_k是权重系数。

RBF特别适合阵列面型,原因有三:

  • 局部性——每个基函数只影响局部区域,不会像多项式那样全局振荡
  • 灵活性——中心点可以任意分布,适合非规则阵列
  • 插值精度高——在采样点处精确通过,适合拟合实测数据

常用的径向基函数有几种:

函数名称 表达式 φ(r) 特点 适用场景
高斯函数 exp(-ε²r²) 光滑、局部 微透镜阵列
多二次函数 √(r² + c²) 全局、光滑 自由曲面拟合
薄板样条 r²·ln(r) 最小曲率 变形面型
Wendland函数 紧支撑多项式 严格局部 大阵列、稀疏数据

关键参数:RBF的形状参数ε(高斯函数)或c(多二次函数)非常敏感。ε太大,基函数太尖,拟合结果振荡;ε太小,基函数太平,拟合精度不够。我一般用交叉验证法来选ε——把数据分成训练集和验证集,找使验证误差最小的ε值。

2.5 三种方法的对比与选择

说了这么多,到底怎么选?我画了一张对比图,帮你快速决策:

面型数学表达方法对比与选择流程 Zernike多项式 圆形口径·像差对应 XY多项式 任意口径·计算简单 径向基函数 局部拟合·阵列适用 口径形状? 圆形→Zernike 面型复杂度? 低阶→XY多项式 阵列/局部? 是→径向基函数 典型应用场景 干涉仪检测 → Zernike | 自由曲面设计 → XY多项式 | 微透镜阵列 → 径向基函数 我的选择策略 1. 圆形口径 + 像差分析 → Zernike(物理意义明确) 2. 矩形/异形口径 + 加工文件 → XY多项式(格式兼容) 3. 阵列/局部变形 + 实测数据 → 径向基函数(拟合精度高)

2.6 实战中的坑与经验

最后分享几个我在项目中踩过的坑:

坑一:Zernike项数选太多。有一次我为了追求拟合精度,用了37项Zernike,结果加工出来的面型全是高频波纹。后来发现,加工机床的带宽有限,高阶项根本做不出来。现在我的原则是:非球面用4-6项,自由曲面用8-12项,再多就是自欺欺人。

坑二:XY多项式的数值稳定性。当阶数超过10次时,x^i和y^j的值会变得非常大或非常小,导致系数数量级差异巨大。我的解决办法是:先把坐标归一化到[-1, 1]区间,再拟合系数。这样数值稳定性好得多。

坑三:径向基函数的中心点分布。如果中心点分布不均匀,拟合结果会在稀疏区域出现"鼓包"。我一般用Halton序列或泊松盘采样来生成中心点,保证分布均匀。