1. Practical course on computing derivatives in code
- Author
-
Craig Schroeder
- Subjects
Theoretical computer science ,Automatic differentiation ,Computer science ,Multivariable calculus ,Work (physics) ,020207 software engineering ,010103 numerical & computational mathematics ,02 engineering and technology ,01 natural sciences ,Potential energy ,Variety (cybernetics) ,Course (navigation) ,Computer graphics ,0202 electrical engineering, electronic engineering, information engineering ,Code (cryptography) ,0101 mathematics ,Second derivative - Abstract
Derivatives occur frequently in computer graphics and arise in many different contexts. Gradients and often Hessians of objective functions are required for efficient optimization. Gradients of potential energy are used to compute forces. Constitutive models are frequently formulated from an energy density, which must be differentiated to compute stress. Hessians of potential energy or energy density are needed for implicit integration. As the methods used in computer graphics become more accurate and sophisticated, the complexity of the functions that must be differentiated also increases. The purpose of this course is to show that it is practical to compute derivatives even for functions that may seem impossibly complex. This course provides practical strategies and techniques for planning, computing, testing, debugging, and optimizing routines for computing first and second derivatives of real-world routines. This course will also introduce and explore auto differentiation, which encompasses a variety of techniques for obtaining derivatives automatically. The goal of this course is not to introduce the concept of derivatives, how to use them, or even how to calculate them per se. This is not intended to be a calculus course; we will assume that our audience is familiar with multivariable calculus. Instead, the emphasis is on implementing derivatives of complicated computational procedures in computer programs and actually getting them to work.
- Published
- 2022