第二部分:算子理论与全息系统

第5章:拆解模糊的机器——算子理论与特征值

—— 视光学中的线性算子、黑塞矩阵与主子午线分析

摘要

本章旨在深入探讨视光学临床实践背后的数学物理机制,特别是将人眼视觉系统重构为一个数学算子(Operator)的理论框架。通过引入泛函分析与线性代数的核心概念,本报告将详细解析波前像差(Wavefront Aberration)如何通过黑塞矩阵(Hessian Matrix)转化为临床屈光处方。分析重点在于揭示交叉圆柱镜(Jackson Cross Cylinder, JCC)检查的本质是寻找光学算子的特征向量(Eigenvectors),而球柱镜度数则是该算子的特征值(Eigenvalues)。本章还将论证在处理高阶像差与不规则散光时,采用直角坐标系下的笛卡尔构造法(Cartesian Construction)相较于传统极坐标法的计算优势,并提供基于 Wolfram 语言的算法实现路径,以实现从波前数据到精确临床处方的自动推导。


1. 引言:从静态地形到动态算子

在视光学的传统研究范式中,角膜与晶状体常被视为静态的几何实体。前序章节通过微积分确立了光程极值原理,并利用 Zernike 多项式构建了光学表面的三维形貌。然而,临床诊疗的核心不仅在于解剖结构的静态描述,更在于理解光学系统如何对输入信号进行变换。如果将客观世界的清晰光场定义为输入函数 x(u,v)x(u,v),将视网膜上的成像光场定义为输出函数 y(u,v)y(u,v),那么人眼光学系统即充当了一个复杂的变换算子 TT,使得 y=T[x]y = T[x]

这种“算子视角”将视光学从单纯的几何测量提升至泛函分析的高度。在这个框架下,临床验光师在综合验光仪上进行的每一次操作,本质上都是在探测该算子的线性响应特性。特别是对于复性近视散光(Compound Myopic Astigmatism)等非球面对称系统,单一的标量参数(如等效球镜)已无法完整描述系统的光学行为。必须引入矩阵论(Matrix Theory)与特征值分析(Eigenvalue Analysis),才能在数学上精确拆解图像模糊的各向异性(Anisotropy)来源1

本章将构建一个严谨的数学模型,论证黑塞矩阵作为描述波前局部曲率的核心算子,其特征系统分解直接对应于临床上的散光轴位与度数。这一理论不仅解释了 JCC 检查的物理机制,也为波前像差引导的个性化矫正提供了算法基础。


2. 临床表象与数学实质:散光的矢量迷宫

2.1 临床场景:复性散光的各向异性困境

在临床验光实践中,复性近视散光患者常描述视物变形具有方向性,例如“点光源被拉伸为倾斜的椭圆”。这种主诉直观地反映了光学系统的非旋转对称性。在使用交叉圆柱镜(JCC)精调散光轴位时,患者常表现出对微小轴位变化的辨识困难,尤其是在弥散圆(Circle of Least Confusion)附近。

从数学角度审视,这一困境源于 Zernike 多项式系数的标量局限性。虽然 Z22Z_2^2(主轴散光)和 Z22Z_2^{-2}(斜轴散光)提供了像差的幅度信息,但它们是静态的正交基底系数,并未直接揭示光学系统的“主方向”。当存在高阶像差(如彗差 Z31Z_3^{-1})耦合时,图像的拖尾方向与模糊程度不再是简单的线性叠加,而是涉及复杂的卷积运算1

临床所需的不仅仅是像差系数的罗列,而是一种能够从混沌的波前曲面中提取“主骨架”的解析工具。这要求我们寻找光学算子中的不变量(Invariants)与极值方向(Extremal Directions)。

2.2 图像拉伸实验:算子的线性变换本质

为了量化描述眼球算子对图像的破坏作用,可建立一个二维图像变换模型。假设眼球的光学传递特性可近似为一个 2×22 \times 2 的线性变换矩阵 MM。对于正视眼或纯球镜屈光不正,该矩阵为标量矩阵(Scalar Matrix),图像在所有方向上发生均匀的缩放或模糊(各向同性)。而在散光眼中,该矩阵演变为一个对称矩阵,导致图像在某一特定方向上受到最大程度的拉伸,而在与其垂直的方向上受到最小程度的拉伸1

通过 Wolfram 语言构建的“视觉算子模拟器”可以直观演示这一过程。该模拟器的数学核心是矩阵的相似对角化:

M=R(θ)SR(θ)1M = R(\theta) \cdot S \cdot R(\theta)^{-1}

其中:

  • R(θ)R(\theta) 为旋转矩阵,表征散光的轴位方向;
  • S=diag(s1,s2)S = \text{diag}(s_1, s_2) 为对角缩放矩阵,表征两个主子午线的屈光放大率。

在模拟实验中,观察者可以发现以下数学与临床的对应关系:

  1. 简并态(Degeneracy): 当 s1=s2s_1 = s_2 时,特征值相等 (λ1=λ2\lambda_1 = \lambda_2)。此时矩阵退化为缩放矩阵,图像均匀模糊,对应临床上的无散光状态。
  2. 特征分离: 当 s1s2s_1 \neq s_2 时,特征值出现差异,图像呈现椭圆化变形。特征值的差值 λ1λ2|\lambda_1 - \lambda_2| 直接对应于散光度数(Cylinder Power)。
  3. 正交不变性: 无论轴位 θ\theta 如何旋转,代表特征向量的两个主轴始终保持垂直。这一几何性质对应了视光学中的基本定律:规则散光的两个主子午线永远相差 90 度。这在数学上是由实对称矩阵(Real Symmetric Matrix)的谱定理(Spectral Theorem)所保证的——实对称矩阵的特征向量必然正交2

3. 数学翻译:黑塞矩阵与特征值分解

将上述定性描述转化为定量的处方计算,需要引入微分几何中描述曲面弯曲程度的核心工具——黑塞矩阵(Hessian Matrix)。

3.1 波前二阶导数与屈光力矩阵

在物理光学中,光线的传播方向由波前(Wavefront)的法线方向决定,而光线的聚散度(Vergence)——即屈光力——则由波前的局部曲率决定3。对于一个波前像差函数 W(x,y)W(x,y),其局部屈光力 PP 与波前的二阶空间导数成正比。

具体而言,波前在某一点 (x,y)(x,y) 处的曲率状态由黑塞矩阵 HH 完整描述4

H(x,y)=(2Wx22Wxy2Wyx2Wy2) H(x,y) = \begin{pmatrix} \frac{\partial^2 W}{\partial x^2} & \frac{\partial^2 W}{\partial x \partial y} \\ \frac{\partial^2 W}{\partial y \partial x} & \frac{\partial^2 W}{\partial y^2} \end{pmatrix}

该矩阵中的每一个元素都具有明确的临床光学含义:

  • 主对角线元素 2Wx2\frac{\partial^2 W}{\partial x^2}2Wy2\frac{\partial^2 W}{\partial y^2} 分别代表波前在水平和垂直方向上的屈光力分量。
  • 副对角线元素 2Wxy\frac{\partial^2 W}{\partial x \partial y} 代表波前的扭曲(Torsion)或剪切分量,这对应于斜轴散光。由于波前函数通常是连续且光滑的,根据克莱罗定理(Clairaut's Theorem),混合偏导数相等,即 2Wxy=2Wyx\frac{\partial^2 W}{\partial x \partial y} = \frac{\partial^2 W}{\partial y \partial x},确立了 HH 为实对称矩阵。

3.2 从矩阵元素到临床度数矢量

为了将数学矩阵与验光处方联系起来,需引入 Thibos 等人提出的度数矢量(Power Vectors)记号法5。黑塞矩阵 HH 可分解为三个独立的光学成分:

  1. 等效球镜(Spherical Equivalent, M): 对应矩阵迹(Trace)的一半,表征平均曲率(Mean Curvature)。

    M=12tr(H)=12(2Wx2+2Wy2) M = \frac{1}{2} \text{tr}(H) = \frac{1}{2} \left( \frac{\partial^2 W}{\partial x^2} + \frac{\partial^2 W}{\partial y^2} \right)

  2. 直散光矢量(Jackson Cross Cylinder at 0/90, J0J_0): 表征水平与垂直曲率的差异。

    J0=12(2Wx22Wy2) J_0 = \frac{1}{2} \left( \frac{\partial^2 W}{\partial x^2} - \frac{\partial^2 W}{\partial y^2} \right)

  3. 斜散光矢量(Jackson Cross Cylinder at 45/135, J45J_{45}): 表征斜向扭曲力。

    J45=2WxyJ_{45} = \frac{\partial^2 W}{\partial x \partial y}

通过这种分解,任何复杂的屈光状态都可以映射为三维度数空间中的一个点。而黑塞矩阵的行列式(Determinant)则对应于微分几何中的高斯曲率(Gaussian Curvature, KK),它描述了波前在该点的内蕴几何性质4。当行列式为正时,波前呈碗状(局部球形或椭球形);当行列式为负时,波前呈马鞍形(散光);当行列式为零时,波前为柱面或平面。

3.3 特征系统求解:寻找主子午线

临床验光的核心目标是找到矫正镜片的球柱度数和轴位。在数学上,这等价于对黑塞矩阵 HH 进行特征值分解(Eigendecomposition)。这一过程旨在寻找一个特定的旋转坐标系,使得在该坐标系下,矩阵的非对角元素(剪切分量)消失,矩阵对角化。

HH 求解特征系统 Eigensystem[H]\text{Eigensystem}[H],将得到:

  1. 特征值(Eigenvalues, λ1,λ2\lambda_1, \lambda_2): 它们代表了波前曲面在两个主方向上的极值曲率。

    • 临床上的球镜度数(Sphere)通常对应于较平坦的主子午线屈光力(即绝对值较小的特征值,或根据正负柱镜习惯选择)。
    • 临床上的散光度数(Cylinder)严格对应于两个特征值之差(λ1λ2\lambda_1 - \lambda_2)。这也解释了为何散光代表了光学系统的最大屈光力差异。
  2. 特征向量(Eigenvectors, v1,v2\mathbf{v}_1, \mathbf{v}_2): 它们指明了特征值所对应的空间方向。

    • 临床上的散光轴位(Axis)正是特征向量与参考轴(通常为水平轴)之间的夹角。

推论: 验光师在处方单上记录的 "Axis 180",并非人为规定的参数,而是通过物理测量手段(如检影或 JCC)确定的患者角膜黑塞矩阵的第一特征向量的方向。每一次验光,实际上都是在求解一个二阶张量的特征空间。


4. JCC 检查的物理机制:Sturm 氏光锥与正交微扰

为了进一步阐明特征向量如何在临床中被探测,必须深入分析 Sturm 氏光锥(Sturm's Conoid)的光学结构以及交叉圆柱镜(JCC)的工作原理。

4.1 Sturm 氏光锥的几何结构

当光束通过一个散光系统时,由于两个主子午线的屈光力不同,光束无法聚焦于一点,而是形成两个在空间上分离且互相垂直的焦线(Focal Lines)。前焦线与后焦线之间的区域称为 Sturm 氏区间。在两焦线的中点位置,光束横截面呈圆形,称为最小弥散圆(Circle of Least Confusion, CLC)6

CLC 的位置由等效球镜度数 MM 决定,而 Sturm 氏区间的长度由散光度数(特征值之差)决定。清晰视觉的前提是 CLC 落在视网膜上,且 Sturm 氏区间尽可能压缩为零。

4.2 JCC 的矩阵本质:迹为零的微扰算子

交叉圆柱镜(JCC)通常由 +0.25+0.25 D 和 0.25-0.25 D 的两个柱镜正交组合而成。在矩阵表示中,JCC 是一个无迹对称矩阵(Trace-free Symmetric Matrix):

MJCC=(±δ00δ)M_{JCC} = \begin{pmatrix} \pm \delta & 0 \\ 0 & \mp \delta \end{pmatrix}

由于其迹为零 (tr(MJCC)=0\text{tr}(M_{JCC}) = 0),JCC 在介入光学系统时,不会改变系统的平均屈光力(即不改变 CLC 的位置),而只改变像散分量6

4.3 轴位精调的数学原理:正交投影与特征对准

当验光师翻转 JCC 时,实际上是在向光学系统引入一个交替的正交微扰(Orthogonal Perturbation)。

  • 轴位检查: 验光师将 JCC 的手柄置于试片柱镜轴位上,此时 JCC 的两条主轴与试片轴位成 45 度角。这相当于在系统中引入了纯粹的 J45J_{45} 剪切分量。
  • 若试片轴位已与患者眼睛的特征向量完全对准,引入 J45J_{45} 会导致合成散光轴位向左或向右偏转等量角度,患者感知的模糊程度在翻转前后是对称的(一样清楚或一样模糊)。
  • 若试片轴位未对准,JCC 的介入会使合成矢量更接近或更远离真实的特征向量方向,导致翻转前后视力清晰度产生差异。
  • 正交性原理: JCC 检查之所以有效,完全依赖于特征向量的正交性。只有在 45 度方向(即 J45J_{45} 空间)进行微扰,才能将轴位误差从度数误差中解耦(Decouple)。如果散光轴位不是正交的,JCC 的翻转逻辑将彻底失效7

因此,JCC 检查不仅是一个临床程序,它是一个利用物理干涉手段逼近厄米特算子特征向量的迭代算法。


5. 算法实现:基于笛卡尔构造法的智能处方推导

在理解了理论基础后,我们将探讨如何利用计算机算法直接从波前像差数据计算临床处方。传统方法常涉及将 Zernike 系数转化为极坐标形式,这在原点 (r=0)(r=0) 处极易引入计算奇点(Singularity),且涉及大量的三角函数运算,计算效率较低。本报告提出一种基于笛卡尔坐标系(Cartesian Coordinates)的直接推导法,利用 Wolfram 语言的符号计算能力,通过黑塞矩阵的特征值分解实现稳健的处方计算1

5.1 Zernike 多项式的直角坐标代数形式

为了避免极坐标转换中的不稳定性,我们直接使用 Zernike 多项式的直角坐标形式构建光程差函数 W(x,y)W(x,y)。以二阶项为例8

  • 离焦(Defocus, Z20Z_2^0): 在极坐标下为 3(2ρ21)\sqrt{3}(2\rho^2 - 1),在直角坐标下转化为:

Z20(x,y)=3(2(x2+y2)1)Z_2^0(x,y) = \sqrt{3}(2(x^2 + y^2) - 1)

这对应于一个旋转抛物面。

  • 主轴像散(Astigmatism 0/90, Z22Z_2^2): 在极坐标下为 6ρ2cos(2θ)\sqrt{6}\rho^2 \cos(2\theta),在直角坐标下利用二倍角公式转化为:

Z22(x,y)=6(x2y2)Z_2^2(x,y) = \sqrt{6}(x^2 - y^2)

这对应于一个马鞍面。

  • 斜轴像散(Astigmatism 45/135, Z22Z_2^{-2}): 在极坐标下为 6ρ2sin(2θ)\sqrt{6}\rho^2 \sin(2\theta),在直角坐标下转化为:

Z22(x,y)=6(2xy)Z_2^{-2}(x,y) = \sqrt{6}(2xy)

这对应于旋转了 45 度的马鞍面。

5.2 屈光力计算的代码实现

利用 Wolfram 语言,可以构建一个无需查表、直接基于微积分推导的“智能验光”算法。

下面是一段代码:

(* 代码处方:基于笛卡尔构造法与黑塞矩阵的智能验光 *)

Module := Sqrt * (2 (x^2 + y^2) - 1);
 zAstigX[x_, y_] := Sqrt * (x^2 - y^2); 
 zAstigY[x_, y_] := Sqrt * (2 * x * y);         

 (* 2. 构建波前像差模型 *)
 (* 设定:瞳孔直径 6mm (半径3mm), 离焦量 c20=2.0微米, 像散量 c22=1.0微米, c2-2=0.5微米 *)
 pupilRadius = 3.0; (* mm *)
 
 (* 构建波前像差函数 W(x,y),单位:微米 *)
 (* 实际波前是各项 Zernike 模式的线性叠加 *)
 wCartesian[x_, y_] := 2.0 * zDefocus + 
                       1.0 * zAstigX + 
                       0.5 * zAstigY; 

 (* 3. 构建曲率算子 (Hessian 矩阵) *)
 (* 物理公式:屈光力 P ≈ - ∇²W *)
 (* 单位转换:W为微米(10^-6 m), x为毫米(10^-3 m) *)
 (* 二阶导数单位为 10^-6 / (10^-3)^2 = m^-1 = Diopter (屈光度) *)
 (* 需注意符号约定,波前滞后通常对应正度数 *)
 
 hxx = -D[wCartesian[x, y], {x, 2}];
 hxy = -D[wCartesian[x, y], x, y];
 hyy = -D[wCartesian[x, y], {y, 2}];

 (* 强制求值:在瞳孔中心 (0,0) 处获取具体的曲率张量 *)
 (* 此时将符号变量转化为具体的数值矩阵 *)
 hessianMatrix = {{hxx, hxy}, {hxy, hyy}} /. {x -> 0, y -> 0};

 (* 4. 求解特征系统 (Eigendecomposition) *)
 (* 核心步骤:寻找曲率最大和最小的主子午线方向 *)
 (* Eigensystem 返回 {{特征值列表}, {特征向量列表}} *)
 eigSys = Eigensystem[hessianMatrix];
 eigenvalues = eigSys[];  (* 提取特征值 -> 主子午线屈光力 *)
 eigenvectors = eigSys[]; (* 提取特征向量 -> 散光轴位 *)

 (* 5. 翻译成临床处方 (Sphere / Cylinder / Axis) *)
 power1 = eigenvalues[];
 power2 = eigenvalues[];

 (* 按照眼科通用的负柱镜形式 (Minus Cylinder Form) 计算 *)
 (* 规则:球镜取最正(或最不负)的屈光力,柱镜为两者之差(负值) *)
 
 {powerMax, powerMin} = If[power1 > power2, {power1, power2}, {power2, power1}];
 
 sphere = powerMax;
 cylinder = powerMin - powerMax; (* 结果必为负值 *)
 
 (* 确定轴位:对应 powerMin (最平坦子午线/负柱镜轴) 的特征向量方向 *)
 (* 注意:负柱镜的轴位位于屈光力最弱(最平坦)的子午线上 *)
 targetVector = If[power1 > power2, eigenvectors[], eigenvectors[]];
 vx = targetVector[];
 vy = targetVector[];
 
 (* 计算角度并转换为 0-180 度区间 *)
 axisAngle = ArcTan[vx, vy] * 180/Pi;
 finalAxis = If[axisAngle <= 0, axisAngle + 180, axisAngle];

 (* 6. 输出智能处方单 *)
 Print];
 Print["-------------------------------------------------"];
 Print["输入 Zernike 系数: C(2,0)=2.0, C(2,2)=1.0, C(2,-2)=0.5 (单位: μm)"];
 Print["-------------------------------------------------"];
 Print["中间计算 (曲率张量特征值):"];
 Print["强主子午线屈光力 K1: ", NumberForm[powerMin, {4, 2}], " D"];
 Print["弱主子午线屈光力 K2: ", NumberForm[powerMax, {4, 2}], " D"];
 Print["-------------------------------------------------"];
 Print];
 Print, " DS"];
 Print["柱镜 (Cyl): ", NumberForm[cylinder, {4, 2}], " DC"];
 Print["轴位 (Axis): ", NumberForm[finalAxis, {4, 1}], "°"];
 Print["-------------------------------------------------"];
]

5.3 代码逻辑深度解析

上述算法展示了现代波前像差技术的核心逻辑,其优势在于严密的数学推导而非经验近似:

  1. 笛卡尔建模的稳健性: 传统的 Zernike 计算常需将 r,θr, \theta 转换为 x,yx, y,过程中 tan1(y/x)\tan^{-1}(y/x)x=0x=0 处不仅无定义,而且在数值计算中极易引发不连续跳变。本算法直接定义 Z22(x2y2)Z_2^2 \propto (x^2 - y^2)Z222xyZ_2^{-2} \propto 2xy,利用多项式的代数性质,确保了光程差函数 W(x,y)W(x,y) 在全定义域(包括瞳孔中心)内的连续性和可微性9
  2. 黑塞矩阵的物理意义: 代码中 D[...,{x,2}]\text{D}[..., \{x, 2\}] 等操作实际上是在计算波前的拉普拉斯算子分量。在物理上,波前 WW 的二阶导数 2W\nabla^2 W 与光焦度 PP 之间存在严格的对应关系:P2Wn1P \approx -\frac{\nabla^2 W}{n-1}(对于空气到角膜的折射)。黑塞矩阵不仅仅是一个数学构造,它是光线聚散度的张量表达3
  3. 特征系统的自动解耦: 无论患者的散光轴位多么特殊(例如由 C2,2=1.0C_{2,2}=1.0C2,2=0.5C_{2,-2}=0.5 混合生成的非整数轴位),特征值分解算法都能自动找到曲面曲率的极值方向。它不需要查阅正切表,也不依赖于近似公式,而是直接解出几何结构的本征方向(Principal Directions)。这对于处理角膜地形图中的不规则散光尤为重要,因为在不规则表面,最大曲率方向与最小曲率方向可能并不严格垂直,而特征值分解能提供最佳的二阶近似2

6. 结论与展望

通过对算子理论、黑塞矩阵及特征值分解的深入剖析,本章揭示了隐藏在日常验光操作背后的数学物理图景。

核心结论:

  1. 眼睛即算子: 视觉系统不应被简单视为一系列透镜的组合,而应被理解为一个对光场进行线性变换的算子。每一项 Zernike 像差系数都是构建这一复杂变换矩阵的元素。
  2. 验光的本质是特征分析: 临床上对散光度数(Cylinder)和轴位(Axis)的测量,在数学上等价于求解黑塞矩阵的特征值与特征向量。JCC 检查是一种利用正交微扰物理地逼近特征向量的过程。
  3. 笛卡尔构造法的优势: 在波前像差引导的屈光手术和镜片设计中,采用直角坐标系下的黑塞矩阵分析法,能够有效避免极坐标系的计算奇点,提供更稳健、精确的处方数据。

下周预告:

既然我们已经掌握了利用算子理论分析“单个”患者像差(正向问题)的方法,那么当面对角膜极其不规则(如圆锥角膜)的病例,且特征值分布极度混乱时,我们该如何逆向求解出一个能够完美抵消这些复杂像差的镜片表面?这不再是简单的求解 2×22 \times 2 矩阵,而是涉及到泛函分析中复杂的积分方程求解。

下一章,我们将挑战第 6 章:积分方程与逆问题——学习如何像侦探还原现场一样,从视网膜上模糊的图像信号出发,逆向推导并重构出角膜表面的病灶形态,进而设计出完美的自由曲面矫正镜片。

引用的著作

第6章:神探夏洛克的放大镜——积分方程与逆问题

—— 为什么“倒着推”比“顺着推”难得多?

致 Dr. X 的一封信

您好,医生。

在您的诊室里,每一天都在上演着两场逻辑的博弈。第一场是清晰明了的“正向逻辑”:您给患者滴入托吡卡胺滴眼液(原因),二十分钟后患者的瞳孔散大并丧失调节力(结果)。这在医学和物理学上是确定无疑的,因果链条坚固如铁。然而,占据您大部分精力的却是第二场——“逆向逻辑”。当患者主诉“视力模糊”(结果)时,您必须在充满噪音的症状中,回溯推断出这究竟是角膜的像散、晶状体的硬化,还是视网膜的病变(原因)。

您或许未曾意识到,这种让您在裂隙灯下皱眉沉思的“逆向诊断”,在数学物理的深层结构中,对应着一类被称为“逆问题”(Inverse Problem)的艰深领域 10。在这一章,我们将离开光线顺流而下的舒适区,拿出神探夏洛克·福尔摩斯的放大镜,去挑战眼视光学的“圣杯”——渐进多焦点镜片(Progressive Addition Lens, PAL)的逆向设计。

我们会发现,设计一枚完美的渐进片,本质上是在求解一个病态的积分方程。在这个过程中,我们不仅要与光学的物理定律周旋,更要与数学上的“不稳定性”进行殊死搏斗。欢迎来到积分方程与变分法的世界,在这里,我们要学会如何从模糊的果,还原出精确的因。


1. 逆问题的哲学:神探夏洛克与哈达玛的诅咒

1.1 演绎与归纳的非对称性

柯南·道尔笔下的神探夏洛克·福尔摩斯曾有一句名言:“在解决了所有不可能之后,剩下的无论多么不可能,那一定是真相。” 11。这句看似简单的侦探格言,实则触及了逆问题的核心困境。在侦探小说中,作者预设了一个唯一的真相(凶手),但在现实的物理世界和临床实践中,从“结果”反推“原因”往往面临着多重解、无解或解不稳定的困境。

在眼视光学中,这种非对称性尤为残酷:

  • 正向问题(Forward Problem): 给定一个确定的镜片形状(原因),计算光线穿过它后的屈光力分布(结果)。这是一个微分过程。根据近轴光学近似,光度 PP 大致正比于镜片矢高 zz 的二阶导数(拉普拉斯算子 2z\nabla^2 z12。微分算子虽然会放大高频噪音,但其计算是局部的、确定的。只要您给我形状,我能毫厘不差地算出光度。
  • 逆问题(Inverse Problem): 给定一个理想的光度分布图(结果),求能产生该光度的镜片形状(原因)。这是一个积分过程。如果光度是形状的二阶导数,那么形状就是光度的二重积分。这就好比试图通过观察湖面边缘荡漾的涟漪,去推断几分钟前扔进湖心的石头的确切形状和落点 10

1.2 雅克·哈达玛的“适定性”判据

为了严格描述这种困境,法国数学家雅克·哈达玛(Jacques Hadamard)提出了著名的“适定性”(Well-posedness)判据 13。一个物理问题如果想被称为“适定”的,必须同时满足三条金律:

哈达玛判据 (Hadamard Criteria) 临床与光学设计的对应困境
1. 存在性 (Existence) <br>解必须存在。 然而,医生往往会开出物理上无法实现的处方。例如,要求镜片“全视野清晰且无像散”。根据Minkwitz定理,由于曲面的拓扑性质,这在几何上是不存在的。此时,逆问题无解。
2. 唯一性 (Uniqueness) <br>解必须是唯一的。 给定一个光度分布 P(x,y)P(x,y),可能有无数个曲面 z(x,y)z(x,y) 满足要求(例如,将曲面整体平移或倾斜,其曲率不变)。如果缺乏恰当的边界条件(如狄利克雷边界条件),计算机将无法确定唯一的加工数据。
3. 稳定性 (Stability) <br>解必须连续依赖于输入数据。 这是最致命的一点。输入数据(如角膜地形图或设计目标)中的微小噪音,不应导致输出结果(镜片形状)的剧烈震荡。如果违背此条,问题就是“病态的”(Ill-posed)。

在渐进片设计中,我们要从平滑的光度图反求曲面,这本质上是在求解泊松方程(Poisson Equation)2z=P\nabla^2 z = P 的逆问题。不幸的是,这类第一类弗雷德霍姆积分方程(Fredholm Integral Equation of the First Kind)通常是极度病态的 14。输入数据中哪怕 0.01D0.01\text{D} 的微小波动,经过逆算子的放大,都可能导致计算出的镜片表面出现几毫米的剧烈起伏,变成无法加工的废品。


2. 物理基础:从赫姆霍兹方程到近轴近似

在深入逆向求解算法之前,我们必须先夯实正向物理模型的基础。我们要搞清楚:为什么我们敢说光度近似等于形状的拉普拉斯算子?这个简单的公式背后,隐藏着光波传播的复杂物理机制。

2.1 光的波动方程:赫姆霍兹方程

光是一种电磁波,其传播遵循麦克斯韦方程组导出的波动方程。对于单色光,其电场分量 EE 满足标量赫姆霍兹方程(Helmholtz Equation)15

2E+k2E=0\nabla^2 E + k^2 E = 0

其中 k=2πn/λk = 2\pi n / \lambda 是波数,nn 是折射率。这是一个椭圆型偏微分方程,描述了光在空间中传播的精确行为,包括衍射、干涉等所有波动效应。

然而,直接求解赫姆霍兹方程计算量巨大,且对于眼镜设计来说往往是“杀鸡用牛刀”。我们需要一个更简化的模型来处理日常的透镜设计。

2.2 从波动到几何:近轴近似的推导

当光束主要沿 zz 轴传播,且与光轴的夹角 θ\theta 很小(即近轴区域,Paraxial Region)时,我们可以对赫姆霍兹方程进行降维打击。

假设电场解的形式为 E(x,y,z)=ψ(x,y,z)eikzE(x,y,z) = \psi(x,y,z) e^{-ikz},其中 ψ\psi 是一个随 zz 缓慢变化的包络函数。将其代入赫姆霍兹方程,利用 sinθθ\sin \theta \approx \thetacosθ1θ2/2\cos \theta \approx 1 - \theta^2/2 的小角度近似 16,并忽略 ψ\psizz 的二阶导数项 2ψz2\frac{\partial^2 \psi}{\partial z^2}(慢变包络近似),我们得到了近轴波动方程(Paraxial Wave Equation)17

2ψ2ikψz=0\nabla_\perp^2 \psi - 2ik \frac{\partial \psi}{\partial z} = 0

其中 2=2x2+2y2\nabla_\perp^2 = \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2} 是横向拉普拉斯算子。

2.3 矢高与光度的拉普拉斯关系

在几何光学极限下(波长 λ0\lambda \to 0),波前的相位 ϕ(x,y)\phi(x,y) 与波前的高度 W(x,y)W(x,y) 关系为 ϕ=kW\phi = k W。对于一个薄透镜,光线通过透镜后的波前变化直接由透镜的厚度变化决定。

透镜的屈光力(Optical Power)PP 定义为焦距的倒数,物理上对应于波前会聚的能力,即波前的曲率。在数学上,曲面的平均曲率 HH 在近轴近似下(即表面梯度 z1|\nabla z| \ll 1)由拉普拉斯算子给出 12

H122z(x,y)=12(2zx2+2zy2) H \approx \frac{1}{2} \nabla^2 z(x,y) = \frac{1}{2} \left( \frac{\partial^2 z}{\partial x^2} + \frac{\partial^2 z}{\partial y^2} \right)

根据透镜制造者公式的微分形式,透镜的光度 P(x,y)P(x,y) 与其表面矢高 z(x,y)z(x,y) 的二阶导数成正比 12

P(x,y)(n1)2z(x,y)P(x,y) \approx (n-1) \nabla^2 z(x,y)

这里 nn 是镜片材料的折射率。

这个公式 P(n1)ΔzP \approx (n-1) \Delta z 是本章所有计算的基石。它告诉我们:光度是形状的二阶导数。因此,逆向设计(已知 PPzz)就是求解泊松方程 Δz=P/(n1)\Delta z = P/(n-1)


3. 变分法:寻找混乱中的最优解

既然逆问题是病态的,直接求解 z=Δ1Pz = \Delta^{-1} P 会导致数值爆炸,我们需要引入一种更高级的数学工具——变分法(Calculus of Variations)。

我们不再试图寻找一个“精确满足”方程的解(因为可能根本不存在),而是寻找一个“能量最低”的解。我们将设计目标转化为一个能量泛函(Energy Functional),通过最小化这个泛函来获得镜片表面。

3.1 构造能量泛函:妥协的艺术

在渐进片设计中,我们有两个相互冲突的目标:

  1. 光度匹配(Fidelity): 镜片的光度分布 H(z)H(z) 必须尽可能接近医生开具的处方 Ptarget(x,y)P_{\text{target}}(x,y)
  2. 像散最小化(Smoothness): 根据 Minkwitz 定理,渐进通道两侧必然产生像散。我们希望像散(即主曲率差 D(z)=κ1κ2D(z) = \kappa_1 - \kappa_2)尽可能小,或者分布尽可能平滑,不要出现剧烈的棱镜跳跃 18

我们可以构造如下的加权能量泛函 J[z]J[z] 19

J[z]=Ω{α(x,y)[H(z)Ptarget(x,y)]2光度误差惩罚项+β(x,y)2像散惩罚项}dxdy J[z] = \iint_{\Omega} \left\{ \underbrace{\alpha(x,y) [H(z) - P_{\text{target}}(x,y)]^2}_{\text{光度误差惩罚项}} + \underbrace{\beta(x,y)^2}_{\text{像散惩罚项}} \right\} dx dy

这里的 α(x,y)\alpha(x,y)β(x,y)\beta(x,y) 是空间权重函数,它们是设计师手中的指挥棒:

  • 在远用区和近用区: 我们极其看重光度准确性,因此设置 αβ\alpha \gg \beta。这强制求解器优先满足光度 PtargetP_{\text{target}},哪怕这会产生一些像散。
  • 在过渡区(走廊)和周边区: 我们知道光度不可能完全准确(受物理定律限制),且像散会干扰视觉。因此我们设置 β\beta 较大,强制要求像散 D(z)D(z) 平滑且尽量小,哪怕牺牲一点光度精度。

这种“软硬兼施”的设计理念,正是现代“硬设计”(视野宽但周边像散大)与“软设计”(视野窄但周边像散柔和)渐进片的数学根源 20

3.2 欧拉-拉格朗日方程的推导

为了求出使泛函 J[z]J[z] 最小的曲面 z(x,y)z(x,y),我们必须求泛函的变分 δJ=0\delta J = 0。根据变分原理,这等价于求解相应的欧拉-拉格朗日方程(Euler-Lagrange Equation) 21

由于光度 H(z)H(z) 和像散 D(z)D(z) 均包含曲面 zz 的二阶导数(曲率),能量泛函 J[z]J[z] 实际上包含了 zz 的二阶导数的平方。因此,对其求变分导出的欧拉-拉格朗日方程将是一个四阶非线性偏微分方程 21

2x2(Fzxx)+2xy(Fzxy)+2y2(Fzyy)=0 \frac{\partial^2}{\partial x^2} \left( \frac{\partial F}{\partial z_{xx}} \right) + \frac{\partial^2}{\partial x \partial y} \left( \frac{\partial F}{\partial z_{xy}} \right) + \frac{\partial^2}{\partial y^2} \left( \frac{\partial F}{\partial z_{yy}} \right) = 0

这是一个极其复杂的双调和方程(Biharmonic-type Equation)的变体。在数学上,它比泊松方程更难解,但也更强大。它具有内在的平滑性质——四阶导数算子倾向于抑制高频震荡。这就是为什么通过变分法设计的镜片表面总是光滑如丝,而不会像简单的拼接法那样出现棱线。


4. 稳定之锚:吉洪诺夫正则化与边界条件

即使有了变分法,如果输入数据包含噪音,或者权重函数设置不当,解依然可能不稳定。这时,我们需要引入数学界的“稳定剂”——正则化。

4.1 吉洪诺夫正则化 (Tikhonov Regularization)

安德烈·吉洪诺夫(Andrey Tikhonov)提出的正则化方法是解决病态逆问题的标准范式 22。其核心思想是在目标函数中显式地加入一个“平滑约束项”:

Jreg(z)=J[z]+λLz2 J_{reg}(z) = J[z] + \lambda || L z ||^2

其中:

  • J[z]J[z] 是前文提到的数据保真项。
  • Lz2|| L z ||^2 是正则化项,通常取曲面的梯度模平方 z2||\nabla z||^2(一阶正则化,惩罚陡峭度)或拉普拉斯模平方 2z2||\nabla^2 z||^2(二阶正则化,惩罚曲率变化)。
  • λ\lambda 是正则化参数。

从贝叶斯推断的角度看,正则化项相当于引入了先验概率(Prior) 23。我们先验地认为:“好的镜片表面应该是平滑的”。参数 λ\lambda 控制了我们对这一先验信念的坚持程度。

  • 如果 λ\lambda 太小,我们过度信任充满噪音的数据,导致过拟合(Overfitting),镜片表面会出现波纹。
  • 如果 λ\lambda 太大,我们过度追求平滑而忽略了处方要求,导致欠拟合(Underfitting),度数做不足。
  • 选择最佳 λ\lambda 的方法通常使用 L-曲线法(L-curve method),寻找误差与平滑度之间的最佳折衷点 24

4.2 边界条件:狄利克雷 vs 诺伊曼

在求解偏微分方程时,边界条件(Boundary Conditions, BC)决定了解的唯一性,也是设计中必须物理固定的“锚点” 25

边界条件类型 数学表达 物理含义与临床应用
狄利克雷 (Dirichlet) z(x,y)=Cz(x,y) = C (在边界上) 固定位移。 强制镜片边缘的厚度或高度为定值。例如,在设计隐形眼镜时,边缘翘起量(Edge Lift)必须精确固定,以保证泪液交换。这消除了积分常数带来的垂直平移不确定性。
诺伊曼 (Neumann) zn=C\frac{\partial z}{\partial n} = C (在边界上) 固定斜率。 规定镜片边缘的切线角度。例如,在拼接不同光学区域时,为了保证光线不发生跳跃,必须让边界处的导数连续。Neumann条件控制了棱镜度。
罗宾 (Robin) az+bzn=Ca z + b \frac{\partial z}{\partial n} = C 混合弹簧约束。 模拟一种弹性支撑。在自由曲面设计中较少直接使用,但在数控加工路径规划中有时会用到。

在下面的代码演示中,我们将使用狄利克雷边界条件,强制镜片边缘高度为 00,这相当于把镜片“钉”在了加工盘上,防止其在计算过程中发生刚体位移 26


5. 代码处方:逆向设计渐进片 (PAL)

现在,我们将上述复杂的理论浓缩为一段 Wolfram 代码。我们将使用有限元方法(FEM)求解泊松方程,这在 Wolfram 语言中通过 NDSolveValue\text{NDSolveValue} 实现极其高效。

5.1 代码逻辑解析

  1. 定义目标(The Prescription): 我们首先构造一个理想的光度函数 targetPower\text{targetPower}。这里使用 Sigmoid\text{Sigmoid} 函数来模拟从上(远用)到下(近用)的光度渐变,并用高斯函数 Exp[x2]\text{Exp}[-x^2] 限制通道宽度。这直接对应了临床上的“通道长度”和“通道宽度”参数。
  2. 构建方程(The PDE): 我们使用 Inactive[Laplacian]\text{Inactive}[\text{Laplacian}] 算子。在有限元分析中,使用非活动形式(Inactive form)可以保持算子的散度结构,有助于处理非连续系数和复杂边界,数值上更稳定 19。方程本质是 Δz=P/(n1)\Delta z = -P / (n-1)
  3. 施加约束(The Constraints): 使用 DirichletCondition\text{DirichletCondition} 将镜片四周边缘的高度锁定为 00。这保证了算子 AA 是可逆的,满足哈达玛的唯一性条件 27
  4. 逆向求解与验证: 求解得到曲面 zz 后,我们必须对其进行二阶微分(正向过程),计算重构出的光度,并与目标光度相减,绘制误差图。

5.2 Wolfram 代码实现

请在您的 Notebook\text{Notebook} 中运行以下代码。这是一个完整的逆向设计闭环。

下面是一段代码:

(* 代码处方 06:基于泊松方程与有限元的 PAL 逆向设计 *)
(* 目的:从目标光度分布反求自由曲面矢高 z(x,y) *)

Module; (* 40mm x 40mm 镜片区域 *)

 (* 1. 定义目标光度场 P(x,y) *)
 (* 使用 LogisticSigmoid 模拟渐进通道:上方0D,下方+2.00D *)
 (* Exp[-0.02 x^2] 项用于限制通道宽度,模拟真实的物理衰减 *)
 targetPower[x_, y_] := Module; 
   (base + add * corridor) * Exp[-0.05 * x^2];

 (* 2. 建立偏微分方程模型 (PDE) *)
 (* 核心方程:Laplacian(z) = - Power / (n-1) *)
 (* 注意:凸透镜光度为正,曲面二阶导数为负,故有负号 *)
 (* 使用 Inactive[Laplacian] 激活有限元方法的弱形式求解 *)
 
 (* 3. 求解逆问题 *)
 lensSurface = NDSolveValue[
   {
     Inactive[Laplacian][u[x, y], {x, y}] == - targetPower[x, y] / (nIndex - 1),
     (* 狄利克雷边界条件:将镜片边缘高度固定为 0,消除刚体位移不确定性 *)
     DirichletCondition[u[x, y] == 0, True]
   },
   u,
   {x, y} \[Element] domain,
   Method -> "FiniteElement" (* 显式调用有限元求解器 *)
 ];

 (* 4. 正向验证:从计算出的曲面反推光度 *)
 (* 必须使用 Derivative 对数值插值函数求导,不能用 D *)
 (* Mean Curvature approx (z_xx + z_yy) *)
 curvatureX = Derivative;
 curvatureY = Derivative;
 
 recoveredPower[x_, y_] := -(nIndex - 1) * (curvatureX[x, y] + curvatureY[x, y]);

 (* 5. 结果可视化报告 *)
 Column,
   
   (* 对比图表 *)
   Row,
       Plot3D[targetPower[x, y], {x, -15, 15}, {y, -15, 15},
         PlotRange -> All, ColorFunction -> "TemperatureMap", 
         Mesh -> None, ImageSize -> 300, Exclusions -> None,
         AxesLabel -> {"x", "y", "Power"}]
     }, Alignment -> Center],
     
     (* 求解出的曲面图 *)
     Column,
       Plot3D, {x, -15, 15}, {y, -15, 15},
         PlotRange -> All, ColorFunction -> "BlueGreenYellow", 
         Mesh -> 10, ImageSize -> 300, Exclusions -> None,
         BoxRatios -> {1, 1, 0.4}, AxesLabel -> {"x", "y", "Sag"}]
     }, Alignment -> Center]
   }],

   (* 误差分析 *)
   Column,
     Plot3D[
       targetPower[x, y] - recoveredPower[x, y],
       {x, -18, 18}, {y, -18, 18},
       PlotRange -> All, ColorFunction -> "SunsetColors", 
       Mesh -> None, ImageSize -> 400, Exclusions -> None,
       PlotLabel -> "边缘误差源于边界条件约束 (Boundary Effect)"
     ]
   }, Alignment -> Center]
 }, Alignment -> Center]

5.3 结果解读与临床洞察

运行上述代码,您将看到三幅图。请特别关注第三幅“重构误差”图。

现象: 在镜片中心区域(也是患者视线通过的主要区域),误差几乎为零,是一片平坦的颜色。但在镜片的边缘,误差突然剧烈升高,甚至形成像围墙一样的突起。

数学解释: 这是边界条件与内部方程冲突的直接体现。我们在内部要求曲面弯曲以产生光度(Δz0\Delta z \neq 0),但同时强行在边缘要求曲面平直(z=0z=0)。这种几何上的矛盾(Conflict)无法在内部解决,只能被“挤压”到边界处释放。

临床启示: 这解释了为什么所有的渐进片在边缘都有巨大的像散和畸变区。这不仅仅是设计水平的问题,这是拓扑学和微分几何的内蕴限制。只要我们需要一个边缘薄(美观)且中心度数高(功能)的镜片,边缘的像差就是我们必须支付的“数学税”。


6. 结论:在不确定性中寻找最优

通过本章的探索,我们揭示了眼视光设计背后的深层数学结构。

  1. 世界是单行道吗? 正向问题(预测)是确定的,但逆向问题(诊断与设计)充满了不确定性。从视网膜的模糊图像反推病因,或者从理想光度反推镜片形状,本质上都在对抗熵增,对抗信息的丢失。
  2. 平滑是生存之道: 吉洪诺夫正则化告诉我们,在面对噪音和病态问题时,**平滑性(Smoothness)**不仅仅是美学要求,更是求得稳定解的数学必要条件。为了得到可加工的镜片,我们必须牺牲一点点光度精度(数据保真度),换取曲面的光顺(正则化项)。这与医生在临床决策中,在“精准治疗”与“患者耐受度”之间寻找平衡,何其相似。
  3. 完美的代价: 欧拉-拉格朗日方程和 Minkwitz 定理共同确立了渐进片设计的边界。完美无像散的变焦镜片只存在于高维空间或科幻小说中。在三维欧氏空间里,优秀的设计师不是消除像散,而是像太极高手一样,将像散“推”到患者看不见或不介意的角落。

下周预告:

我们已经掌握了处理静态形状的利器(积分方程与变分法)。但是,如果系统是非线性的呢?如果我们要设计的不是一个固定的形状,而是一个能根据环境自我调整的动态系统(如人眼的调节机制,或接触镜在泪液上的配适平衡)?

下周,我们将进入第7章:非线性算子与不动点。我们将学习巴拿赫不动点定理(Banach Fixed Point Theorem),看看如何设计一个“迭代算子”,让混乱的初始猜测在无数次循环后,自动收敛到那个唯一的、神圣的“不动点”。


引用的著作

第7章:在风暴眼中寻找宁静——非线性算子与不动点

—— 当光线不再走直线,我们如何设计那个“完美的圆”?

致 Dr. X 的一封信

您好,医生。

在上一章,我们像神探夏洛克一样,试图通过“积分方程”从模糊的视网膜图像反推角膜的形状。那是一个令人心惊胆战的过程,因为现实世界的噪音就像大雾,稍有不慎,逆向推导的结果就会剧烈震荡,导致我们设计出的镜片表面像破碎的玻璃一样不可用。这就是“逆问题”的不适定性(Ill-posedness)。

今天,我们要换一种思路。我们不再试图暴力破解那些复杂的方程,而是要学会“等待”答案自己浮现。我们将从光学的线性叠加原理(Linear Superposition)——即“1+1=21+1=2”的舒适区——跨越到**非线性光学(Nonlinear Optics)**的深水区。在这里,镜片的形状、泪液的流体力学以及角膜的弹性形变相互耦合,形成了一个复杂的动态系统。

想象一下您在诊室里为圆锥角膜患者验配 RGP(硬性透气性接触镜)的场景:

  1. 您凭经验拿了一片基弧(Base Curve, BC)7.50mm7.50\text{mm} 的试戴片。
  2. 荧光素染色一看,中央完全接触(Touch),这是“太平了”。
  3. 于是您换了一片 7.30mm7.30\text{mm} 的。
  4. 这次发现中央积存了大量泪液,气泡很难排出,这是“太陡了”。
  5. 您再次调整,选择 7.40mm7.40\text{mm}……

直到某一刻,镜片下的泪液层厚度均匀,既不压迫也不松动,荧光素呈现出完美的“牛眼”图案。您长舒一口气:“就是它了。”

在这个看似枯燥的试错过程中,您其实正在人肉执行数学史上最优雅、最深刻的算法之一——不动点迭代(Fixed Point Iteration)28。您的每一次调整,都是将系统状态映射到下一个状态的算子作用。

在前几章,光线似乎总是听话的,镜片度数也是线性的(叠加两个透镜 = 度数相加)。但在 RGP 和接触镜光学的微观世界里,世界是高度非线性的:

  • 矢高(Sag)与曲率半径(R)的关系包含平方根,不再是简单的比例 29
  • 泪液透镜(Tear Lens)的威力取决于镜片与角膜的微米级间隙,以及泪液那微妙的折射率 30
  • 动态反馈:镜片改变形状,泪液层随之改变,进而改变整个光学系统的总屈光力。

欢迎进入第7章。今天,我们不解方程,我们“培养”方程。我们将利用泛函分析中的巴拿赫不动点定理(Banach Fixed Point Theorem),设计一个能够自我修正的数学算子。当我们在代码中运行它时,原本混乱的参数将像被磁铁吸引一样,自动收敛到那个唯一的、完美的平衡点——哪怕您的初始猜测错得离谱。

1. 临床挂钩:为什么“K值法”会失效?

场景: 高散光或边缘性角膜变性(Pellucid Marginal Degeneration)的 RGP 验配。

患者档案:

  • 角膜地形图: 呈现极其不规则的“领结”或“蟹钳”形,周边曲率变化极快。
  • 临床痛点: 传统的“K值验配法”((Flat K + Steep K)/2)完全失效。公式算出的基弧戴在患者眼睛上,要么滑落,要么吸死。
  • 现状: 您只能依赖试戴片箱(Fitting Set),一片一片地试,不仅效率低下,而且反复操作会让患者角膜上皮受损。

1.1 线性直觉的陷阱

为什么简单的公式(线性近似)算不准?这涉及到了光学的几何本质。

在低阶光学(Paraxial Optics)中,我们习惯使用薄透镜公式和简单的球面近似。我们假设角膜是一个球面,且光线离光轴很近。在这种假设下,矢高(Sagitta, zz)与半径(RR)之间存在一个美妙的近似线性关系:

zy22Rz \approx \frac{y^2}{2R}

这导致了我们熟悉的“SAM FAP法则”(Steeper Add Minus, Flatter Add Plus):每当基弧变陡(RR 减小),泪液透镜的正度数增加,我们需要在镜片上加负度数来补偿 30。通常的经验法则是:基弧改变 0.05mm0.05\text{mm} \approx 度数改变 0.25D0.25\text{D} 31

然而,对于一个非球面(Aspheric)甚至自由曲面的镜片,其矢高 zz 与半径 RR 的真实关系是由一个严格的非线性方程控制的。对于标准圆锥曲线表面,矢高公式为 29

z(y)=cy21+1(1+k)c2y2z(y) = \frac{c y^2}{1 + \sqrt{1 - (1+k)c^2 y^2}}

其中 c=1/Rc = 1/R 是曲率,kk 是圆锥系数(Conic Constant, k=e2k = -e^229

请注意分母中的那个根号 1(1+k)c2y2\sqrt{1 - (1+k)c^2 y^2}

  • 泰勒级数(Taylor Series)的启示: 如果我们对这个根号进行泰勒展开 32,我们会发现:

z(y)=y22R+(1+k)y48R3+(1+k)2y616R5+z(y) = \frac{y^2}{2R} + \frac{(1+k)y^4}{8R^3} + \frac{(1+k)^2 y^6}{16R^5} + \dots

传统的“K值法”仅仅使用了第一项(y22R\frac{y^2}{2R})。

  • 非线性世界: 当角膜极其陡峭(如圆锥角膜,RR 很小)或我们需要精确计算大直径镜片(yy 很大)下的微米级泪液层时,后面那些高阶项(y4,y6y^4, y^6)的影响力会呈指数级上升 33

此时,线性近似带来的误差不再是 0.01D0.01\text{D},而是可能达到 1.00D1.00\text{D} 甚至更多。您以为调整 0.1mm0.1\text{mm} 只改变 0.50D0.50\text{D},实际上可能改变了泪液层体积的一倍,导致完全不同的流体力学效应和光学矫正效果。这也是为什么对于圆锥角膜,简单的回归模型(Regression Models)虽然能提供初始参考 34,但最终的精密适配必须依赖于完整的非线性计算。

我们需要一种算法,它不是简单地套公式,而是能够模拟您大脑中“观察 -> 评估 -> 调整”的循环,并且能处理那个讨厌的根号。

2. 数学翻译:巴拿赫的魔法与压缩映射

为了解决这个非线性难题,我们引入泛函分析中的重型武器:巴拿赫不动点定理(Banach Fixed Point Theorem)。这个定理不仅是数学分析的基石,也是我们设计自动验配算法的理论保证。

2.1 算子与不动点

什么是算子 (Operator)?

在前几章,我们处理的是函数 y=f(x)y = f(x),输入一个数,输出一个数。

在泛函分析中,算子 TT 是一个更高阶的机器。它输入一个状态(比如整个镜片的形状函数或参数向量),输出一个新的状态(比如根据泪液厚度分布计算出的修正后的镜片参数)。

不动点方程:

我们的设计目标不是解 f(x)=0f(x)=0,而是寻找 xx,使得:

T(x)=xT(x) = x

这意味着:我们将镜片参数 xx 代入物理模型 TT(计算泪液、受力、光路),算出来的“建议修改值”竟然和“当前值”一模一样。这时,系统达到了稳态,我们找到了那个完美的镜片。

2.2 巴拿赫不动点定理 (Banach Fixed Point Theorem)

这个定理源自波兰数学家斯特凡·巴拿赫(Stefan Banach)在 1922 年的博士论文,它也被称为压缩映射定理(Contraction Mapping Theorem) 35

它告诉我们,只要满足两个条件,无论世界多么复杂,您一定能找到那个唯一的完美镜片,而且不管从哪里开始试(初始猜测 x0x_0),只要不停地重复 xn+1=T(xn)x_{n+1} = T(x_n),最终都会到达那里 36

  1. 完备度量空间 (Complete Metric Space): 我们的参数空间必须是完备的。通俗地说,就是空间里没有“漏洞”,所有的柯西序列(Cauchy Sequence)都能收敛到空间内的一个点。对于我们实数域上的镜片参数(如基弧、直径),这显然满足。
  2. 压缩映射 (Contraction Mapping): 我们的算子 TT 必须是一个“压缩机”。

数学表达为:存在一个常数 0k<10 \le k < 1(称为 Lipschitz 常数),使得对于任意两个尝试值 x,yx, y

d(T(x),T(y))kd(x,y)d(T(x), T(y)) \le k \cdot d(x, y)

通俗翻译: 经过算子处理后,两个结果之间的距离,必须小于它们输入时的距离。也就是每一次迭代,误差范围都在缩小。

如果 k1k \ge 1,迭代可能会发散(越调越乱)或者在两个错误的值之间死循环震荡。如果 k<1k < 1,收敛是必然的。且收敛速度由 kk 决定:kk 越小,收敛越快 37

3. 交互展示:收敛的蛛网与混沌的边缘

为了直观理解“迭代”是如何找到答案的,以及为什么有时候您的验配会“越调越乱”,我们来看一个经典的数学可视化:蛛网图 (Cobweb Plot) 38

在这个实验中,我们的目标是找到一个完美的基弧 RR(原因),使得它产生的 Sag\text{Sag} 刚好等于目标值(结果)。

  • 蓝线: 代表我们的调整策略算子 G(x)G(x)(例如:“如果太陡了,就变平一点”)。
  • 黄线: 代表 y=xy=x。这是所有不动点居住的地方(即:输入=输出,无需再改)。
  • 红线: 是您的“思维路径”。

Wolfram 交互实验:

下面是一段代码:

(* 交互演示:不动点迭代 —— 自动寻找完美的基弧与蛛网图 *)
(* 这是一个经典的“蛛网图”演示,模拟 RGP 验配中的试错收敛过程 *)

Manipulate := Cos[x - 1] * contraction + offset;
 
 (* 2. 计算理论上的不动点 (解方程 x = f(x)) *)
 (* FindRoot 内部其实也在做类似牛顿法的迭代 *)
 rEq = FindRoot[x == f[x], {x, initialGuess}];
 fixedPoint = x /. rEq;
 
 (* 计算不动点处的导数,判断稳定性 *)
 derivativeAtFixedPoint = Abs[f'[fixedPoint]];
 stabilityStatus = Which[
   derivativeAtFixedPoint < 1, "稳定 (收敛)",
   derivativeAtFixedPoint == 1, "中性 (临界)",
   derivativeAtFixedPoint > 1, "不稳定 (发散)"
 ];
 
 (* 3. 生成迭代路径 (NestList) *)
 (* 从 initialGuess 开始,执行 50 次迭代 *)
 steps = NestList[f, initialGuess, 50];
 
 (* 4. 构建蛛网图坐标 (Cobweb Plot) *)
 (* 蛛网图的画法逻辑:(x0, 0) -> (x0, x1) -> (x1, x1) -> (x1, x2) -> (x2, x2)... *)
 (* 这代表:根据 x0 算出 x1,然后将 x1 映射到 y=x 线上作为新的输入 *)
 visualizationPath = Flatten], steps[[i + 1]]}, {steps[[i + 1]], steps[[i + 1]]}}, 
    {i, 1, Length[steps] - 1}];
 
 (* 5. 绘图 *)
 Column, x}, {x, 0, 4},
       PlotStyle -> {{Thick, Blue}, {Dashed, Orange}},
       PlotLegends -> {"调整算子 G(R)", "平衡线 y=x"},
       Filling -> {1 -> {2}}, FillingStyle -> Opacity],
      
      (* 画迭代路径 (蛛网) *)
      Graphics, Arrowheads[0.015],
        (* 起始点 *)
        Line[{{initialGuess, 0}, {initialGuess, f[initialGuess]}}],
        Arrow[visualizationPath]
      }],
      
      (* 标注不动点 *)
      Graphics, Darker[Green], Point[{fixedPoint, fixedPoint}],
        Text, Background -> White], 
         {fixedPoint, fixedPoint}, {-1.2, 1}]
      }],
      
      PlotRange -> {{0, 4}, {0, 3.5}}, ImageSize -> 500,
      AxesLabel -> {"当前的基弧 R_n (mm)", "下一次尝试的基弧 R_{n+1} (mm)"},
      PlotLabel -> Style,
      GridLines -> Automatic
     ],
     
     (* 状态面板 *)
     Framed}],
           Row, Red]]}],
           Row[{"迭代 10 次后的值: ", NumberForm[steps[], {4, 4}]}],
           Row[{"目标不动点: ", NumberForm[fixedPoint, {4, 4}]}]
       }], Background -> LightGray
     ]
 }],

(* 控制面板 *)
Style,
{{initialGuess, 0.5, "第一片试戴片 (Initial BC)"}, 0, 4, Appearance -> "Labeled"},
{{contraction, 0.6, "收敛算子强度 (k)"}, 0.1, 1.8, 0.05, Appearance -> "Labeled"},
{{offset, 0.8, "目标偏移量 (Target)"}, 0, 2, Appearance -> "Labeled"},

TrackedSymbols :> {initialGuess, contraction, offset}
]

医生的观察任务:

  1. 见证收敛(Convergence):

    • contraction\text{contraction}(即 Lipschitz 常数 kk)设为 0.60.6
    • 拖动 initialGuess\text{initialGuess}。观察红线。无论您一开始选的镜片多么离谱(很远),红线最终都会像螺旋楼梯一样,转着圈钻进那个绿点。
    • 临床含义: 这就是经验丰富的医生。虽然第一片试戴片可能不准,但您的每一次调整(“紧了就松点”)幅度适中,误差范围在不断缩小。这就是 k<1k < 1 的压缩映射。
  2. 目睹发散与混沌(Divergence & Chaos):

    • contraction\text{contraction} 拖到 1.21.2 或更高。
    • 现在的红线发生了什么?它不仅不靠近绿点,反而像离心机一样把红线甩向图表的边缘,或者在一个巨大的正方形路径上死循环。
    • 临床含义: 这就是“越调越乱”的新手时刻。您觉得紧了,大幅度调松,结果太松了;您又大幅度调紧,结果比最开始还紧。这种过调(Overshoot)是因为您的“调整算子”太激进了(导数绝对值 >1>1)。在不动点理论中,这意味着映射不再是压缩的,而是扩张的 39
  3. 不动点稳定性定理:

    • 只要在不动点附近的导数绝对值 f(x)<1|f'(x^*)| < 1,迭代就是稳定的。
    • 如果 f(x)>1|f'(x^*)| > 1,不动点就是“排斥”的(Repelling Fixed Point)。

4. 物理深度:泪液透镜的隐秘细节

在我们在代码中实现自动设计之前,必须解决一个困扰视光界已久的物理细节:泪液的折射率。如果不搞清楚这个,我们的数学模型再完美,算出的度数也会有系统性偏差。

4.1 1.336 还是 1.3375?

这是一个经典的陷阱。

  • 角膜曲率计标准 (Keratometer Standard): 绝大多数角膜地形图仪和曲率计使用标准化折射率 nk=1.3375n_{k} = 1.3375 来将测量的曲率半径(mm\text{mm})转换为屈光度(D\text{D})。这个数字是人为规定的,目的是修正角膜后表面的负光焦度,使得我们可以仅仅通过测量前表面来估算总角膜光力 40
  • 物理现实 (Physical Reality): 人类泪液的真实折射率更接近 ntears1.336n_{\text{tears}} \approx 1.336(在 589nm589\text{nm} 波长下)41

在 RGP 验配计算中,如果我们直接使用 KK 读数(基于 1.33751.3375)去减去镜片基弧屈光力,而不还原回物理半径,就会引入微小的误差。虽然这通常只有 0.1D0.2D0.1\text{D} - 0.2\text{D},但在精密设计中,我们追求的是极致。

4.2 泪液透镜公式的推导

当 RGP 镜片戴在角膜上时,泪液填充了两者之间的空隙,形成了一个液体透镜(Liquid Lens / Tear Lens)。根据厚透镜公式 31,泪液透镜的光焦度 FTLF_{TL} 由其前后表面的曲率决定:

FTL=Ffront+FbacktnFfrontFbackF_{TL} = F_{\text{front}} + F_{\text{back}} - \frac{t}{n} F_{\text{front}} F_{\text{back}}

其中:

  • Ffront=ntearsnairRlens_backF_{\text{front}} = \frac{n_{\text{tears}} - n_{\text{air}}}{R_{\text{lens\_back}}} (泪液前表面,即镜片后表面形状)
  • Fback=ncorneantearsRcorneaF_{\text{back}} = \frac{n_{\text{cornea}} - n_{\text{tears}}}{R_{\text{cornea}}} (泪液后表面,即角膜前表面形状)

由于泪液层极薄(t20μmt \approx 20 \mu m),最后一项通常可以忽略,简化为薄透镜叠加:

FTL(ntears1)(1RBC1RCornea)F_{TL} \approx (n_{\text{tears}} - 1) \left( \frac{1}{R_{\text{BC}}} - \frac{1}{R_{\text{Cornea}}} \right)

这就解释了 SAM FAP 法则的物理根源:

  • 如果镜片基弧比角膜陡(RBC<RCorneaR_{\text{BC}} < R_{\text{Cornea}}),第一项大于第二项,FTLF_{TL} 为正值(凸透镜)。所以我们需要在镜片光度上加负(Add Minus, SAM)。
  • 如果镜片基弧比角膜平(RBC>RCorneaR_{\text{BC}} > R_{\text{Cornea}}),FTLF_{TL} 为负值(凹透镜)。所以我们需要在镜片光度上加正(Add Plus, FAP)。

5. 代码处方:自动设计泪液层匹配镜片(智能比例法)

现在,让我们把前面的非线性几何、不动点理论和物理光学结合起来,编写一个工业级的 RGP 设计算法。

挑战: 已知角膜在特定光学区(如 6mm6\text{mm})的 Sag\text{Sag} 高度,反求基弧 RR

方法: 构造一个满足巴拿赫定理的压缩算子。相比于容易发散的牛顿法(需要求导),我们将使用一种更稳健的比例迭代法(Ratio Method)28

算法逻辑:

  1. 物理规律告诉我们:RR 越大(越平),Sag\text{Sag} 越小。两者近似成反比。
  2. 构造更新算子:Rnew=Rold×SagcurrentSagtargetR_{\text{new}} = R_{\text{old}} \times \frac{\text{Sag}_{\text{current}}}{\text{Sag}_{\text{target}}}
  3. 如果当前 Sag\text{Sag} 大于目标,比值 >1>1,会导致 RR 增大(变平),从而使下一次的 Sag\text{Sag} 减小。这形成了一个负反馈循环,保证了收敛性。

请在您的 Notebook\text{Notebook} 中输入以下代码:

下面是一段代码:

(* 代码处方 07:利用 FixedPoint 逆向设计隐形眼镜基弧 (智能比例法) *)
(* 目标:对于给定的角膜 Sag 高度,反求 Base Curve,实现理想的泪液层厚度 *)
(* 包含:非线性 Sag 计算、泪液折射率修正、厚透镜效应考虑 *)

Module *)
lensSag := (r^2/R) / (1 + Sqrt);

(* 2. 模拟患者的角膜数据 (Target) *)
(* 假设患者角膜读数 K = 43.00 D *)
(* 注意:我们使用 1.3375 标准将 K 还原为物理半径,因为地形图仪是这么算的 *)
corneaRadius = (1.3375 - 1.0) / 43.00 * 1000; (* mm *)
k_cornea = -0.26; (* 假设角膜略呈椭圆 *)

(* 设定设计区域:我们关心 6mm 光学区边缘的匹配 *)
targetDiameter = 6.0; 
rZone = targetDiameter / 2;

(* 计算角膜在 6mm 处的真实物理矢高 *)
corneaSagValue = lensSag;

(* 3. 设定临床设计目标 *)
(* 理想的 RGP 适配要求中央有一层薄薄的泪液 *)
desiredTearFilm = 0.020; (* 目标泪液厚度 20微米 [4] *)
targetLensSag = corneaSagValue + desiredTearFilm; (* 镜片后表面必须达到的总深度 *)

(* 打印初始状态 *)
Print];
Print <> " mm"},
   {"角膜 Sag (3mm处)", NumberForm <> " mm"},
   {"目标泪液厚度", NumberForm <> " μm"},
   {"目标镜片 Sag", NumberForm <> " mm"}
  }, TableHeadings -> {None, {"参数", "数值"}}]];

(* 4. 构建智能迭代算子 (The Smart Operator) *)
(* 核心逻辑:利用 Sag 与 R 近似成反比的物理规律构造压缩映射 *)
(* 这种方法避免了导数计算,且保证 R 始终为正数,比牛顿法更适合光学参数反演 *)
stepOperatorRatio := Module];
  
  k_lens = -0.5; (* 假设设计镜片包含非球面度 -0.5 *)
  currentSag = lensSag; 
  
  (* 核心迭代式:利用比率进行修正 *)
  (* R_new = R_old * (Sag_current / Sag_target) *)
  (* 这构造了一个 Lipschitz 常数 < 1 的收缩映射 *)
  estimatedR = currentR * (currentSag / targetLensSag);
  
  (* 阻尼平滑 (Damping):取新旧值的加权平均,增加稳定性,防止震荡 [2] *)
  0.4 * currentR + 0.6 * estimatedR
];

(* 5. 执行不动点迭代 (FixedPointList) *)
(* 我们故意从一个很离谱的猜测值 R = 9.0mm (非常平) 开始 *)
(* FixedPointList 自动执行 x_n+1 = T(x_n) 直到收敛 *)
iterationHistory = FixedPointList < 10^-9 &) (* 精度要求:纳米级 *)
];

(* 6. 结果分析与泪液透镜计算 *)
finalR = Last[iterationHistory];
finalSag = lensSag;

(* 计算泪液透镜屈光力 (Liquid Lens Power) *)
(* 关键点:这里使用真实的泪液折射率 1.336 [5, 24] *)
n_tears = 1.336; 
n_air = 1.000;

(* 薄透镜近似公式 *)
tearLensPower = (n_tears - 1.0) / (finalR / 1000) - (n_tears - 1.0) / (corneaRadius / 1000);

Print]];
Print - 1},
   {"初始猜测", "9.0000 mm"},
   {"最终优化基弧 (BC)", NumberForm <> " mm"},
   {"最终验证 Sag", NumberForm <> " mm"},
   {"收敛误差", NumberForm, {2, 10}] <> " mm"}
  }, TableHeadings -> {None, {"项目", "结果"}}]];

Print];
Print["泪液透镜光度: ", NumberForm[tearLensPower, {4, 2}], " D"];
Print, {3, 2}]] <> " D", Red], 
  Style, {3, 2}]] <> " D", Blue]]];

(* 7. 可视化收敛轨迹 *)
ListLinePlot}, 
 PlotMarkers -> {Automatic, 10},
 FrameLabel -> {"迭代次数 (n)", "基弧 R (mm)"}, 
 PlotLabel -> Style,
 Epilog -> {
   Dashed, Red, Line, finalR}}],
   Text, {Length[iterationHistory]/2, finalR + 0.1}]
  }]

代码解读与临床意义:

代码模块 数学/物理原理 临床对应
lensSag\text{lensSag} 非球面方程 (Aspheric Equation) <br>包含平方根非线性项,泰勒级数高阶项显著。 描述角膜和镜片的真实几何形状,超越简单的“K值”近似。
stepOperatorRatio\text{stepOperatorRatio} 不动点算子 T(x)T(x) <br>构造了一个压缩映射 (Lipschitz k<1\text{Lipschitz } k < 1)。 模拟医生“太深了就调平,太浅了就调陡”的试戴逻辑,但以数学精度执行。
0.4current+0.4 * \text{current} + \dots 阻尼 (Damping) <br>减少算子的导数幅度,防止蛛网图中的螺旋发散。 医生的谨慎微调:“不要一次调太多,慢慢逼近”。
FixedPointList\text{FixedPointList} 巴拿赫迭代 <br>xn+1=T(xn)x_{n+1} = T(x_n),直至 d(xn,xn+1)0d(x_n, x_{n+1}) \to 0 试戴过程的自动化。计算机在一瞬间完成了几十次虚拟试戴。
tearLensPower\text{tearLensPower} 厚透镜/薄透镜光学 <br>使用物理折射率 n=1.336n=1.336 而非仪器标准 1.33751.3375 SAM FAP 法则的精确量化。揭示了即使是为了物理适配,也会引入额外的屈光度改变。

6. 临床总结与高级应用

6.1 为什么这比查表法更好?

传统的查表法或回归公式(如 Power=A+B×K+C×Refraction\text{Power} = A + B \times K + C \times \text{Refraction} 34)本质上是线性的统计模型。它们在常规病例中表现良好,但在以下情况会彻底失效:

  • 圆锥角膜 (Keratoconus): 角膜形态极不规则,非球面系数 kk 极度异常。
  • 大直径设计 (Scleral Lenses): 随着直径增大,Sag\text{Sag} 公式的非线性项(y4,y6y^4, y^6)变得主导,线性推算误差巨大。
  • 复杂泪液层设计: 当我们需要非均匀的泪液层(如中央 20μm20\mu\text{m},边缘 50μm50\mu\text{m})时,只有通过积分方程或不动点迭代才能反解出复杂的自由曲面。

6.2 Dr. X 的备忘录

📝 非线性光学时代的生存指南

  1. 不动点的哲学: 在处理复杂的非线性系统(如人眼)时,不要试图暴力解析求解 xx(那通常很难或无解)。建立一个好的反馈机制(算子)T(x)T(x),让 xx 自己去寻找归宿。这也是大脑学习看东西的方式——通过不断的“预测-误差-修正”循环。
  2. 收敛的艺术: 并不是所有的尝试都会成功。如果调整步子迈得太大(在蛛网图中斜率 >1>1),系统就会震荡发散。在临床上,这意味着:不要因为一片试戴片不合适就大幅度跳跃参数,**微调(Damping)**往往能更快找到终点。
  3. 精确的代价: 我们在代码中使用了真实的泪液折射率 1.3361.336 而非 1.33751.3375。这 0.00150.0015 的差别,在计算微米级泪液层光焦度时,是区分“普通验配”和“完美验配”的关键细节 41
  4. 从线性到非线性: 永远记住,您手中的“K值”只是角膜在中心 3mm3\text{mm} 的一个线性近似。对于不规则角膜,必须使用 Sag\text{Sag} 高度(深度)来思考,而不是曲率(弯曲度)。

下周预告:

既然我们已经掌握了形状(Zernike)、算子(矩阵)和迭代(不动点),我们已经具备了设计静态镜片的所有数学工具。

但是,真实的世界是充满不确定性的。

如果您的患者验光时配合度不好,导致数据有波动?如果工厂加工出来的镜片有 0.01mm0.01\text{mm} 的误差?如果患者每天眨眼导致镜片位置会有微小的随机抖动?我们的完美设计会不会因为这点误差就彻底失效?

下周,我们将进入第 8 章:巴拿赫空间与鲁棒设计(Robustness)——学习如何在充满噪音和误差的世界里,设计出“皮实”的镜片,让它容忍现实的不完美。

引用的著作


  1. simple part 2 ↩︎ ↩︎ ↩︎ ↩︎

  2. Tolerance and Nature of Residual Refraction in Symmetric Power Space as Principal Lens Powers and Meridians Change - NIH, https://pmc.ncbi.nlm.nih.gov/articles/PMC4244934/ ↩︎ ↩︎

  3. Derivation of the refraction equations for higher-order aberrations of local wavefronts at oblique incidence, https://opg.optica.org/vjbo/viewmedia.cfm?uri=josaa-27-2-218&seq=0 ↩︎ ↩︎

  4. Calculation of the geometrical point-spread function from wavefront aberrations - PubMed, https://pubmed.ncbi.nlm.nih.gov/31172533/ ↩︎ ↩︎

  5. Refractive error sensing from wavefront slopes | JOV - Journal of Vision, https://jov.arvojournals.org/article.aspx?articleid=2191822 ↩︎

  6. The Conoid of Sturm - StatPearls - NCBI Bookshelf, https://www.ncbi.nlm.nih.gov/books/NBK587355/ ↩︎ ↩︎

  7. Jackson Cross Cylinder - StatPearls - NCBI Bookshelf, https://www.ncbi.nlm.nih.gov/books/NBK587353/ ↩︎

  8. Zernike polynomials - Wikipedia, https://en.wikipedia.org/wiki/Zernike_polynomials ↩︎

  9. Calculation of the geometrical point‐spread function from wavefront aberrations | Request PDF - ResearchGate, https://www.researchgate.net/publication/333653153_Calculation_of_the_geometrical_point-spread_function_from_wavefront_aberrations ↩︎

  10. Inverse problem - Wikipedia, https://en.wikipedia.org/wiki/Inverse_problem ↩︎ ↩︎

  11. Sherlock Holmes on Deduction and Deductive Reasoning, https://sherlockholmesquotes.com/sherlock-holmes-on-deduction-and-deductive-reasoning/ ↩︎

  12. Laplace operator - Wikipedia, https://en.wikipedia.org/wiki/Laplace_operator ↩︎ ↩︎ ↩︎

  13. Some Mathematical Considerations in Dealing with the Inverse Problem. - DTIC, https://apps.dtic.mil/sti/tr/pdf/ADA092261.pdf ↩︎

  14. On ill-posedness concepts, stable solvability and saturation - TU Chemnitz, https://www.tu-chemnitz.de/mathematik/ip/fulltext/Hofmann_Plato.pdf ↩︎

  15. Helmholtz equation - Wikipedia, https://en.wikipedia.org/wiki/Helmholtz_equation ↩︎

  16. Section 4 Imaging and Paraxial Optics, https://wp.optics.arizona.edu/jgreivenkamp/wp-content/uploads/sites/11/2019/08/502-04-Imaging-and-Paraxial-Optics.pdf ↩︎

  17. 4.1 Introduction - SPIE Digital Library, https://www.spiedigitallibrary.org/samples/PM152.pdf ↩︎

  18. Do the progressive lenses really satisfy the Minkwitz theorem? - Horizons Optical, https://horizonsoptical.com/us/blog/minkwitz-theorem/ ↩︎

  19. A personalized design for progressive addition lenses - Optica Publishing Group, https://opg.optica.org/oe/abstract.cfm?uri=oe-25-23-28100 ↩︎ ↩︎

  20. Customized design and efficient machining of astigmatism-minimized progressive addition lens - Researching, https://www.researching.cn/articles/OJ62d1d4127cb3bf79 ↩︎

  21. Analysis of a variational approach to progressive lens design - Experts@Minnesota, https://experts.umn.edu/en/publications/analysis-of-a-variational-approach-to-progressive-lens-design ↩︎ ↩︎

  22. Regularization (mathematics) - Wikipedia, https://en.wikipedia.org/wiki/Regularization_(mathematics) ↩︎

  23. Distributed Tikhonov regularization for ill-posed inverse problems from a Bayesian perspective - arXiv, https://arxiv.org/html/2404.05956v1 ↩︎

  24. The L-curve and its use in the numerical treatment of inverse problems 1 Introduction - SINTEF, https://www.sintef.no/globalassets/project/evitameeting/2005/lcurve.pdf ↩︎

  25. Dirichlet and Neumann Boundary condition: physical example, https://physics.stackexchange.com/questions/53455/dirichlet-and-neumann-boundary-condition-physical-example ↩︎

  26. Understanding the Dirichlet Boundary Condition for Fluid Dynamics | System Analysis Blog, https://resources.system-analysis.cadence.com/blog/msa2022-understanding-the-dirichlet-boundary-condition-for-fluid-dynamics ↩︎

  27. Neumann boundary condition - Wikipedia, https://en.wikipedia.org/wiki/Neumann_boundary_condition ↩︎

  28. Fixed-point iteration - Wikipedia, https://en.wikipedia.org/wiki/Fixed-point_iteration ↩︎ ↩︎

  29. All About Aspheric Lenses | Edmund Optics, https://www.edmundoptics.com/knowledge-center/application-notes/optics/all-about-aspheric-lenses/ ↩︎ ↩︎ ↩︎

  30. RULES OF THUMB | Contact Lens Spectrum, https://www.clspectrum.com/issues/2024/october/rules-of-thumb/ ↩︎ ↩︎

  31. Chapter 18 basiC PrinCiPles oF ContaCt lens oPtiCs by marolize botha - Contamac, https://contamac.com/wp-content/uploads/2024/12/In-Contact_Chapter-18.pdf ↩︎ ↩︎

  32. Taylor series - Wikipedia, https://en.wikipedia.org/wiki/Taylor_series ↩︎

  33. Optical design with parametrically defined aspheric surfaces - Optica Publishing Group, https://opg.optica.org/abstract.cfm?uri=ao-39-28-5205 ↩︎

  34. Initial Power of Rigid Gas Permeable Contact Lenses in Patients with Keratoconus - PMC, https://pmc.ncbi.nlm.nih.gov/articles/PMC8772499/ ↩︎ ↩︎

  35. A Study of Banach Fixed Point Theorem and It's Applications - Scirp.org., https://www.scirp.org/journal/paperinformation?paperid=109749 ↩︎

  36. banach's fixed point theorem and applications, https://wiki.math.ntnu.no/_media/tma4145/2020h/banach.pdf ↩︎

  37. Chapter 3: The Contraction Mapping Theorem - UC Davis Mathematics, https://www.math.ucdavis.edu/~hunter/book/ch3.pdf ↩︎

  38. Fixed-point iteration | Numerical Analysis II Class Notes - Fiveable, https://fiveable.me/numerical-analysis-ii/unit-9/fixed-point-iteration/study-guide/sxzt5y54Nr3Uy0Ub ↩︎

  39. 4.2. Fixed-point iteration — Fundamentals of Numerical Computation - Toby Driscoll, https://tobydriscoll.net/fnc-julia/nonlineqn/fixed-point.html ↩︎

  40. What is the refractive index (n) of the cornea?, https://www.aao.org/Assets/468fe105-c007-4ec5-bcca-745d761caff4/637153836588370000/rs3u-pdf?inline=1 ↩︎

  41. Tear film measurement by optical reflectometry technique - PMC - NIH, https://pmc.ncbi.nlm.nih.gov/articles/PMC3915055/ ↩︎ ↩︎