fullseye

jones_apply — OPTICS polarization op

使い方

Push a Jones vector through a Jones matrix: [Ex', Ey'] = J @ [Ex, Ey].

jones is a (2, 2) matrix (complex, or real which is promoted) and state a 2-component complex Jones vector [Ex, Ey] of field amplitudes. Returns a (2,) complex128 vector — chain it through further elements, or hand it to :func:stokes_from_jones to get the observables.

Ground truth it reproduces exactly: Malus’s law — a linear polariser at theta on horizontal linear input returns amplitude cos(theta), hence intensity cos^2(theta), matching to 1e-15 over the full angle sweep; crossed polarisers return exactly [0, 0]; the identity matrix returns the input bit-identically.

Note the zero vector is a legal result, not an error: light blocked by crossed polarisers has zero amplitude. Downstream, :func:stokes_analyze is the op that refuses a zero-intensity Stokes vector, because there the degree of polarisation would be 0/0.

Raises ValueError: jones is not (2, 2), state is not a 1-D 2-vector, either is masked or non-finite, or the product overflows.

ファミリ共通の入力契約(fail-closed)

optics の全 op は入力を検証してから計算する(黙って通さない):

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(jones を入力に取れる)

stokes_from_jones

同カテゴリ(polarization)

jones_element · stokes_from_jones · mueller_element · mueller_apply · stokes_analyze


Provenance: optics.py — OPTICS operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.