Tutorial: Learning Julia
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