ifs_fractal — MATH construct op

• Data kinds: कोई नहीं → pairs (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)

• Call: import fullseye as fs; fs.ledger.ifs_fractal(preset='sierpinski', maps=None, n_points=60000, seed=0, burn_in=32) (implementation को सीधे call करना हो तो import mathops; mathops.ifs_fractal(preset='sierpinski', maps=None, n_points=60000, seed=0, burn_in=32), registry से लेना हो तो opsmath.get("ifs_fractal"))

उपयोग

iterated function system पर chaos game — dimension एक closed form है।

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

Picks a map at random (by weights, or by area if none are given), applies it, and plots the orbit. After a short burn-in the orbit lands on the attractor and stays there, so the picture is the attractor and not a path to it.

★Why this earns its place — two numbers that must agree and were computed two different ways:

• *Moran's equation.* For similarities with ratios r_i satisfying the open set condition, the similarity dimension d is the unique root of sum(r_i**d) == 1 — a closed form read off the maps, before anything is drawn. Sierpinski gives log 3 / log 2 = 1.5850, the Koch curve log 4 / log 3 = 1.2619, Cantor dust log 4 / log 3 as well.

• *Box counting.* This repository's existing fractal_dimension operator measures the dimension from the drawing. The two must agree, and they are not the same computation: one is algebra on the maps, the other is a regression on a rasterised image.

Hutchinson's theorem gives a third, structural check: the attractor is

invariant, so applying every map to the point set maps it back into

itself.

maps overrides preset: a sequence of (a, b, c, d, e, f) meaning x -> [[a, b], [c, d]] x + [e, f].

Returns pairs (n, 2).

Raises ValueError: unknown preset; a map that is not 6 numbers; a map that is not a contraction (spectral norm >= 1 — the orbit would escape); n_points below 1 or over the cap; negative burn_in.

HALCON: no operator.

पूरी 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 करते हैं)

• poc_theorems_as_pictures — py -3.11 examples/poc_theorems_as_pictures.py

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

neighbour_index_gaps · curve_locality

इसी category के (construct)

circle_packing_apollonian · ford_circles · phyllotaxis_pattern · neighbour_index_gaps · ifs_similarity_dimension · space_filling_curve · curve_locality


*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.