Programming, Numerics and Optimization
Dr. Łukasz Jankowski
This is a one-semester course (30 hours) that is devoted to the basic mathematical and programming
techniques which are indispensable for a researcher in engineering.
Objectives The course has two specific objectives:
Abilities after completing the course
- To introduce the principles of numerical computations (conditioning, stability, etc.), as well as
selected numerical techniques for linear systems, ordinary differential equations and (structural)
- To provide a foundation for implementing some of these techniques in any programming language
(C/C++ is used within the course).
Assessment will be based on homeworks
- The students will obtain a broad picture of commonly used numerical techniques for linear
systems, ordinary differential equations and (structural) optimization.
- The students will achieve a general understanding of the internals/pitfalls of frequently used
functions of mathematical/engineering software packages. As a result, they should be able to
use these functions more consciously and less in a black-box manner.
- In their practice, the students will sooner or later encounter problems that are too large, too fine
or that run too slow to be fully coded using standard mathematical software packages (Matlab,
Mathematica, Scilab, etc.). The course will prepare the students for solving such problems in
general-purpose programming languages.
Lecture notes and the homeworks are available on Internet at http://www.ippt.gov.pl/~ljank/
Contents The course consists of three parts:
- Basics: types and variables, operators, control flow statements, functions, pointers, arrays,
structures, lists, trees, command line arguments
- Object-oriented programming: objects and classes, creating and destroying objects, over-
loaded operators, STL vector class
- Basics: number representations, arithmetic errors, problems and algorithms, problem con-
ditioning, algorithm stability
- Numerical integration of ordinary differential equations (ODEs): basics, explicit one-step
methods, implicit one-step methods, multistep methods
- Linear systems: direct and iterative methods, least-squares problems, conditioning, regu-
larization, large systems; linear integral equations
- Optimization in structural engineering, sensitivity analysis: optimization problems, objec-
tive function, variables, constraints, sensitivity analysis, structural optimization
- Unconstrained optimization: stop conditions, rate/order of convergence, line search and
trust region methods, search directions and step size, 1D optimization, zero order methods,
steepest descent, conjugate gradient methods, Newton methods, quasi-Newton methods,
- Constrained optimization: imposing constraints, types of problems, linear programming
- Heuristic methods: coupled local minimizers, Nelder-Mead method, simulated annealing,
evolutionary algorithms, swarm intelligence, artificial neural networks