Banner image

Hello world in Julia

println("Hello world")

Plotting tangent to sine curve

import Pkg; Pkg.add("Plots"); Pkg.add("ForwardDiff")
using Plots
import ForwardDiff as FD

function first_order_taylor(f::Function, x_bar::Float64, x::Float64)::Float64
      return f(x_bar) + FD.derivative(f, x_bar) * (x - x_bar)
end

let
      x = -2*pi:0.01:2*pi
      y = sin.(x)
      x_bar = randn()

      tangent_at_xbar = [first_order_taylor(sin, x_bar, x[i]) for i=1:length(x)]

      scatter([x_bar], [sin(x_bar)])
      plot!(x, y)
      plot!(x, tangent_at_xbar)
end

Concatenate matrices in block diagonal form

cat(I(3),-I(3); dims=(1,2))

OCRL

  • Lec 1 + Continuous time dynamics + Stability of equilibria
  • Lec 2 + Discretizing continuous ODEs + Explicit integrators (Euler, Mid-point, RK4) + Implicit integrators (Backward Euler)
  • Lec 3 + Root finding (Fixed-point iteration, Newton Method) + Minimization + Regularization
  • Lec 4 + Line Search (Armijo’s rule) + Equality constraints (Gauss-Newton Method) + Inequality constraints + KKT conditions
  • Lec 5 + Algorithms (Active-set, Barrier/Interior point, Penalty, Augmented Lagrangian) + Quadratic program + Merit function
  • Lec 6 + Deterministic Optimal Control + Pontryagin’s Minimum Principle