Wigner-D functions play the role of sine and cosine waves for rotations. Weighted sums of them can represent any square-integrable function on the rotation group \(\mathrm{SO}(3)\).
Each function has a non-negative degree \(n\) and two orders \(k\) and \(l\), both between \(-n\) and \(n\). The command WignerD evaluates a complete matrix of orders at once.
Evaluate one degree
A real number passed to WignerD is the second Euler angle \(\beta\). The result below contains all Wigner-d functions of degree one at \(\beta=90\) degrees.
beta = 90 * degree;
d = WignerD(beta,1)d =
0.5000 -0.7071 -0.5000
0.7071 -0.0000 0.7071
-0.5000 -0.7071 0.5000The rows and columns correspond to \(k=-1,0,1\) and \(l=-1,0,1\), respectively. In particular, the central value is zero at 90 degrees, while the corner values have magnitude \(0.5\).
Passing a rotation instead evaluates the generally complex Wigner-D functions. The 'normalize' flag selects MTEX's \(L_2\) normalization.
R = rotation.byEuler(20*degree,40*degree,10*degree);
W = WignerD(R,1,'normalize')W =
1.3245 + 0.7647i 0.1367 - 0.7753i 0.1995 - 0.0352i
0.2693 - 0.7398i 1.3268 + 0.0000i 0.2693 + 0.7398i
0.1995 + 0.0352i 0.1367 + 0.7753i 1.3245 - 0.7647iFollow the Wigner-d curves
The Wigner-d functions are ordinary functions of the single angle \(\beta\), so they can be drawn directly. Here are three entries from the degree-one matrix.
beta = linspace(0,pi,181);
d = zeros(numel(beta),3);
for j = 1:numel(beta)
Dj = WignerD(beta(j),1);
d(j,:) = [Dj(1,1) Dj(2,2) Dj(1,3)];
end
plot(beta./degree,d,'linewidth',2)
xlim([0 180]); xlabel('beta in degree')
legend('d^1_{-1,-1}','d^1_{0,0}','d^1_{-1,1}', ...
'location','best')
The first curve decreases from 1 to 0. The central curve crosses zero at 90 degrees, while the corner entry decreases from 0 to -1. These smooth shapes arise because the functions are polynomials in \(\cos(\beta/2)\) and \(\sin(\beta/2)\). Series in Wigner-d functions therefore converge quickly for smooth functions.
Build one basis function
The Wigner-D functions form an orthonormal basis of \(L_2(\mathrm{SO}(3))\). MTEX stores a weighted series in this basis as an SO3FunHarmonic object.
Its coefficient vector starts with the degree-zero block. The next nine entries are the degree-one matrix, stored one column at a time. The vector below therefore selects \(D_1^{1,-1}\).
F = SO3FunHarmonic([0;0;0;1]);
seriesValue = F.eval(R)seriesValue =
0.1995 + 0.0352iThe selected coefficient is row 3 and column 1 of the normalized matrix W above. Both evaluations give approximately 0.1995 + 0.0352i.
directValue = W(3,1)
comparisonError = abs(seriesValue-directValue)directValue =
0.1995 + 0.0352i
comparisonError =
1.4913e-13Normalization
Several normalizations of Wigner-D functions occur in the literature. MTEX defines the \(L_2\) norm by
\[ \|f\|_2 = \left(\frac{1}{8\pi^2}\int_{\mathrm{SO}(3)} \lvert f(\mathbf{R})\rvert^2\,\mathrm{d}\mathbf{R}\right)^{1/2}. \]
With this measure, the constant function \(f=1\) has norm 1. Every normalized Wigner-D function also has \(\|D_n^{k,l}\|_2=1\).
norm(F)ans =
1The section Integration and Norms explains integration and norms for rotational functions in more detail.
The maths behind Wigner-D functions
In the Matthies ZYZ convention, write a rotation as \(\mathbf{R}=\mathbf{R}(\alpha,\beta,\gamma)\). MTEX defines the \(L_2\)-normalized Wigner-D function by
\[ D_n^{k,l}(\mathbf{R})=\sqrt{2n+1}\, \mathrm{e}^{-\mathrm{i}k\gamma}\,d_n^{k,l}(\beta)\, \mathrm{e}^{-\mathrm{i}l\alpha}. \]
The real-valued Wigner-d function \(d_n^{k,l}\colon[0,\pi]\to\mathbb{R}\) is defined through the Jacobi polynomial \(P_s^{a,b}\) by
\[ d_n^{k,l}(\beta)=(-1)^\nu \binom{2n-s}{s+a}^{\frac{1}{2}} \binom{s+b}{b}^{-\frac{1}{2}} \left(\frac{\sin\beta}{2}\right)^a \left(\frac{\cos\beta}{2}\right)^b P_s^{a,b}(\cos\beta), \]
where \(a=|k-l|\), \(b=|k+l|\), and \(s=n-\max\{|k|,|l|\}\). The sign exponent is
\[ \nu=\begin{cases} \min\{0,k\}+\min\{0,l\}, & \text{if }l\geq k,\\ \min\{0,k\}+\min\{0,l\}+k+l, & \text{otherwise}. \end{cases} \]
How the MTEX convention differs
MTEX's definition differs slightly from other common definitions. It is compatible with the spherical harmonics, which form an orthonormal basis on the 2-sphere and are used to build harmonic spherical functions.
- The orders \(k\) and \(l\) are interchanged in the exponential factors compared with common definitions.
- The factor \(\sqrt{2n+1}\) gives each \(D_n^{k,l}\) unit \(L_2\) norm.
- The sign of \(d_n^{k,l}\) includes the contribution \(\min\{0,k\}+\min\{0,l\}\) through \((-1)^\nu\).
- MTEX parametrizes a Wigner-d function by the second Euler angle \(\beta\). Thus MTEX's \(d_n^{k,l}(\beta)\) corresponds to \(d_n^{k,l}(x)\) with \(x=\cos(\beta)\) in definitions that use \(x\).
Composition and symmetry
For each degree \(n\), the Wigner-D functions are the matrix elements of a representation \(D_n\colon\mathrm{SO}(3)\to \mathbb{C}^{(2n+1)\mathbin{\times}(2n+1)}\). The representation is a group homomorphism. With MTEX's order and normalization conventions,
\[ D_n(\mathbf{R}\mathbf{Q})=\frac{1}{\sqrt{2n+1}} D_n(\mathbf{Q})D_n(\mathbf{R}), \]
and hence
\[ D_n^{k,l}(\mathbf{R}\mathbf{Q})= \frac{1}{\sqrt{2n+1}}\sum_{j=-n}^{n} D_n^{k,j}(\mathbf{Q})D_n^{j,l}(\mathbf{R}). \]
Inversion exchanges the two orders and complex conjugates the value:
\[ D_n^{k,l}(\mathbf{R})= \overline{D_n^{l,k}(\mathbf{R}^{-1})}. \]
The Wigner-d functions also satisfy several useful symmetries:
\[ d_n^{k,l}(\beta)=d_n^{-k,-l}(\beta) =(-1)^{k+l}d_n^{l,k}(\beta) =(-1)^{k+l}d_n^{-l,-k}(\beta), \]
\[ d_n^{k,l}(\beta)=(-1)^{n+k+l}d_n^{-k,l}(\pi-\beta) =(-1)^{n+k+l}d_n^{k,-l}(\pi-\beta), \]
\[ d_n^{k,l}(\beta)=(-1)^{k+l}d_n^{k,l}(-\beta). \]
References
- D. A. Varshalovich, A. N. Moskalev, and V. K. Khersonskii, Quantum Theory of Angular Momentum, World Scientific, 1988, gives common Wigner-D definitions against which MTEX's order, sign, and normalization conventions can be compared.
Citing this page.
This page is part of the documentation of
MTEX, a free and open
source MATLAB toolbox for analyzing and modeling crystallographic textures.
It was written by The MTEX Developers and is published at
https://mtex-toolbox.github.io/WignerFunctions.html.
If you use MTEX, or reuse text or figures from this page, in your research,
please cite
F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63
BibTeX
@article{bachmann2010mtex,
author = {F. Bachmann and R. Hielscher and H. Schaeben},
title = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
journal = {Solid State Phenomena},
volume = {160},
pages = {63-68},
year = {2010},
doi = {10.4028/www.scientific.net/SSP.160.63},
url = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}
Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.