cplx_joukowski — MATH complex op

• Data kinds: cpoints → cpoints

• Call: import fullseye as fs; fs.ledger.cplx_joukowski(z, c=1.0) (implementation को सीधे call करना हो तो import mathops; mathops.cplx_joukowski(z, c=1.0), registry से लेना हो तो opsmath.get("cplx_joukowski"))

उपयोग

Joukowski (Zhukovsky) conformal map w = z + c^2 / z।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

The classical aerofoil map (Zhukovsky 1910): the circle |z| = c folds onto the flat plate [-2c, 2c] of the real axis (z = c e^(i t) gives w = 2c cos t — exact, and what the tests pin); a circle of radius R > c centred at the origin maps to the ellipse with semi-axes R + c^2/R and R - c^2/R; and a circle through z = c whose centre is offset into the second quadrant maps to a cambered aerofoil with a cusped trailing edge — the reason the map exists.

Conformal (angle-preserving) everywhere except at z = ±c, where the derivative 1 - c^2/z^2 vanishes and angles are doubled — that is what creates the cusp, and it is a property of the map, not a defect.

Raises ValueError: a sample at z = 0 (the map's pole), a result that overflowed (a sample so close to 0 that c^2/z leaves float64 range), a non-finite or non-positive-real *c*, plus the usual shape and finiteness contracts.

HALCON: no operator (conformal maps are not part of its transform set).

पूरी family का input contract (fail-closed)

mathops के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):

• complex input से ValueError — float64 में ज़बरदस्ती बदलने पर imaginary part चुपचाप छूट जाता है (numpy केवल ComplexWarning देता है और "सही दिखने वाला पर गलत" real number लौटाता है)। .real/.imag/abs() स्पष्ट रूप से लिखें, या complex data संभालने वाले complexops का उपयोग करें।

• masked array (masked elements वाला) से ValueError — mask हटाकर नीचे के raw values इस्तेमाल करने वाला implicit conversion अस्वीकार है। भरना है या हटाना है, यह स्पष्ट रूप से बताएँ।

• हर input पर NaN/Inf से ValueError (गिनती बताकर अस्वीकार — क्योंकि यह पूरे परिणाम में फैल जाता है)।

• Shape सख़्त है: 1-D और 2-D को implicit रूप से promote या broadcast नहीं किया जाता (vector slot में matrix या matrix slot में vector देने पर ValueError; reshape स्पष्ट रूप से करें)।

• Size की सीमा: matrix लेने वाले ops और stat_histogram के bins, mathops.MAX_ELEMENTS (2^26 ≈ 6.7 करोड़ elements) से अधिक होने पर ValueError देते हैं।

उपयोग की विस्तृत guide

• math_metrology family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• math_complex — py -3.11 examples/math_complex.py

वे अगले ops जिनसे type जुड़ता है (cpoints को input के रूप में लेते हैं)

cplx_poly_eval · cplx_contour_integral · cplx_winding_number · cplx_cauchy_value · cplx_argument_principle · cplx_laurent_coeffs · cplx_mobius

इसी category के (complex)

cplx_contour_circle · cplx_poly_eval · cplx_contour_integral · cplx_winding_number · cplx_cauchy_value · cplx_argument_principle · cplx_laurent_coeffs · cplx_mobius


*Provenance: mathops.py — MATH operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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