Expand this Topic clickable element to expand a topic
Skip to content
Optica Publishing Group

Efficient and robust recurrence relations for the Zernike circle polynomials and their derivatives in Cartesian coordinates

Open Access Open Access

Abstract

For some time it has been known and recommended that the calculation of Zernike polynomials to radial orders higher than 8 to 10 should be performed using recurrence relations rather than explicit expressions due increasingly large cancellation errors. This paper presents a set of simple recurrence relations that can be used for the unit-normalized Zernike polynomials in polar coordinates and easily adapted to Cartesian coordinates as well. The recurrence relations are also well suited for the calculation of the Cartesian derivatives of the Zernike polynomials. The recurrence relations are easily extended to arbitrarily high orders. Assessments of the precision achievable with standard 64-bit floating point arithmetic show that Zernike polynomials up to radial order 30 can be calculated over the unit disc with errors not exceeding 5E-14, and up to radial order 50 with errors not exceeding 1.2E-13. Comparison with the Zernike capability in OpticStudio (Zemax) shows that the recurrence relations are superior in performance (both speed and precision) over the existing algorithm implemented in the software. General pseudo-code for the calculation of Zernike polynomials and their derivatives is also presented.

© 2018 Optical Society of America under the terms of the OSA Open Access Publishing Agreement

1. Introduction

The Zernike circle polynomials are widely used in optical design and analysis [1–15], opto-mechanical design and analysis [16–19], and other disciplines such as ophthalmology [20–23], image analysis and pattern recognition [24–28], and anatomy [29]. Due to their mathematical properties, Zernike polynomials can be used to represent optical surfaces such as free-form surfaces, perturbations to ideal optical surfaces due to fabrication errors or environmental effects, aberrations in optical wavefronts, or patterns and structures in captured images. As part of these types of analysis for calculating fitting coefficients (or Zernike moments) [30–34], it is important to calculate Zernike polynomials up to high orders at selected sample points in the unit disc, and for certain applications such as ray tracing through optical surfaces with Zernike polynomial definitions it is also important to calculate the Cartesian derivatives of the Zernike polynomials [9, 35–38].

Numerous workers have pointed out that the explicit expressions for the Zernike polynomials [1-2, 39] are inefficient and suffer from large cancellation errors for higher-order polynomials and have devised various schemes using recurrence relations for their efficient calculation [9, 13, 25, 38, 40–47]. These recurrence relations are all recurrence relations for the radial component of the Zernike polynomials, and the relations vary in the number of terms involved and the complexity of the coefficients involved which may complicate the implementation of such schemes for the calculation of Zernike polynomials.

Papakostas et al. [48] studied the stability of recursive algorithms used to calculate Zernike moments of a digitized image, and Singh and Walla [49] also considered the numerical stability of three recursive algorithms for calculating the radial Zernike polynomials.

The stability of factorials larger than 21 was the concern of Camacho-Bello et al. [50] who developed a high-precision and fast algorithm for calculating Jacobi-Fourier moments of digitized images that can also be applied to calculating Zernike moments. Janssen and Dirksen [51] used the connection between the radial Zernike polynomials and Chebyshev polynomials to calculate Zernike polynomials of arbitrary radial order using a discrete Fourier (cosine) transform.

In this paper, we have selected one simple recurrence relation with coefficients that do not depend on radial or azimuthal orders and which contains no singularities. In Sec. 2 we introduce the nomenclature selected for this paper, and in Sec. 3 we introduce the recurrence relation for the radial polynomials and for the angular components. In Sec. 4 we present an alternate representation for this recurrence relation, and in Sec. 5 we use these recurrence relations to derive a set of recurrence relations for the Zernike polynomials in Cartesian coordinates that do not involve polar coordinates at all. In Sec. 6 we derive a set of recurrence relations for the Cartesian derivatives of the Zernike polynomials that are closely related to the Cartesian recurrence relations in Sec. 5. In Sec. 7 we present analysis of the accuracy to be expected when using these recurrence relations to calculate Zernike polynomials to very high radial orders in standard 64-bit floating point precision. In Sec. 8 we compare the presented recurrence relations with algorithms in current commercial software for optical design and analysis and it is shown that the recurrence relations are far superior in performance for both execution time and arithmetic precision over the existing software. Details on the implementation of these recurrence relations are also given in two appendices in the form of explicit expressions and general pseudo-code.

Details in works on Zernike polynomials are often obfuscated by the different notations and conventions used in literature. The differences are in the way the polynomials are normalized, how the azimuthal index is defined, and how the 2-index numbering scheme gets mapped to a single index. In this paper, we use unit-normalized Zernike polynomials arranged according to the azimuthal scheme set forth by Rimmer and Wyant [39], and we refer to discussions by Schwiegerling [52], Doyle, Genberg, and Michels [17] and others [9, 53, 54] for details on normalizations and numbering schemes for Zernike polynomials.

2. Zernike polynomials – definitions

The Zernike polynomials is a set of polynomials defined on the unit disc C

x2+y21           .

However, the Zernike polynomials are most often defined using polar coordinates (r,θ)

x=rcosθ ,y=rsinθ
because the polynomials are separable in polar coordinates. Thus, the polynomials can be defined in a double-index form for integers n0 and 0mn [5, 39]
Unm(r,θ)={Rn|n2m|(r)sin(n2m)θ , for n2m>0Rn|n2m|(r)cos(n2m)θ , for n2m0           ,
where the radial polynomials Rnμ(r) are defined as
Rnμ(r)=k=0nμ2(1)k(nk)!k!(nμ2k)!(n+μ2k)!rn2k,n0 , 0μn , nμ even
The polynomials defined in (3) are orthogonal over the unit disc C and are unit-normalized in the sense that for each polynomial Unm
max  C|Unm|=1           .
For many applications it is more convenient to consider the σ-normalized polynomials (normalized to unit standard deviation)
Znm(r,θ)=NnmUnm(r,θ)           ,
where
Nnm=(2δn,(2m))(n+1)
is a normalization factor and where δij is the usual Kronecker delta. Thus for a linear combination of Zernike polynomials
W(r,θ)=n=0nmaxm=0nanmUnm(r,θ)
we have the following expression for the variance of W over the unit disc C, due to the orthogonality of the Zernike polynomials,

varCW=n=0nmaxm=0nanm2Nnm2           .

3. Recurrence relations for radial R-polynomials

The explicit expression in Eq. (4) for the radial polynomials Rnμ(r) contains terms with alternating signs and for large radial orders n the polynomials may suffer from relatively large errors due to cancellation of several large terms [42]. For this reason, many recursive relations have been developed that allow the radial polynomials of higher radial orders to be calculated recursively from radial polynomials of lower radial orders [9, 38, 40, 41, 43, 44]. Many of these recurrence relations differ in number of polynomials involved and in complexity of the coefficients. Here, we shall focus on a recurrence relation given by Shakibaei and Paramesran [44] who compared it favorably for speed with earlier relations given by Kintner [10] and Prata and Rusch [40]. Noll [9] showed the relationship between the radial polynomials and the ordinary Bessel functions

Rnμ(r)=2π(1)(nμ)/20Jn+1(2πk)Jμ(2πrk)dk=(1)(nμ)/20Jn+1(x)Jμ(rx)dx                                 ,
where Jn+1 and Jμ are ordinary Bessel functions of the first kind. Many recurrence relations for the radial polynomials can be derived using recurrence relations for the ordinary Bessel functions [55]. In particular, using the recurrence relation [55]
Jn1(x)Jn+1(x)=2Jn'(x)           ,
we now have, for n2, n2μ1 and nμ even,
Rnμ(r)+Rn2μ(r)=(1)(nμ)/20Jn+1(x)Jμ(rx)dx+(1)(n2μ)/20Jn1(x)Jμ(rx)dx=(1)(nμ)/20(Jn+1(x)Jn1(x))Jμ(rx)dx=(1)(nμ)/202Jn'(x)Jμ(rx)dx=2(1)(nμ)/2[Jn(x)Jμ(rx)]0+2(1)(nμ)/20Jn(x)rJμ'(rx)dx=(1)(nμ)/20Jn(x)r(Jμ1(rx)Jμ+1(rx))dx=(1)(nμ)/20Jn(x)rJμ1(rx)dx(1)(nμ)/20Jn(x)rJμ+1(rx)dx=(1)n1(μ1)20Jn(x)rJμ1(rx)dx+(1)n1(μ+1)20Jn(x)rJμ+1(rx)dx=rRn1μ1(r)+rRn1μ+1(r)           .
For n2, μ=0 and n even, we have
Rn0(r)+Rn20(r)=(1)n/20Jn+1(x)J0(rx)dx+(1)(n2)/20Jn1(x)J0(rx)dx=(1)n/20(Jn+1(x)Jn1(x))J0(rx)dx=(1)n/202Jn'(x)J0(rx)dx=2(1)n/2[Jn(x)J0(rx)]0+2(1)n/20Jn(x)rJ0'(rx)dx=2(1)n/20Jn(x)rJ1(rx)dx=2(1)(n11)/20Jn(x)rJ1(rx)dx=2rRn11(r)    .
Since, for μ=n, we have, see [56],
Rn2n(r)=0Jn1(x)Jn(rx)dx={0,for0r<112,forr=1              ,
by setting Rnμ(r)=0 identically for μ>n, Eqs. (12) and (13) can then be combined, for n2, nμ0and nμ even, into the recurrence relation
Rnμ(r)= rRn1|μ1|(r)+rRn1μ+1(r)Rn2μ(r)
which Shakibaei and Paramesran derived using a recurrence relation for Chebyshev polynomials [44]. With the starting polynomials
R00(r)=1   ,    R11(r)=r       ,
all radial polynomials of radial orders n2 can be calculated recursively from Eq. (15). Shakibaei and Paramesran [44] gave tables with the amount of calculations needed to calculate all radial polynomials up to a certain radial order n and they showed the computational flow involved to calculate the radial polynomials.

In order to calculate the full set of Zernike polynomials Unm in Eq. (3) we must also calculate the trigonometric functions sinmθ and cosmθ for m=1,,n and multiply these with the corresponding radial polynomials. The calculation of the trigonometric functions can be done efficiently recursively using the addition formulas for the trigonometric functions or de Moivre’s formula in matrix form

(cosmθsinmθ)=(cosθsinθsinθcosθ)(cos(m1)θsin(m1)θ)       .
Hence, to calculate all Zernike polynomials Unm up to a certain radial order n at a point (x,y) in the unit disc, we first calculate r and (cosθ,sinθ) using Eq. (2):
r=x2+y2  ,  cosθ=xr  ,  sinθ=yr
and then apply Eqs. (15) and (17) recursively with Eq. (16) providing the starting values and where

μ=n2m       .

We can reformulate the recurrence relation Eq. (15) as

Rnμ(r)= r(Rn1μ1(r)+Rn1μ+1(r))Rn2μ(r)
with the following exceptions:

Rnn(r)=rRn1n1(r)   , for μ=n       ,
Rn0(r)=2rRn11(r)Rn20(r)  , for μ=0       .

4. Recurrence relations for radial A-polynomials

From the explicit expression for the radial polynomials in Eq. (4) it follows that every term in the polynomial Rnμ(r) contains the factor rμ and since each such radial polynomial ends up being multiplied with sinμθ or cosμθ, it is of interest to consider the polynomials Anμ(r) defined by

Rnμ(r)=rμAnμ(r)       .

With this definition, the equivalent of Eq. (3) then becomes

Unm(r,θ)={An|n2m|(r)r|n2m|sin(n2m)θ , for n2m>0An|n2m|(r)r|n2m|cos(n2m)θ , for n2m0       ,
and the counterpart to Eq. (17) is then

(rmcosmθrm sinmθ)=(rcosθrsinθrsinθrcosθ)(rm1cos(m1)θrm1sin(m1)θ)=(xyyx)(rm1cos(m1)θrm1sin(m1)θ)                                        .

We notice that to use the recurrence relation Eq. (25) it is not necessary to calculate cosθ and sinθ since the relation only involves x=rcosθ and y=rsinθ.

If we insert Eq. (23) into the recurrence relation Eqs. (20)-(22), we obtain the recurrence relations for these A-polynomials

Anμ(r)= An1μ1(r)+r2An1μ+1(r)An2μ(r)
with the following exceptions:

Ann(r)=An1n1(r)   , for μ=n      ,
An0(r)=2r2An11(r)An20(r)  , for μ=0       .

For the A-polynomials we have the starting polynomials

A00(r)=1   ,    A11(r)=1            .
The recurrence relations for the A-polynomials appear to be slightly simpler than the corresponding recurrence relations for the R-polynomials in Sec. 3.

5. Recurrence relations in Cartesian coordinates for Zernike U-polynomials

We will now derive a set of recurrence relations for the Zernike polynomials Unm(x,y) directly in Cartesian coordinates (x,y). For this, we use the recurrence relations for the radial R-polynomials from Sec. 3 along with the addition formulas for the trigonometric functions. For n2m>0 we have in general from Eq. (3), with μ=n2m,

Unm=Rnμ(r)sinμθ=rRn1μ1(r)sinμθ+rRn1μ+1(r)sinμθRn2μ(r)sinμθ=rRn1μ1(r)sin((μ1)θ+θ)+rRn1μ+1(r)sin((μ+1)θθ)Rn2μ(r)sinμθ=rRn1μ1(r)(sin(μ1)θcosθ+cos(μ1)θsinθ)+rRn1μ+1(r)(sin(μ+1)θcosθcos(μ+1)θsinθ)Rn2μ(r)sinμθ=xUn1,m+yUn1,n1m+xUn1,m1yUn1,nmUn2,m1
Similarly, for n2m0 we have

Unm=Rnμ(r)cosμθ=rRn1μ1(r)cosμθ+rRn1μ+1(r)cosμθRn2μ(r)cosμθ=rRn1μ1(r)cos((μ1)θ+θ)+rRn1μ+1(r)cos((μ+1)θθ)Rn2μ(r)cosμθ=rRn1μ1(r)(cos(μ1)θcosθsin(μ1)θsinθ)+rRn1μ+1(r)(cos(μ+1)θcosθ+sin(μ+1)θsinθ)Rn2μ(r)cosμθ=xUn1,m+yUn1,n1m+xUn1,m1yUn1,nmUn2,m1

Hence, in Cartesian coordinates we have the recurrence relation

Un,m=xUn1,m+yUn1,n1m+xUn1,m1yUn1,nmUn2,m1
with the following exceptions
Un,0=xUn1,0+yUn1,n1 , for m=0
Un,n=xUn1,n1yUn1,0 , for m=n
Un,m=yUn1,n1m+xUn1,m1yUn1,nmUn2,m1, for n odd and m=n12
Un,m=xUn1,m+yUn1,n1m+xUn1,m1Un2,m1, for n odd and m=n12+1
Un,m=2xUn1,m+2yUn1,m1Un2,m1 , for n even and m=n2
The starting polynomials are

U00=1  ,  U10=y  ,  U11=x        .

6. Recurrence relations for Cartesian derivatives of Zernike polynomials

Since the Cartesian derivatives Unmx and Unmy are functions of (x,y) and in fact are polynomials in x and y, they can be expressed as finite linear combinations of Zernike polynomials up to radial order n1, see, e.g., Noll [9] or Zhao and Burge [35]. In this Section, we shall provide a set of recurrence relations for the derivatives closely related to the Cartesian recurrence relations given in Sec. 5. Janssen [38] considered the complex-valued functions

Znμ(x,y)=Rnμ(cosμθ+isinμθ)
and derived the following expressions for the Cartesian derivatives

Znμx=Zn2μx+n(Zn1μ1+Zn1μ+1)
Znμy=Zn2μy+in(Zn1μ1Zn1μ+1)       .

When making use of the translation

Znμ=Un,n+μ2+iUn,nμ2
inserted into Eq. (40), we get, by separating the real and imaginary parts and using Eq. (19),
Un,nmx=nUn1,nm1+nUn1,nm+Un2,nm1x
and
Un,mx=nUn1,m+nUn1,m1+Un2,m1x               .
We see, by replacing nm by m that Eq. (43) is equivalent to Eq. (44).

Similarly, when inserting Eq. (42) into Eq. (41), we get

Un,my=nUn1,nm1nUn1,nm+Un2,m1y               .

Equations (44) and (45) are the general recursive relations for the Cartesian derivatives of the Zernike polynomials. They have exceptions similar to the exceptions for the Zernike polynomials in Sec. 5:

Un,0x=nUn1,0Un,0y=nUn1,n1} for m=0          ,
Un,nx=nUn1,n1Un,ny=nUn1,0} for m=n          ,
Un,mx=nUn1,m1+Un2,m1xUn,my=nUn1,nm1nUn1,nm+Un2,m1y} for n odd and m=n12     ,
Un,mx=nUn1,m+nUn1,m1+Un2,m1xUn,my=nUn1,nm1+Un2,m1y} for n odd and m=n12+1 ,
Un,mx=2nUn1,m+Un2,m1xUn,my=2nUn1,nm1+Un2,m1y} for n even and m=n2      .
The starting expressions for the Cartesian derivatives are

U00x=U00y=0 ,  U10x=U11y=0 ,  U11x=U10y=1    .

The recursive relations for the derivatives at a given radial order n at a point (x,y) only involve the Zernike polynomials and derivatives at lower radial orders at that point. The derivatives can be calculated after the polynomials have been calculated, or they can be calculated concurrently with the polynomials. In Appendix A we provide the recursive formulas for both the polynomials and their derivatives for sufficiently high radial orders that the recursive patterns with their exceptions should be clear. In Appendix B we provide pseudo-code for the efficient calculation of both the Zernike polynomials and their Cartesian derivatives.

We mention here that recurrence relations similar to Eqs. (44) and (45) with the exceptions Eqs. (46)-(50) were derived by Stephenson [37] for the Cartesian derivatives of the σ-normalized Zernike polynomials.

It is also noticed that the recurrence relations presented here can be implemented in code that calculates the Zernike polynomials at lower orders using explicit expressions and then feed these into the recurrence relations for calculation for the higher radial orders.

7. Estimations of accuracy of recurrence relations for Zernike polynomials

In order to assess the accuracy of the recurrence relations for Zernike polynomials presented in Sections 3, 4, and 5, we implemented these in compiled software using both 64-bit and 128-bit floating point precision. Generally, 64-bit floating point precision (double precision) is considered to provide full 15-17 decimal digits of precision, whereas 128-bit floating precision (quadruple precision) is considered to provide 34 decimal digits of precision. When estimating errors in the double precision algorithms, we used the difference between the result calculated in 64-bit precision and that calculated in 128-bit precision. The unit-normalized Zernike polynomials considered here have values over the unit disc that are always in the interval [1,1].

We first estimated the errors in the algorithm using R-polynomials in Sec. 3. Here, we calculated the radial polynomials up to radial order 30 in the interval [0,1] using a very fine subdivision. In addition, we calculated the angular factors in Eq. (17) up to azimuthal orders 30 in the interval [0,2π] using a very fine subdivision of 200000 points. For the angular factors, we found that the maximum error over the interval [0,2π] in cosmθ or sinmθ using Eq. (17) in 64-bit precision could be estimated very accurately as

εang=1.2811015m                 .
We then estimated the error in calculating all the Zernike polynomials up to a radial order n by combining the maximum error in the radial polynomials with the maximum error in the angular factors, either conservatively by just adding the errors (assuming worst-case combination), or more empirically by rss-ing the errors together.

This analysis was repeated for the algorithm using A-polynomials in Sec. 4. Here, each calculated A-polynomial was multiplied with the corresponding factor rμ, see Eq. (23), to recover the corresponding R-polynomial, and the estimated errors were determined.

To validate these error estimation methods, separating the radial and angular variables, we also calculated all the Zernike polynomials up to a radial order n over the full unit disc Eq. (1) using first the A-polynomial method from Sec. 4, and secondly the recurrence relations in Sec. 5. The results of all these analyses are combined in Fig. 1. From this we see, that the A-polynomials provide better accuracy than the R-polynomials, and that the rss-estimate of the errors from the separated radial and angular variables provides a very good estimate when compared with the rigorous calculation over the full unit disc. Finally, it is also seen that the Cartesian algorithm in Sec. 5 gives the best accuracy of the three methods examined here.

 figure: Fig. 1

Fig. 1 Estimated maximum error in calculating Zernike polynomials over the unit disc. Solid blue: conservative estimate using R-polynomials. Solid red: conservative estimate using A-polynomials. Dashed blue: rss-estimate using R-polynomials. Dashed red: rss-estimate using A-polynomials. Green: using A-polynomials (Sec. 4). Purple: using Cartesian recurrence relations (Sec. 5).

Download Full Size | PDF

Hence, up to radial order 20, this method will calculate the Zernike polynomials over the unit disc in 64-bit precision with an error not exceeding 21014, and up to radial order 30, the error is not exceeding 51014.

This analysis only considered the maximum error over the unit disc among all Zernike polynomials with the same radial order. We also conducted a more detailed analysis, capturing the maximum error over the unit disc for each Zernike polynomial Unm up to a certain maximum radial order n using the Cartesian recurrence relations of Sec. 5. The results for radial orders up to 30 are shown in Fig. 2, and for radial orders up to order 50 in Fig. 3. From these figures it is seen that the largest errors are encountered in Zernike polynomials with azimuthal indices m close to n/2. These are the polynomials that have the highest number of predecessor polynomials in the Cartesian recursive scheme for the Zernike polynomials, hence they will generally suffer from having the largest accumulative errors. Up to radial order 30 using 64-bit floating point arithmetic, errors in calculating any Zernike polynomial anywhere in the unit disc do not exceed 51014, and for radial orders up to 50, the errors do not exceed 1.21013.

 figure: Fig. 2

Fig. 2 Maximum error over the unit disc for individual Zernike polynomials with radial orders up to 30. The separate curves show the trends for the even-ordered rotationally symmetric polynomials (rad. symm.), and for the odd-ordered sine and cosine polynomials where the maximum errors are the largest.

Download Full Size | PDF

 figure: Fig. 3

Fig. 3 Maximum error over the unit disc for individual Zernike polynomials with radial orders up to 50. The separate curve shows the trends for the even-ordered rotationally symmetric polynomials (rad. symm.).

Download Full Size | PDF

Whereas the use of Zernike polynomials with radial orders 8 to 12 or smaller may be sufficient in for much analysis in optical design and fabrication, papers in image analysis [24–28] may indicate a need for calculating Zernike polynomials with radial orders as high as 40. Zernike polynomials with radial orders as high as 20 to 30 can also be useful in modeling environmental and mount effects on optical surface deformations [19].

8. Comparison of performance with OpticStudio

In this section we report results of comparing the performance in both accuracy and speed of the recursive relations for Zernike polynomials with the performance of Zernike polynomials provided by the commercial software OpticStudio by Zemax [57]. For this analysis version 17.5 of OpticStudio was available. OpticStudio provides support for Zernike polynomials up to radial order 20. The Zernike polynomials in OpticStudio are σ-normalized following a linear numbering scheme set forth by Noll [9] in which Zernike polynomials with a cosine-term are always given an even number [17, 52]. When comparing Zernike polynomial values computed by OpticStudio with those calculated using the recurrence relations presented here, the normalization constants of Eq. (7) and the difference in numbering schemes were taken into account.

We first calculated all Zernike polynomials through radial order 20 (231 terms) at selected points in the unit disc by assigning unit coefficients to a Standard Zernike Sag surface, one polynomial at a time, and requesting the surface sag written out with a sufficient number of digits. These values were then compared with 128-bit calculated values using recurrence relations. Here, we considered 3 points in the unit disc, (0.663,0.396), (0.5,0.5), and (0.873,0.485). The distances of these points from the center of the unit disc are 0.7714, 0.7071, and 0.9987, respectively. The errors at each of these points for all Zernike polynomials from radial orders 9 through 20 are shown in Fig. 4.

 figure: Fig. 4

Fig. 4 Errors in individual Zernike Standard polynomials evaluated by OpticStudio at selected points in the unit disc. a) at the points (0.663,-0.396), (0.5,0.5). b) at the two points in a) plus the point (−0.873,0.485). The values are for σ-normalized polynomials, using the linear numbering scheme by Noll [9].

Download Full Size | PDF

The analysis clearly shows that for radial orders from 15 and up to 20, some Zernike polynomial values in OpticStudio may suffer a loss in precision of 3 to 5 decimal digits.

To better assess the performance of the recursive relations algorithm compared with the current implementation of Zernike polynomials in OpticStudio, we wrote a Dynamic Link Library (DLL) module for a user-defined surface sag using the recursive algorithm with the A–polynomials of Sec. 4. A DLL is a module of compiled code that gets linked with the main software (OpticStudio) at run-time with very little compute overhead when compared with features that are parts of the standard software. We set up an optical model with a Zernike Standard Sag (type SZERNSAG) on one surface and the user-defined DLL surface on an adjacent surface, each with unit normalization radius. The coefficients were generated in ZPL macros so that the complete surface sag description would be

f(x,y)=n=020m=0nanmUnm(x,y)
where the coefficients were generated using an arbitrary, but deterministic, algorithm

anm=sin(100mn2+0.1n+1)          .

For the Zernike Standard Sag surface, that uses the σ-normalized Zernike polynomials, the coefficients in Eq. (54) were multiplied with the corresponding normalization coefficients in Eq. (7). We then used the ZPL macro language to calculate the difference between the “native” Zernike Standard Sag and the user-defined surface using recursively calculated Zernike polynomials. The results are presented in Fig. 5.

 figure: Fig. 5

Fig. 5 Surface profile and sag errors for Zernike surface in OpticStudio. Left: the surface profile with values between −14.4 and + 26.8. Right: 10-based logarithm of the absolute value of the difference between the Standard Surface sag and the user-defined surface sag. The log-values are in the range −25 to −9. The differences themselves were between −9.62E-10 and + 7.47E-10. The grid-size for both plots is 501x501 data points.

Download Full Size | PDF

It is seen that the larger errors are located near the edge of the unit disc, and that 4 to 5 decimal digits may get lost in the algorithm currently used in OpticStudio.

Finally, we used the user-defined surface DLL to compare execution speeds between the algorithm used in the Zernike Standard Sag surface and the recursive relations algorithm used in the user-defined surface. We used the Surface Sag tool in the Analyze section to generate a grey-scale plot of the surface. We set it up in a ZPL macro that could set the grid-size and choose between the Zernike Standard Sag surface and the user-defined surface and accurately record the time for calculating and displaying the surface plot. Hence, the overhead would be identical for the two surface types, both run on the same hardware. The results of this analysis are shown in Fig. 6 for different grid-sizes. For the larger grid-sizes where the bulk of the CPU time was spent generating Zernike polynomial values, it is seen that a gain of a factor of upward of 10 in speed can be expected if the calculation of Zernike polynomials is implemented using recurrence relations.

 figure: Fig. 6

Fig. 6 Comparison of performance in speed between OpticStudio Zernike Standard Sag surface and user-defined surface using Zernike recurrence relations. Left: The surface profile generated in OpticStudio (same as Fig. 5, left). Right: CPU-times for generating 2D grids of surface sag data for different sizes of the square grid-side. The ratio between the CPU times for the Zernike Standard Sag surface and the user-defined surface is also shown.

Download Full Size | PDF

Calculations involving Zernike polynomials of radial orders less than about 10 (the first 66 polynomials) are not seriously affected in precision when using existing algorithms. However, from these results we see that the OpticStudio software would benefit in both precision and speed if recursive relations were implemented for the calculation of Zernike polynomials.

9. Summary and conclusions

We have presented a set of recursive relations for calculating Zernike polynomials and their Cartesian derivatives. For the Zernike polynomials, we presented two sets of recursive relations for the radial polynomials (R-polynomials and A-polynomials) operating in polar coordinates, and one set operating directly in Cartesian coordinates. These are useful when all Zernike polynomials up to a certain radial order must be evaluated at a specified point in the unit disc. The Cartesian derivatives of the Zernike polynomials at the given point can be calculated concurrently with the Zernike polynomials or after the Zernike polynomials have been calculated.

We presented detailed assessments of the precision achievable with these recurrence relations in Sec. 7, and we concluded that the algorithm working directly in Cartesian coordinates is superior in accuracy over the algorithms using the radial polynomials and polar coordinates. In Sec. 8 we compared the performance (precision and speed) of these recurrence relations with existing algorithms available in commercial software widely used in industry, concluding that the commercial software can benefit significantly in both accuracy and speed by implementing a recursive relations algorithm for calculating the Zernike polynomials.

Appendix A – Recursive formulas in Cartesian coordinates

In this Appendix, we provide explicit details for the recursive relations for the Zernike polynomials and their Cartesian derivatives in Cartesian coordinates as presented in Secs. 5 and 6 (see Fig. 7). We provide these in tabular form giving expressions for the polynomials Unm as well as the derivatives xUnm (meaning Unm/x) and yUnm (meaning Unm/y) for radial orders 0 through 6 and 9 to 10.

 figure: Fig. 7

Fig. 7 Recursive formulas for unnormalized Zernike polynomials and their derivatives

Download Full Size | PDF

Appendix B – Pseudo code for Zernike polynomials and derivatives

In this Appendix, we provide a reference to pseudo code, as shown in Code File 1 (Ref [58]), in sufficient detail for the calculation of all Zernike polynomials and their Cartesian derivatives at a point (x,y) in the unit disc up to a certain radial order using the recurrence relations presented in Secs. 5 and 6. The code is similar to C-language code without terminating semicolons and with some {} brackets omitted. The exception clauses from Secs. 5 and 6 are clearly marked in the code. The statements calculating the Cartesian derivatives are also easily identifiable. If code for just calculating the Zernike polynomials is desired, the statements for the derivatives should be left out. These could instead be implemented in a separate procedure for the calculation of the derivatives that is called after the Zernike polynomials have been calculated.

Funding

Lockheed Martin Corporation.

Acknowledgment

The author wants to thank Zac Granger, Bruce Herman, and Mike Jacoby for many fruitful discussions and encouragements.

References and links

1. F. Zernike, “Beugungstheorie des Schneidenverfahrens und seiner verbesserten Form, der Phasenkontrast-methode,” Physica 1(7-12), 689–704 (1934). [CrossRef]  

2. M. Born and E. Wolf, Principles of Optics, 6th ed. (Pergamon, 1993).

3. E. H. Linfoot, Recent Advances in Optics (Clarendon, 1955).

4. E. Wolf, “The diffraction theory of aberrations,” Rep. Prog. Phys. 14(1), 95–120 (1951). [CrossRef]  

5. D. Malacara, “Zernike polynomials and wavefront fitting,” in Optical Shop Testing, 2nd ed., D. Malacara, ed. (John Wiley & Sons, 1992), Appendix 2, pp 489–503.

6. V. N. Mahajan, “Zernike polynomials and wavefront fitting,” in Optical Shop Testing, 3rd ed., D. Malacara, ed. (Wiley-Interscience, 2007).

7. A. B. Bhatia, E. Wolf, and M. Born, “On the circle polynomials of Zernike and related orthogonal sets,” Math. Proc. Camb. Philos. Soc. 50(01), 40–48 (1954). [CrossRef]  

8. V. Lakshminarayanan and A. Fleck, “Zernike polynomials: a guide,” J. Mod. Opt. 58(7), 545–561 (2011). [CrossRef]  

9. R. J. Noll, “Zernike polynomials and atmospheric turbulence,” J. Opt. Soc. Am. 66(3), 207–211 (1976). [CrossRef]  

10. E. C. Kintner, “On the mathematical properties of the Zernike polynomials,” Opt. Acta (Lond.) 23(8), 679–680 (1976). [CrossRef]  

11. J. Y. Wang and D. E. Silva, “Wave-front interpretation with Zernike polynomials,” Appl. Opt. 19(9), 1510–1518 (1980). [CrossRef]   [PubMed]  

12. C. J. R. Sheppard, S. Campbell, and M. D. Hirschhorn, “Zernike expansion of separable functions of Cartesian coordinates,” Appl. Opt. 43(20), 3963–3966 (2004). [CrossRef]   [PubMed]  

13. S. N. Bezdidko, “Orthogonal aberrations: theory, methods, and practical applications in computational optics,” J. Opt. Technol. 63(6), 351–359 (2016). [CrossRef]  

14. V. N. Mahajan, “Zernike circle polynomials and optical aberrations of systems with circular pupils,” Appl. Opt. 33(34), 8121–8124 (1994). [CrossRef]   [PubMed]  

15. H. H. van Brug, “Efficient Cartesian representation of Zernike polynomials in computer memory,” Proc. SPIE 3190, 382–392 (1997). [CrossRef]  

16. V. L. Genberg, G. J. Michels, and K. B. Doyle, “Orthogonality of Zernike polynomials,” Proc. SPIE 4771, 276–286 (2002). [CrossRef]  

17. K. B. Doyle, V. L. Genberg, and G. J. Michels, Integrated Optomechanical Analysis, 2nd ed. (SPIE, 2012).

18. P. Forney, “Integrated optical design,” Proc. SPIE 4441, 53–59 (2001). [CrossRef]  

19. E. T. Kvamme, D. M. Stubbs, and M. S. Jacoby, “The opto-mechanical design process: from vision to reality,” Proc. SPIE 10371, 103710P (2017).

20. D. A. Atchison, “Recent advances in representation of monochromatic aberrations of human eyes,” Clin. Exp. Optom. 87(3), 138–148 (2004). [CrossRef]   [PubMed]  

21. D. A. Atchison, D. H. Scott, and M. J. Cox, “Mathematical treatment of ocular aberrations: a user’s guide,” in Vision Science and Its Applications, V. Lakshminarayanan, ed., 35, 110–130 (2000).

22. D. R. Iskander, M. R. Morelande, M. J. Collins, and B. Davis, “Modeling of corneal surfaces with radial polynomials,” IEEE Trans. Biomed. Eng. 49(4), 320–328 (2002). [CrossRef]   [PubMed]  

23. S. A. Comastri, L. I. Perez, G. D. Pérez, G. Martin, and K. Bastida, “Zernike expansion coefficients: rescaling and decentring for different pupils and evaluation of corneal aberrations,” J. Opt. A, Pure Appl. Opt. 9(3), 209–221 (2007). [CrossRef]  

24. Y.-H. Pang, A. B. J. Teoh, and D. C. L. Ngo, “A discriminant pseudo Zernike moments in face recognition,” J. Res. Pract. In Inform. Techn. 38(2), 197–211 (2006).

25. K. Hosny, “Fast computation of accurate pseudo Zernike moments for binary and gray-level images,” Int. Arab J. Inf. Technol. 11(3), 243–249 (2014).

26. J. Gu, H. Z. Shu, C. Toumoulin, and L. M. Luo, “A novel algorithm for fast computation of Zernike moments,” Patt. Recogn. 35(12), 2905–2911 (2002). [CrossRef]  

27. K. C. Otiniano-Rodríguez, G. Cámara-Chávez, and D. Menotti, “Hu and Zernike moments for sign language recognition,” in 2012 International Conference on Image Processing, Computer Vision, and Pattern Recognition, IPCV'12 (2012), pp. 1–5.

28. K. M. Hosny, “A systematic method for efficient computation of full and subsets Zernike moments,” Inf. Sci. 180(11), 2299–2313 (2010). [CrossRef]  

29. E. A. Kaye, Y. Hertzberg, M. Marx, B. Werner, G. Navon, M. Levoy, and K. B. Pauly, “Application of Zernike polynomials towards accelerated adaptive focusing of transcranial high intensity focused ultrasound,” Med. Phys. 39(10), 6254–6263 (2012). [CrossRef]   [PubMed]  

30. D. Malacara, J. M. Carpio-Valadéz, and J. J. Sánchez-Mondragón, “Wavefront fitting with discrete orthogonal polynomials in a unit radius circle,” Opt. Eng. 29(6), 672–675 (1990). [CrossRef]  

31. R. J. Mathar, “Zernike basis to Cartesian transformations,” Serb. Astron. J. 179(179), 107–120 (2009). [CrossRef]  

32. T. Tanabe, M. Shibuya, and K. Maehara, “Convergence and differentiation of Zernike expansion: application for an analysis of odd-order surfaces,” Opt. Eng. 55(3), 035101 (2016). [CrossRef]  

33. C.-W. Chong, R. Mukundan, and P. Raveendran, “An efficient algorithm for fast computation of pseudo-Zernike moments,” Int. J. Pattern Recognit. Artif. Intell. 17(6), 1011–1016 (2003). [CrossRef]  

34. J. L. Rayces, “Least-squares fitting of orthogonal polynomials to the wave-aberration function,” Appl. Opt. 31(13), 2223–2228 (1992). [CrossRef]   [PubMed]  

35. C. Zhao and J. H. Burge, “Orthonormal vector polynomials in a unit circle, Part I: Basis set derived from gradients of Zernike polynomials,” Opt. Express 15(26), 18014–18024 (2007). [CrossRef]   [PubMed]  

36. A. Gavrielides, “Vector polynomials orthogonal to the gradient of Zernike polynomials,” Opt. Lett. 7(11), 526–528 (1982). [CrossRef]   [PubMed]  

37. P. C. L. Stephenson, “Recurrence relations for the Cartesian derivatives of the Zernike polynomials,” J. Opt. Soc. Am. A 31(4), 708–715 (2014). [CrossRef]   [PubMed]  

38. A. J. E. M. Janssen, “Zernike expansion of derivatives and Laplacians of the Zernike circle polynomials,” J. Opt. Soc. Am. A 31(7), 1604–1613 (2014). [CrossRef]   [PubMed]  

39. M. P. Rimmer and J. C. Wyant, “Evaluation of large aberrations using a lateral-shear interferometer having variable shear,” Appl. Opt. 14(1), 142–150 (1975). [CrossRef]   [PubMed]  

40. A. Prata Jr and W. V. T. Rusch, “Algorithm for computation of Zernike polynomials expansion coefficients,” Appl. Opt. 28(4), 749–754 (1989). [CrossRef]   [PubMed]  

41. S.-K. Hwang and W.-Y. Kim, “A novel approach to the fast computation of Zernike moments,” Pattern Recognit. 39(11), 2065–2076 (2006). [CrossRef]  

42. G. W. Forbes, “Robust and fast computation for the polynomials of optics,” Opt. Express 18(13), 13851–13862 (2010). [CrossRef]   [PubMed]  

43. S. N. Bezdidko, “Study of the properties of Zernike’s orthogonal polynomials,” Proc. SPIE 5174, 227–234 (2003). [CrossRef]  

44. B. Honarvar Shakibaei and R. Paramesran, “Recursive formula to compute Zernike radial polynomials,” Opt. Lett. 38(14), 2487–2489 (2013). [CrossRef]   [PubMed]  

45. P. Novák and J. Novák, “Efficient and stable numerical method for evaluation of Zernike polynomials and their Cartesian derivatives,” Proc. SPIE 8789, 878913 (2013). [CrossRef]  

46. P. Novák, J. Novák, and A. Mikš, “Fast and robust computation of Cartesian derivatives of Zernike polynomials,” Opt. Lasers Eng. 52, 7–12 (2014). [CrossRef]  

47. J. J. M. Braat and A. J. E. M. Janssen, “Double Zernike expansion of the optical aberration function from its power series expansion,” J. Opt. Soc. Am. A 30(6), 1213–1222 (2013). [CrossRef]   [PubMed]  

48. G. A. Papakostas, Y. S. Boutalis, C. N. Papaodysseus, and D. K. Fragoulis, “Numerical stability of fast computation algorithms of Zernike moments,” Appl. Math. Comput. 195(1), 326–345 (2008). [CrossRef]  

49. C. Singh and E. Walla, “Fast and numerically stable methods for the computation of Zernike moments,” J. Patt. Recogn. 43(7), 2497–2506 (2010). [CrossRef]  

50. C. Camacho-Bello, C. Toxqui-Quitl, A. Padilla-Vivanco, and J. J. Báez-Rojas, “High-precision and fast computation of Jacobi-Fourier moments for image description,” J. Opt. Soc. Am. A 31(1), 124–134 (2014). [CrossRef]   [PubMed]  

51. A. J. E. M. Janssen and P. Dirksen, “Computing Zernike polynomials of arbitrary degree using the discrete Fourier transform,” J. European Opt. Soc. 2, 07012 (2007). [CrossRef]  

52. J. Schwiegerling, “Review of Zernike polynomials and their use in describing the impact of misalignment in optical systems,” Proc. SPIE 10377, 103770D (2017).

53. J. Loomis, “A computer program for analysis of interferometric data,” in Optical Interferograms – Reduction and Interpretation, American Society for Testing and Materials Special Technical Publication 666, A. H. Guenther and D. H. Liebenberg, ed., (Philadelphia, 1978), 71–86.

54. J. S. Loomis, “Evaluation of optical aberrations in point images,” Appl. Opt. 31(13), 2211–2222 (1992). [CrossRef]   [PubMed]  

55. M. Abramowitz and I. A. Stegun, eds., Handbook of Mathematical Functions With Formulas, Graphs, and Mathematical Tables, (Dover Publications, 1972).

56. I. S. Gradshteyn and I. M. Ryzhik, Table of Integrals, Series and Products, (Academic Press, 1980).

57. OpticStudio is a registered trademark of Zemax LLC, www.zemax.com

58. T. B. Andersen, “Zernike_pol_algorithm.txt”, figshare (2018) [retrieved 02 April 2018], https://doi.org/10.6084/m9.figshare.6073898.

Supplementary Material (1)

NameDescription
Code 1       Pseudo-code to calculate unit-normalized Zernike polynomials and their x,y derivatives

Cited By

Optica participates in Crossref's Cited-By Linking service. Citing articles from Optica Publishing Group journals and other participating publishers are listed here.

Alert me when this article is cited.


Figures (7)

Fig. 1
Fig. 1 Estimated maximum error in calculating Zernike polynomials over the unit disc. Solid blue: conservative estimate using R -polynomials. Solid red: conservative estimate using A -polynomials. Dashed blue: rss-estimate using R -polynomials. Dashed red: rss-estimate using A -polynomials. Green: using A -polynomials (Sec. 4). Purple: using Cartesian recurrence relations (Sec. 5).
Fig. 2
Fig. 2 Maximum error over the unit disc for individual Zernike polynomials with radial orders up to 30. The separate curves show the trends for the even-ordered rotationally symmetric polynomials (rad. symm.), and for the odd-ordered sine and cosine polynomials where the maximum errors are the largest.
Fig. 3
Fig. 3 Maximum error over the unit disc for individual Zernike polynomials with radial orders up to 50. The separate curve shows the trends for the even-ordered rotationally symmetric polynomials (rad. symm.).
Fig. 4
Fig. 4 Errors in individual Zernike Standard polynomials evaluated by OpticStudio at selected points in the unit disc. a) at the points (0.663,-0.396), (0.5,0.5). b) at the two points in a) plus the point (−0.873,0.485). The values are for σ -normalized polynomials, using the linear numbering scheme by Noll [9].
Fig. 5
Fig. 5 Surface profile and sag errors for Zernike surface in OpticStudio. Left: the surface profile with values between −14.4 and + 26.8. Right: 10-based logarithm of the absolute value of the difference between the Standard Surface sag and the user-defined surface sag. The log-values are in the range −25 to −9. The differences themselves were between −9.62E-10 and + 7.47E-10. The grid-size for both plots is 501x501 data points.
Fig. 6
Fig. 6 Comparison of performance in speed between OpticStudio Zernike Standard Sag surface and user-defined surface using Zernike recurrence relations. Left: The surface profile generated in OpticStudio (same as Fig. 5, left). Right: CPU-times for generating 2D grids of surface sag data for different sizes of the square grid-side. The ratio between the CPU times for the Zernike Standard Sag surface and the user-defined surface is also shown.
Fig. 7
Fig. 7 Recursive formulas for unnormalized Zernike polynomials and their derivatives

Equations (54)

Equations on this page are rendered with MathJax. Learn more.

x 2 + y 2 1                       .
x = r cos θ   , y = r sin θ
U n m ( r , θ ) = { R n | n 2 m | ( r ) sin ( n 2 m ) θ   ,   f o r   n 2 m > 0 R n | n 2 m | ( r ) cos ( n 2 m ) θ   ,   f o r   n 2 m 0                       ,
R n μ ( r ) = k = 0 n μ 2 ( 1 ) k ( n k ) ! k ! ( n μ 2 k ) ! ( n + μ 2 k ) ! r n 2 k , n 0   ,   0 μ n   ,   n μ   e v e n
max   C | U n m | = 1                       .
Z n m ( r , θ ) = N n m U n m ( r , θ )                       ,
N n m = ( 2 δ n , ( 2 m ) ) ( n + 1 )
W ( r , θ ) = n = 0 n m a x m = 0 n a n m U n m ( r , θ )
var C W = n = 0 n m a x m = 0 n a n m 2 N n m 2                       .
R n μ ( r ) = 2 π ( 1 ) ( n μ ) / 2 0 J n + 1 ( 2 π k ) J μ ( 2 π r k ) d k = ( 1 ) ( n μ ) / 2 0 J n + 1 ( x ) J μ ( r x ) d x                                                                   ,
J n 1 ( x ) J n + 1 ( x ) = 2 J n ' ( x )                       ,
R n μ ( r ) + R n 2 μ ( r ) = ( 1 ) ( n μ ) / 2 0 J n + 1 ( x ) J μ ( r x ) d x + ( 1 ) ( n 2 μ ) / 2 0 J n 1 ( x ) J μ ( r x ) d x = ( 1 ) ( n μ ) / 2 0 ( J n + 1 ( x ) J n 1 ( x ) ) J μ ( r x ) d x = ( 1 ) ( n μ ) / 2 0 2 J n ' ( x ) J μ ( r x ) d x = 2 ( 1 ) ( n μ ) / 2 [ J n ( x ) J μ ( r x ) ] 0 + 2 ( 1 ) ( n μ ) / 2 0 J n ( x ) r J μ ' ( r x ) d x = ( 1 ) ( n μ ) / 2 0 J n ( x ) r ( J μ 1 ( r x ) J μ + 1 ( r x ) ) d x = ( 1 ) ( n μ ) / 2 0 J n ( x ) r J μ 1 ( r x ) d x ( 1 ) ( n μ ) / 2 0 J n ( x ) r J μ + 1 ( r x ) d x = ( 1 ) n 1 ( μ 1 ) 2 0 J n ( x ) r J μ 1 ( r x ) d x + ( 1 ) n 1 ( μ + 1 ) 2 0 J n ( x ) r J μ + 1 ( r x ) d x = r R n 1 μ 1 ( r ) + r R n 1 μ + 1 ( r )                       .
R n 0 ( r ) + R n 2 0 ( r ) = ( 1 ) n / 2 0 J n + 1 ( x ) J 0 ( r x ) d x + ( 1 ) ( n 2 ) / 2 0 J n 1 ( x ) J 0 ( r x ) d x = ( 1 ) n / 2 0 ( J n + 1 ( x ) J n 1 ( x ) ) J 0 ( r x ) d x = ( 1 ) n / 2 0 2 J n ' ( x ) J 0 ( r x ) d x = 2 ( 1 ) n / 2 [ J n ( x ) J 0 ( r x ) ] 0 + 2 ( 1 ) n / 2 0 J n ( x ) r J 0 ' ( r x ) d x = 2 ( 1 ) n / 2 0 J n ( x ) r J 1 ( r x ) d x = 2 ( 1 ) ( n 1 1 ) / 2 0 J n ( x ) r J 1 ( r x ) d x = 2 r R n 1 1 ( r )         .
R n 2 n ( r ) = 0 J n 1 ( x ) J n ( r x ) d x = { 0 , f o r 0 r < 1 1 2 , f o r r = 1                             ,
R n μ ( r ) =   r R n 1 | μ 1 | ( r ) + r R n 1 μ + 1 ( r ) R n 2 μ ( r )
R 0 0 ( r ) = 1       ,         R 1 1 ( r ) = r               ,
( cos m θ sin m θ ) = ( cos θ sin θ sin θ cos θ ) ( cos ( m 1 ) θ sin ( m 1 ) θ )               .
r = x 2 + y 2     ,     cos θ = x r     ,     sin θ = y r
μ = n 2 m               .
R n μ ( r ) =   r ( R n 1 μ 1 ( r ) + R n 1 μ + 1 ( r ) ) R n 2 μ ( r )
R n n ( r ) = r R n 1 n 1 ( r )       ,   f o r   μ = n               ,
R n 0 ( r ) = 2 r R n 1 1 ( r ) R n 2 0 ( r )     ,   f o r   μ = 0               .
R n μ ( r ) = r μ A n μ ( r )               .
U n m ( r , θ ) = { A n | n 2 m | ( r ) r | n 2 m | sin ( n 2 m ) θ   ,   f o r   n 2 m > 0 A n | n 2 m | ( r ) r | n 2 m | cos ( n 2 m ) θ   ,   f o r   n 2 m 0               ,
( r m cos m θ r m   sin m θ ) = ( r cos θ r sin θ r sin θ r cos θ ) ( r m 1 cos ( m 1 ) θ r m 1 sin ( m 1 ) θ ) = ( x y y x ) ( r m 1 cos ( m 1 ) θ r m 1 sin ( m 1 ) θ )                                                                                 .
A n μ ( r ) =   A n 1 μ 1 ( r ) + r 2 A n 1 μ + 1 ( r ) A n 2 μ ( r )
A n n ( r ) = A n 1 n 1 ( r )       ,   f o r   μ = n             ,
A n 0 ( r ) = 2 r 2 A n 1 1 ( r ) A n 2 0 ( r )     ,   f o r   μ = 0               .
A 0 0 ( r ) = 1       ,         A 1 1 ( r ) = 1                         .
U n m = R n μ ( r ) sin μ θ = r R n 1 μ 1 ( r ) sin μ θ + r R n 1 μ + 1 ( r ) sin μ θ R n 2 μ ( r ) sin μ θ = r R n 1 μ 1 ( r ) sin ( ( μ 1 ) θ + θ ) + r R n 1 μ + 1 ( r ) sin ( ( μ + 1 ) θ θ ) R n 2 μ ( r ) sin μ θ = r R n 1 μ 1 ( r ) ( sin ( μ 1 ) θ cos θ + cos ( μ 1 ) θ sin θ ) + r R n 1 μ + 1 ( r ) ( sin ( μ + 1 ) θ cos θ cos ( μ + 1 ) θ sin θ ) R n 2 μ ( r ) sin μ θ = x U n 1 , m + y U n 1 , n 1 m + x U n 1 , m 1 y U n 1 , n m U n 2 , m 1
U n m = R n μ ( r ) cos μ θ = r R n 1 μ 1 ( r ) cos μ θ + r R n 1 μ + 1 ( r ) cos μ θ R n 2 μ ( r ) cos μ θ = r R n 1 μ 1 ( r ) cos ( ( μ 1 ) θ + θ ) + r R n 1 μ + 1 ( r ) cos ( ( μ + 1 ) θ θ ) R n 2 μ ( r ) cos μ θ = r R n 1 μ 1 ( r ) ( cos ( μ 1 ) θ cos θ sin ( μ 1 ) θ sin θ ) + r R n 1 μ + 1 ( r ) ( cos ( μ + 1 ) θ cos θ + sin ( μ + 1 ) θ sin θ ) R n 2 μ ( r ) cos μ θ = x U n 1 , m + y U n 1 , n 1 m + x U n 1 , m 1 y U n 1 , n m U n 2 , m 1
U n , m = x U n 1 , m + y U n 1 , n 1 m + x U n 1 , m 1 y U n 1 , n m U n 2 , m 1
U n , 0 = x U n 1 , 0 + y U n 1 , n 1   ,   f o r   m = 0
U n , n = x U n 1 , n 1 y U n 1 , 0   ,   f o r   m = n
U n , m = y U n 1 , n 1 m + x U n 1 , m 1 y U n 1 , n m U n 2 , m 1 ,   f o r   n   o d d   a n d   m = n 1 2
U n , m = x U n 1 , m + y U n 1 , n 1 m + x U n 1 , m 1 U n 2 , m 1 ,   f o r   n   o d d   a n d   m = n 1 2 + 1
U n , m = 2 x U n 1 , m + 2 y U n 1 , m 1 U n 2 , m 1   ,   f o r   n   e v e n   a n d   m = n 2
U 00 = 1     ,     U 10 = y     ,     U 11 = x                 .
Z n μ ( x , y ) = R n μ ( cos μ θ + i sin μ θ )
Z n μ x = Z n 2 μ x + n ( Z n 1 μ 1 + Z n 1 μ + 1 )
Z n μ y = Z n 2 μ y + i n ( Z n 1 μ 1 Z n 1 μ + 1 )               .
Z n μ = U n , n + μ 2 + i U n , n μ 2
U n , n m x = n U n 1 , n m 1 + n U n 1 , n m + U n 2 , n m 1 x
U n , m x = n U n 1 , m + n U n 1 , m 1 + U n 2 , m 1 x                               .
U n , m y = n U n 1 , n m 1 n U n 1 , n m + U n 2 , m 1 y                               .
U n , 0 x = n U n 1 , 0 U n , 0 y = n U n 1 , n 1 }   f o r   m = 0                     ,
U n , n x = n U n 1 , n 1 U n , n y = n U n 1 , 0 }   f o r   m = n                     ,
U n , m x = n U n 1 , m 1 + U n 2 , m 1 x U n , m y = n U n 1 , n m 1 n U n 1 , n m + U n 2 , m 1 y }   f o r   n   o d d   a n d   m = n 1 2           ,
U n , m x = n U n 1 , m + n U n 1 , m 1 + U n 2 , m 1 x U n , m y = n U n 1 , n m 1 + U n 2 , m 1 y }   f o r   n   o d d   a n d   m = n 1 2 + 1   ,
U n , m x = 2 n U n 1 , m + U n 2 , m 1 x U n , m y = 2 n U n 1 , n m 1 + U n 2 , m 1 y }   f o r   n   e v e n   a n d   m = n 2             .
U 00 x = U 00 y = 0   ,     U 10 x = U 11 y = 0   ,     U 11 x = U 10 y = 1         .
ε a n g = 1.281 10 15 m                                   .
f ( x , y ) = n = 0 20 m = 0 n a n m U n m ( x , y )
a n m = sin ( 100 m n 2 + 0.1 n + 1 )                     .
Select as filters


Select Topics Cancel
© Copyright 2024 | Optica Publishing Group. All rights reserved, including rights for text and data mining and training of artificial technologies or similar technologies.