History of Zernike polynomials $Z_n^l$

back to table · edit · history · where entries came from · files

compare when who what
2026-09-15 23:24 zeta3 clarify Zernike formula, ranges, and program current reviewed
2026-09-15 23:02 zeta3 use parser-friendly radial variable t
2026-09-15 23:00 zeta3 use parser-friendly radial variable t
2026-09-15 23:00 zeta3 with Codex CLI, table-build@d Zernike polynomials: radial n <= 20 and Cartesian n <= 12, with monomial rows omitted
2026-09-15 22:51 zeta3 draft Zernike polynomial table

What changed between 2026-09-15 23:02 and 2026-09-15 23:24

from line 27 (7 lines) @@ -27,7 +27,7 @@
     the sine mode. The angle $\varphi$ is measured anticlockwise from the positive     $x$-axis.'-  comment-normalisation: The entries are unnormalised. The OSA/ANSI and Noll normalised-    modes multiply these polynomials by $\sqrt{n+1}$ when $l=0$ and by $\sqrt{2(n+1)}$-    when $l\ne0$ CITE{Wiki}.+  comment-normalisation: The entries are unnormalised, scaled so that $R_n^m(1)=1$.+    The OSA/ANSI and Noll normalised modes multiply these polynomials by $\sqrt{n+1}$+    when $l=0$ and by $\sqrt{2(n+1)}$ when $l\ne0$ CITE{Wiki}.   comment-omissions: 'The monomial rows are omitted: $R_n^n(t)=t^n$ for the radial     form, and the Cartesian rows $Z_0^0=1$, $Z_1^1=x$ and $Z_1^{-1}=y$. The non-monomial
from line 39 (6 lines) @@ -39,6 +39,6 @@
   comment-uses: Zernike polynomials are used for wavefront aberrations on circular     pupils, Zernike moments in image analysis and related expansions on the unit disk-    CITE{Wiki} CITE{MathWorld}. The classical aberration names for the first modes-    are included in the Cartesian entry comments.+    CITE{Wiki} CITE{MathWorld}. The non-monomial entries with $n\leq4$ carry the classical+    aberration name, in both forms; the table gives no aberration names for $n>4$. Formulas:   formula-angular: $Z_n^l(\rho,\varphi)=R_n^{|l|}(\rho)\cos(l\varphi)$ for $l\geq0$,
from line 48 (6 lines) @@ -48,6 +48,6 @@
     for $0\leq m\leq n$ and $n-m$ even CITE{Wiki}.   formula-cartesian: If $R_n^m(\rho)=\sum_s c_s\rho^{m+2s}$, then $Z_n^l(x,y)=\sum_s-    c_s(x^2+y^2)^s\operatorname{Re}(x+iy)^m$ for $l=m>0$, $Z_n^l(x,y)=\sum_s c_s(x^2+y^2)^s\operatorname{Im}(x+iy)^m$-    for $l=-m<0$, and $Z_n^0(x,y)=R_n^0(\sqrt{x^2+y^2})$.+    c_s(x^2+y^2)^s\operatorname{Re}\left[(x+iy)^m\right]$ for $l=m>0$, $Z_n^l(x,y)=\sum_s+    c_s(x^2+y^2)^s\operatorname{Im}\left[(x+iy)^m\right]$ for $l=-m<0$, and $Z_n^0(x,y)=R_n^0(\sqrt{x^2+y^2})$.   formula-jacobi: $R_n^m(\rho)=(-1)^{(n-m)/2}\rho^m P_{(n-m)/2}^{(m,0)}(1-2\rho^2)$,     where $P_k^{(\alpha,\beta)}$ is the HREF{Jacobi_polynomials}[Jacobi polynomial]
from line 71 (19 lines, 10 more than before) @@ -71,9 +71,19 @@
     code: "import numberdb.sage as numberdb\nfrom sage.arith.misc import binomial\n\       from sage.rings.integer_ring import ZZ\nfrom sage.rings.polynomial.polynomial_ring_constructor\-      \ import PolynomialRing\n\nR = PolynomialRing(ZZ, 't')\nt = R.gen()\n\ndef radial(n,\-      \ m):\n    return sum((-1)**k * ZZ(binomial(n - k, k)) *\n               ZZ(binomial(n\-      \ - 2*k, (n - m)//2 - k)) *\n               t**(n - 2*k)\n               for\-      \ k in range((n - m)//2 + 1))\n\nradial(22, 0)                       # the next\-      \ even radial row after this table"+      \ import PolynomialRing\n\nR = PolynomialRing(ZZ, 't')\nt = R.gen()\nXY = PolynomialRing(ZZ,\+      \ ('x', 'y'))\nx, y = XY.gens()\n\ndef radial_terms(n, m):\n    return [((-1)**k\+      \ * ZZ(binomial(n - k, k)) *\n             ZZ(binomial(n - 2*k, (n - m)//2 -\+      \ k)),\n             n - 2*k)\n            for k in range((n - m)//2 + 1)]\n\+      \ndef radial(n, m):\n    return sum(c * t**e for c, e in radial_terms(n, m))\n\+      \ndef real_part_power(m):\n    return sum((-1)**(j//2) * ZZ(binomial(m, j))\+      \ * x**(m - j) * y**j\n               for j in range(0, m + 1, 2))\n\ndef imag_part_power(m):\n\+      \    return sum((-1)**((j - 1)//2) * ZZ(binomial(m, j)) * x**(m - j) * y**j\n\+      \               for j in range(1, m + 1, 2))\n\ndef cartesian(n, l):\n    m\+      \ = abs(l)\n    if l > 0:\n        angular = real_part_power(m)\n    elif l\+      \ < 0:\n        angular = imag_part_power(m)\n    else:\n        angular = XY.one()\n\+      \    r2 = x**2 + y**2\n    return sum(c * r2**((e - m)//2) * angular for c,\+      \ e in radial_terms(n, m))\n\nradial(22, 0)                       # the next\+      \ even radial row after this table\ncartesian(13, 1)                    # the\+      \ next odd Cartesian row after this table" Similar tables: - table: HREF{Jacobi_polynomials}[Jacobi polynomials]
from line 94 (6 lines, 1 more than before) @@ -84,5 +94,6 @@
 - table: HREF{Zeros_of_Bessel_J_functions}[Zeros of Bessel functions of the first     kind]-  relation: the Hankel transform in CITE{formula-hankel} has $J_{n+1}$ in its numerator+  relation: the Hankel transform in CITE{formula-hankel} has zeros at the positive+    zeros of $J_{n+1}$ Links:   Wiki:
from line 130 (7 lines, 2 more than before) @@ -119,5 +130,7 @@
   complete: 'no'   complete-note: it holds every non-monomial radial polynomial with $n\leq20$ and-    every non-monomial Cartesian polynomial with $n\leq12$+    every non-monomial Cartesian polynomial with $n\leq12$, where the Cartesian rows+    stop sooner because they grow faster; $Z_{12}^0$ is 365 characters, while $R_{12}^0$+    is 65 characters   rigour details: Every entry is exact, a polynomial with integer coefficients. The     generator computes CITE{formula-radial-sum} over Sage's integer polynomial rings
from line 139 (5 lines) @@ -126,5 +139,5 @@
     CITE{formula-jacobi}; the radial polynomials must satisfy $R_n^m(1)=1$ and the     exact orthogonality relation CITE{formula-orthogonality}; and the single-index-    formulas must reproduce the checked initial Noll and Fringe lists.+    formulas must reproduce the four single indices tabulated for $n\leq4$ in CITE{Wiki}. Display properties:   number-header: $R_n^{|l|}(t)$ or $Z_n^l(x,y)$ 

Sign in to restore an earlier version.