xiaohongshu
xiaohongshu
bifurcation
Hopf bifurcation detection for dynamical system state transitions with GF(3) phase portraits
Full skill instructions
Detects and navigates bifurcation points in dynamical systems where qualitative behavior changes.
Trit: 0 (ERGODIC - Coordinator between stable states) Color: #9966FF (Purple - neutral zone bridging warm/cold)
| Type | Description | GF(3) Mapping |
|---|---|---|
| Saddle-Node | Two equilibria collide and annihilate | PLUS ↔ MINUS collision |
| Hopf | Equilibrium → limit cycle | ERGODIC spawns oscillation |
| Pitchfork | Symmetry-breaking | One ERGODIC → two ±PLUS/MINUS |
| Transcritical | Exchange of stability | PLUS ↔ MINUS swap roles |
| Period-Doubling | Route to chaos | Trit cascade: 0 → 1 → -1 → 0... |
import numpy as np
from scipy.linalg import eig
def detect_hopf(jacobian_fn, params, param_name, param_range):
"""
Detect Hopf bifurcation by finding where eigenvalues cross imaginary axis.
At Hopf bifurcation:
- Pair of complex conjugate eigenvalues
- Real part crosses zero
- Imaginary part nonzero (oscillation frequency)
"""
bifurcation_points = []
for p in param_range:
params[param_name] = p
J = jacobian_fn(params)
eigenvalues = eig(J)[0]
# Find complex conjugate pairs
for ev in eigenvalues:
if np.abs(np.imag(ev)) > 1e-6: # Has imaginary part
if np.abs(np.real(ev)) < 1e-4: # Real part near zero
bifurcation_points.append({
'param': p,
'eigenvalue': ev,
'frequency': np.abs(np.imag(ev)),
'type': 'hopf'
})
return bifurcation_points
def gf3_phase_portrait(system_fn, x_range, y_range, trit_classifier):
"""
Generate phase portrait with GF(3) coloring.
Each region colored by dominant behavior:
- PLUS (+1): Expanding/generating (warm hues)
- ERGODIC (0): Neutral/cycling (neutral hues)
- MINUS (-1): Contracting/validating (cold hues)
"""
X, Y = np.meshgrid(x_range, y_range)
U, V = system_fn(X, Y)
# Classify each point by local behavior
trits = np.zeros_like(X)
for i in range(X.shape[0]):
for j in range(X.shape[1]):
trits[i,j] = trit_classifier(U[i,j], V[i,j])
# Color map: -1 → blue, 0 → green, +1 → red
colors = {-1: '#0066FF', 0: '#00FF66', 1: '#FF6600'}
return X, Y, U, V, trits, colors
#!/usr/bin/env bb
(require '[babashka.process :as p])
(defn logistic-map [r x]
(* r x (- 1 x)))
(defn iterate-map [f x0 n-transient n-samples]
"Iterate map, discard transient, collect samples"
(let [trajectory (iterate (partial f) x0)
post-transient (drop n-transient trajectory)]
(take n-samples post-transient)))
(defn bifurcation-diagram [r-range x0 n-transient n-samples]
"Generate bifurcation diagram data"
(for [r r-range]
{:r r
:attractors (distinct
(iterate-map #(logistic-map r %) x0 n-transient n-samples))
:period (count (distinct
(iterate-map #(logistic-map r %) x0 n-transient n-samples)))}))
;; Detect period-doubling cascade (route to chaos)
(defn period-doubling-points [diagram]
"Find r values where period doubles"
(loop [prev nil
points []
remaining diagram]
(if (empty? remaining)
points
(let [curr (first remaining)
period (:period curr)]
(if (and prev (= (* 2 (:period prev)) period))
(recur curr (conj points (:r curr)) (rest remaining))
(recur curr points (rest remaining)))))))
class BifurcationMonitor:
"""
Monitor system for bifurcation events in real-time.
"""
def __init__(self, state_dim, history_len=100):
self.state_dim = state_dim
self.history = []
self.history_len = history_len
self.current_regime = 'unknown'
def update(self, state, params):
self.history.append({'state': state, 'params': params})
if len(self.history) > self.history_len:
self.history.pop(0)
# Detect regime changes
new_regime = self._classify_regime()
if new_regime != self.current_regime:
self._on_bifurcation(self.current_regime, new_regime)
self.current_regime = new_regime
def _classify_regime(self):
"""Classify current dynamical regime"""
if len(self.history) < 10:
return 'transient'
states = np.array([h['state'] for h in self.history[-50:]])
variance = np.var(states, axis=0)
if np.all(variance < 1e-6):
return 'fixed_point' # MINUS: stable
elif self._is_periodic(states):
return 'limit_cycle' # ERGODIC: oscillating
else:
return 'chaotic' # PLUS: generating complexity
def _is_periodic(self, states, tol=1e-3):
"""Check if trajectory is periodic"""
# Simple periodicity check via autocorrelation
for period in range(2, len(states)//2):
if np.allclose(states[:-period], states[period:], atol=tol):
return True
return False
def _on_bifurcation(self, old_regime, new_regime):
"""Handle bifurcation event"""
trit_map = {
'fixed_point': -1, # MINUS: stable attractor
'limit_cycle': 0, # ERGODIC: periodic orbit
'chaotic': 1 # PLUS: strange attractor
}
old_trit = trit_map.get(old_regime, 0)
new_trit = trit_map.get(new_regime, 0)
print(f"BIFURCATION: {old_regime} ({old_trit}) → {new_regime} ({new_trit})")
print(f"GF(3) delta: {new_trit - old_trit}")
When analyzing bifurcations, deploy three parallel agents:
PLUS (+1) Agent: Explore parameter space forward (increase control parameter)
ERGODIC (0) Agent: Monitor current state, detect oscillations
MINUS (-1) Agent: Analyze stability, compute Lyapunov exponents
Conservation: +1 + 0 + (-1) = 0 ✓
;; In ruler-maximal session initialization
(defn check-skill-bifurcation [skill-state]
"Detect if skill loading pattern is approaching bifurcation"
(let [usage-variance (variance (vals (:usage-counts skill-state)))
load-frequency (/ (count (:loaded-skills skill-state))
(:session-duration skill-state))]
(cond
(< usage-variance 0.1) :fixed-point ;; Stable usage pattern
(periodic? (:load-history skill-state)) :limit-cycle ;; Cyclic loading
:else :exploring))) ;; Still exploring skill space
# Analyze system for bifurcations
bb -e '(bifurcation/analyze system params)'
# Generate bifurcation diagram
bb scripts/bifurcation_diagram.bb --param r --range "2.5:4.0:0.001"
# Monitor real-time state transitions
bb scripts/bifurcation_monitor.bb --system lorenz
dynamical-systems (0): General dynamical systems theorychaos-theory (+1): Strange attractors, sensitivity to initial conditionsstability-analysis (-1): Lyapunov exponents, basin boundariesruler-maximal (0): Uses bifurcation for skill state transitionsgay-mcp (0): GF(3) color mapping for phase portraitsThis skill connects to Software Design for Flexibility (Hanson & Sussman, 2021):
Concepts: autonomous agent, game, synthesis
bifurcation (○) + SDF.Ch10 (+) + [balancer] (−) = 0
Skill Trit: 0 (ERGODIC - coordination)
Adventure games synthesize techniques. This skill integrates multiple patterns.
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience