File Exchange

image thumbnail

Trebuchet Range Simulation and Optimization

version (240 KB) by James Allison
Model of a simple trebuchet that predicts projectile range based on fulcrum position & launch angle.


Updated 06 Apr 2012

View License

This submission provides two main files: treb.m and plot_treb.m.

treb.m predicts the projectile range of a simple trebuchet given its fulcrum position and release angle. Other parameters are held fixed (but can be adjusted by the user). ode45 is used to simulate the dynamic system, including event detection for projectile release and landing.

plot_treb.m samples treb.m to gather range data and then plots it to visualize range as a function of fulcrum position and release angle.

treb.m is intended to be used with an optimization algorithm (e.g., fmincon - bound constraints should be used). The range plot is useful for visualizing the nonsmoothness in objective function that results from discrete elements of the system (such as limits on how high the trebuchet mass can be raised). This nonsmoothness can cause difficulty with gradient-based optimization. Choosing a good starting point that avoids this nonsmoothness helps, but it is also possible to impose the geometric limits as optimization constraints instead of satisfying them implicitly in the simulation, eliminating nonsmoothness from the objective function.

A handwritten derivation of the model is also provided (TrebuchetDerivation.pdf) that includes both the trebuchet model and a projectile model using parameters appropriate for a golf ball.

This model corresponds to an example video created for ME 149 (Engineering System Design Optimization), a graduate course taught in the Mechanical Engineering department at Tufts University. The video can be viewed at:

Cite As

James Allison (2019). Trebuchet Range Simulation and Optimization (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (3)

Andy - I'm glad to hear that this is useful. I use an expanded trebuchet project at several levels. I teach an introductory freshman engineering class where students assemble and test their own trebuchets, but have to make several design decisions. They learn the value of model-based design by using SimMechanics models to tune their trebuchet designs. Physical trebuchet performance goes way up across the board after students use the SimMechanics models. We also use the trebuchets at the UIUC Engineering Open House (a large community event focused on K-12 students), and also at local elementary schools with K, 1st, and 3rd grade students.

You can see some photos of these trebuchets by going to:

The SimMechanics model is available from:

Student instructions are available from:

At some point I hope to publish the plan for the trebuchet kits so that others can use them. The unique thing about these kits is the level of adjustability, which makes it possible for students to work through design decisions.


I plan to use it in a 4/5 STEM class soon (at T.J. Oshie's alma mater!). Probably a bit much for them, but I like it, and it is something to work with. Thanks.

MATLAB Release Compatibility
Created with R2011b
Compatible with any release
Platform Compatibility
Windows macOS Linux