Skip to main content

vip-ivp

A clean, intuitive way to model dynamical systems in Python.

🌿 A natural language for dynamic systems

Model continuous-time systems in pure Python, using simple, composable expressions that reflect the system's true structure.

🎛 Hybrid dynamics made simple

Seamlessly combine differential equations with event-driven behavior, resets, and termination logic — all in code.

🧠 For thinkers, builders, and researchers

Whether you're exploring ideas or publishing results, vip-ivp offers a lightweight, reliable foundation for simulation in Python.

🛤️ Designed with extensibility in mind

From hybrid logic to multiphysics modeling, the roadmap includes powerful abstractions like state machines, bond graphs, and discrete-time signals.

Interactive Bouncing Ball Simulation

Adjust the bouncing coefficient and minimum velocity using the sliders below to see how they affect the motion of the ball. The Python code and the corresponding plot are updated dynamically.

k = 0.7  # Bouncing coefficient
v_min = 0.01 # Minimum velocity need to bounce

# Create the system
acceleration = vip.temporal(-9.81)
velocity = vip.integrate(acceleration, x0=0)
height = vip.integrate(velocity, x0=1)

# Create the bouncing event
hit_ground = height.crosses(0, "falling")
velocity.reset_on(hit_ground, -0.8 * velocity)
vip.terminate_on(hit_ground & (abs(velocity) <= v_min))

# Solve the system
vip.solve(20, time_step=0.005)

Simulation Results

Ready to Get Started?

Explore our documentation and start building with vip-ivp today.

Get Started