4、XY多项式基础:二元多项式的一般形式与截断阶次选择
好,咱们进入第四讲。前面聊了自由曲面怎么从球面一步步演变过来,现在该碰一碰最核心的数学工具了——XY多项式。
说实话,我刚入行那会儿,看到一长串多项式就头疼。总觉得这东西是数学家搞出来的,跟工程没啥关系。后来做第一个自由曲面照明项目,被导师按着头把每一项的系数调了一遍,才真正明白:XY多项式就是自由曲面的“基因编码”。你选哪些项、截断到几阶,直接决定了曲面长什么样、能不能加工。
4.1 二元多项式的一般形式
先看最通用的写法。一个二元多项式,说白了就是x和y两个变量的幂次组合,再配上系数:
Z(x, y) = Σ C_{ij} · x^i · y^j
这里i和j都是非负整数,C_{ij}就是我们要优化的系数。i+j的值决定了这一项属于“几阶”。
举个例子:
- 0阶项:C_{00} —— 常数项,代表曲面的基准高度
- 1阶项:C_{10}·x + C_{01}·y —— 倾斜项,控制曲面在x和y方向的斜率
- 2阶项:C_{20}·x² + C_{11}·xy + C_{02}·y² —— 二次曲面,球面、柱面、双曲面都藏在这里
- 3阶及以上:高阶像差校正项,自由曲面的灵魂所在
关键认知:每一项的物理意义都很明确。C_{20}和C_{02}决定两个方向的曲率,C_{11}控制像散,高阶项则对应各种像差。不是瞎选的。
我习惯把多项式写成展开形式,这样调试时心里有数:
Z(x,y) = C00
+ C10·x + C01·y
+ C20·x² + C11·xy + C02·y²
+ C30·x³ + C21·x²y + C12·xy² + C03·y³
+ C40·x⁴ + C31·x³y + C22·x²y² + C13·xy³ + C04·y⁴
+ ...
看到规律了吗?每一阶的项数 = 阶数 + 1。所以N阶完整多项式,总项数是:
总项数 = (N+1)(N+2)/2
比如4阶多项式,总项数 = 5×6/2 = 15项。这个公式你记一下,后面选阶次时经常要用。
4.2 截断阶次的选择策略
问题来了:到底取到几阶合适?
我见过不少新手,一上来就取到10阶、12阶,觉得项越多越灵活。结果呢?优化出来的曲面像心电图一样剧烈抖动,加工出来全是废品。
为什么会这样? 因为高阶项对局部变化太敏感了。你想想看,x⁸在|x|>1时增长极快,稍微调一点系数,边缘就翘上天了。
我个人总结了一套选阶原则,分享给你:
| 应用场景 | 推荐阶次 | 典型项数 | 说明 |
|---|---|---|---|
| 简单照明(均匀光斑) | 4~6阶 | 15~28 | 够用,加工友好 |
| 成像系统(像差校正) | 6~8阶 | 28~45 | 平衡性能与复杂度 |
| 高端投影/光刻 | 8~10阶 | 45~66 | 需要精细控制 |
| 非对称自由曲面 | 6~8阶 | 28~45 | 注意奇偶项搭配 |
我的经验:从4阶开始试,逐步往上加。如果4阶就能满足性能,别贪心。每加一阶,优化时间翻倍,加工风险也翻倍。
4.3 奇偶项与对称性
这里有个坑,我踩过好几次。
如果你的系统是旋转对称的(比如传统球面透镜),那只需要偶次项:x²、y²、x⁴、y⁴、x²y²……奇次项(x、y、x³、y³)会破坏对称性。
但自由曲面往往就是靠打破对称性来校正像差的。所以:
- 旋转对称系统:只保留偶次项,i+j为偶数
- 双面对称系统:保留所有偶次项 + 部分奇次项(如x²y、xy²)
- 完全非对称:所有项都可以用,但要小心控制
我曾经在一个投影系统里,为了追求极致性能,把奇次项全开了。结果曲面在x方向出现奇怪的“波浪”,怎么调都调不平。后来发现是C_{30}和C_{12}互相耦合,产生了非物理的振荡。从那以后,我养成了一个习惯:先关掉所有奇次项,优化一轮,再按需逐个打开。
4.4 归一化与数值稳定性
还有一个容易被忽略的问题:数值稳定性。
当你的曲面口径是100mm时,x⁴项的值是100⁴ = 1e8。而C_{40}系数可能只有1e-8。两个极端数值相乘,在计算机里很容易丢精度。
我的做法是:对坐标做归一化。
u = x / R
v = y / R
其中R是曲面的半口径。这样u和v都在[-1, 1]之间,所有项的值都在可控范围内。系数C_{ij}的量级也差不多,优化器跑起来舒服多了。
归一化后的多项式形式不变,只是把x、y换成u、v:
Z(u, v) = Σ C_{ij} · u^i · v^j
嗯,这里要注意:归一化后,系数的物理意义变了。C_{20}不再直接代表曲率,而是归一化后的曲率系数。最终计算实际矢高时,要记得乘回来。
4.5 知识结构图
下面这张图帮你理清本章的核心逻辑:
4.6 实战建议
最后,给你几条实在的建议:
- 从4阶起步。不管什么系统,先用4阶跑一轮,看看性能瓶颈在哪。
- 逐阶增加。每次只加一阶,对比性能提升。如果提升不到5%,就别加了。
- 监控曲面梯度。高阶项多了,曲面梯度会剧烈变化。梯度超过加工极限(通常0.1~0.3 rad),立刻砍项。
- 归一化是必须的。不归一化,优化器跑出来的系数可能差几个数量级,数值稳定性堪忧。
- 奇次项慎用。除非系统明确需要非对称性,否则先关掉。
我个人的工作流:先写一个脚本,自动生成从4阶到10阶的多项式模板。优化时一键切换,对比结果。这样既快又不会漏掉最优解。
好了,XY多项式的基础就聊到这。记住:多项式是工具,不是目的。选对阶次、控好系数,才能做出真正可用的自由曲面。