{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Julia Basics\n", "\n", "Here is some *italic text*. Even equations $\\int_0^1 \\frac{1}{1+x^2} dx$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I can use Julia as a calculator:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3 + 4" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "12" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3 * 4" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "81" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3^4" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.1411200080598672" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sin(3)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6035051827052901" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 / (1 + sin(7))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Variables" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "17" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = 17" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.9613974918795568" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = sin(x)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.74" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "α = 3.74 # Unicode variable names — type it by \"\\alpha\"" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "α̂₂ = 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A complex number $3 + 5i$:" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3 + 5im" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z = 3 + 5im" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-198 + 10im" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z^3" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.697507299833739 - 19.26050892528742im" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "exp(z) # compute eᶻ" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10.472508533940392 - 73.46062169567367im" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sin(z)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Online help:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "search: \u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22m \u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22mh \u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22md \u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22mc \u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22mpi \u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22mcos \u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22mcosd a\u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22m u\u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22mg i\u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22mf a\u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22mh a\u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22md\n", "\n" ] }, { "data": { "text/latex": [ "\\begin{verbatim}\n", "sin(x)\n", "\\end{verbatim}\n", "Compute sine of \\texttt{x}, where \\texttt{x} is in radians.\n", "\n", "\\rule{\\textwidth}{1pt}\n", "\\begin{verbatim}\n", "sin(A::AbstractMatrix)\n", "\\end{verbatim}\n", "Compute the matrix sine of a square matrix \\texttt{A}.\n", "\n", "If \\texttt{A} is symmetric or Hermitian, its eigendecomposition (\\href{@ref}{\\texttt{eigen}}) is used to compute the sine. Otherwise, the sine is determined by calling \\href{@ref}{\\texttt{exp}}.\n", "\n", "\\section{Examples}\n", "\\begin{verbatim}\n", "julia> sin(fill(1.0, (2,2)))\n", "2×2 Array{Float64,2}:\n", " 0.454649 0.454649\n", " 0.454649 0.454649\n", "\\end{verbatim}\n" ], "text/markdown": [ "```\n", "sin(x)\n", "```\n", "\n", "Compute sine of `x`, where `x` is in radians.\n", "\n", "---\n", "\n", "```\n", "sin(A::AbstractMatrix)\n", "```\n", "\n", "Compute the matrix sine of a square matrix `A`.\n", "\n", "If `A` is symmetric or Hermitian, its eigendecomposition ([`eigen`](@ref)) is used to compute the sine. Otherwise, the sine is determined by calling [`exp`](@ref).\n", "\n", "# Examples\n", "\n", "```jldoctest\n", "julia> sin(fill(1.0, (2,2)))\n", "2×2 Array{Float64,2}:\n", " 0.454649 0.454649\n", " 0.454649 0.454649\n", "```\n" ], "text/plain": [ "\u001b[36m sin(x)\u001b[39m\n", "\n", " Compute sine of \u001b[36mx\u001b[39m, where \u001b[36mx\u001b[39m is in radians.\n", "\n", " ────────────────────────────────────────────────────────────────────────────\n", "\n", "\u001b[36m sin(A::AbstractMatrix)\u001b[39m\n", "\n", " Compute the matrix sine of a square matrix \u001b[36mA\u001b[39m.\n", "\n", " If \u001b[36mA\u001b[39m is symmetric or Hermitian, its eigendecomposition (\u001b[36meigen\u001b[39m) is used to\n", " compute the sine. Otherwise, the sine is determined by calling \u001b[36mexp\u001b[39m.\n", "\n", "\u001b[1m Examples\u001b[22m\n", "\u001b[1m ≡≡≡≡≡≡≡≡≡≡\u001b[22m\n", "\n", "\u001b[36m julia> sin(fill(1.0, (2,2)))\u001b[39m\n", "\u001b[36m 2×2 Array{Float64,2}:\u001b[39m\n", "\u001b[36m 0.454649 0.454649\u001b[39m\n", "\u001b[36m 0.454649 0.454649\u001b[39m" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "?sin" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\"\u001b[36mα̂₂\u001b[39m\" can be typed by \u001b[36m\\alpha\\hat\\_2\u001b[39m\n", "\n", "search: \u001b[0m\u001b[1mα\u001b[22m\u001b[0m\u001b[1m̂\u001b[22m\u001b[0m\u001b[1m₂\u001b[22m\n", "\n" ] }, { "data": { "text/latex": [ "No documentation found.\n", "\n", "\\texttt{α̂₂} is of type \\texttt{Int64}.\n", "\n", "\\section{Summary}\n", "\\begin{verbatim}\n", "primitive type Int64 <: Signed\n", "\\end{verbatim}\n", "\\section{Supertype Hierarchy}\n", "\\begin{verbatim}\n", "Int64 <: Signed <: Integer <: Real <: Number <: Any\n", "\\end{verbatim}\n" ], "text/markdown": [ "No documentation found.\n", "\n", "`α̂₂` is of type `Int64`.\n", "\n", "# Summary\n", "\n", "```\n", "primitive type Int64 <: Signed\n", "```\n", "\n", "# Supertype Hierarchy\n", "\n", "```\n", "Int64 <: Signed <: Integer <: Real <: Number <: Any\n", "```\n" ], "text/plain": [ " No documentation found.\n", "\n", " \u001b[36mα̂₂\u001b[39m is of type \u001b[36mInt64\u001b[39m.\n", "\n", "\u001b[1m Summary\u001b[22m\n", "\u001b[1m ≡≡≡≡≡≡≡≡≡\u001b[22m\n", "\n", "\u001b[36m primitive type Int64 <: Signed\u001b[39m\n", "\n", "\u001b[1m Supertype Hierarchy\u001b[22m\n", "\u001b[1m ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡\u001b[22m\n", "\n", "\u001b[36m Int64 <: Signed <: Integer <: Real <: Number <: Any\u001b[39m" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "?α̂₂" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Vectors" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Array{Int64,1}:\n", " 1\n", " 17\n", " 32\n", " 15" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = [1, 17, 32, 15] # elements separated by commas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Array{Int64,1}` is a **1**-dimensional array (a \"vector\") of 64-bit integers (`Int64`)." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Array{Int64,1}:\n", " 15\n", " 2\n", " 6\n", " -9" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = [15, 2, 6, -9]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Array{Int64,1}:\n", " 16\n", " 19\n", " 38\n", " 6" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x + y" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "ename": "LoadError", "evalue": "MethodError: no method matching *(::Array{Int64,1}, ::Array{Int64,1})\nClosest candidates are:\n *(::Any, ::Any, !Matched::Any, !Matched::Any...) at operators.jl:538\n *(!Matched::LinearAlgebra.Adjoint{var\"#s826\",var\"#s8261\"} where var\"#s8261\"<:(AbstractArray{T,1} where T) where var\"#s826\"<:Number, ::AbstractArray{var\"#s825\",1} where var\"#s825\"<:Number) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/adjtrans.jl:283\n *(!Matched::LinearAlgebra.Transpose{T,var\"#s826\"} where var\"#s826\"<:(AbstractArray{T,1} where T), ::AbstractArray{T,1}) where T<:Real at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/adjtrans.jl:284\n ...", "output_type": "error", "traceback": [ "MethodError: no method matching *(::Array{Int64,1}, ::Array{Int64,1})\nClosest candidates are:\n *(::Any, ::Any, !Matched::Any, !Matched::Any...) at operators.jl:538\n *(!Matched::LinearAlgebra.Adjoint{var\"#s826\",var\"#s8261\"} where var\"#s8261\"<:(AbstractArray{T,1} where T) where var\"#s826\"<:Number, ::AbstractArray{var\"#s825\",1} where var\"#s825\"<:Number) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/adjtrans.jl:283\n *(!Matched::LinearAlgebra.Transpose{T,var\"#s826\"} where var\"#s826\"<:(AbstractArray{T,1} where T), ::AbstractArray{T,1}) where T<:Real at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/adjtrans.jl:284\n ...", "", "Stacktrace:", " [1] top-level scope at In[14]:1", " [2] include_string(::Function, ::Module, ::String, ::String) at ./loading.jl:1091", " [3] execute_code(::String, ::String) at /Users/stevenj/.julia/dev/IJulia/src/execute_request.jl:27", " [4] execute_request(::ZMQ.Socket, ::IJulia.Msg) at /Users/stevenj/.julia/dev/IJulia/src/execute_request.jl:86", " [5] #invokelatest#1 at ./essentials.jl:710 [inlined]", " [6] invokelatest at ./essentials.jl:709 [inlined]", " [7] eventloop(::ZMQ.Socket) at /Users/stevenj/.julia/dev/IJulia/src/eventloop.jl:8", " [8] (::IJulia.var\"#15#18\")() at ./task.jl:356" ] } ], "source": [ "x * y # not allowed: vector * vector is not a linear-algebra operation" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1×4 LinearAlgebra.Transpose{Int64,Array{Int64,1}}:\n", " 1 17 32 15" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transpose(x)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "106" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transpose(x) * y # allowed = a dot product" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Array{Int64,1}:\n", " 15\n", " 34\n", " 192\n", " -135" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x .* y # elementwise product" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Array{Float64,1}:\n", " 15.0\n", " 131072.0\n", " 7.958661109946401e24\n", " -2.05891132094649e14" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "float(y) .^ x " ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Array{Float64,1}:\n", " 15.0\n", " 2.0\n", " 6.0\n", " -9.0" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "float(y)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " 3.7\n", " 4.2\n", " 6.1" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z = [3.7, 4.2, 6.1]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " 1.0\n", " 4.2\n", " 37.209999999999994" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z .^ [0,1,2]" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Float64,2}:\n", " 1.0 3.7 13.69\n", " 1.0 4.2 17.64\n", " 1.0 6.1 37.21" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z .^ transpose([0,1,2]) # a Vandermonde matrix" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Float64,2}:\n", " 1.0 3.7 13.69\n", " 1.0 4.2 17.64\n", " 1.0 6.1 37.21" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z .^ [0 1 2]" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1×3 Array{Int64,2}:\n", " 0 1 2" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[0 1 2] # another row vector" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x = [1, 17, 32, 15]\n" ] }, { "data": { "text/plain": [ "17" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "@show x\n", "x[2] # second element" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2-element Array{Int64,1}:\n", " 17\n", " 32" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x[2:3] # elements 2 to 3 — \"slicing\"" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Int64,1}:\n", " 17\n", " 32\n", " 15" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x[2:4] # elements 2,3,4" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2:4" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2:4" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0:4" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0:4 # analogous to range(5) in Python" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5-element Array{Int64,1}:\n", " 0\n", " 1\n", " 2\n", " 3\n", " 4" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collect(0:4)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Array{Int64,1}:\n", " 3375\n", " 8\n", " 216\n", " -729" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y .^ 3 # elementwise cube" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Array{Float64,1}:\n", " 0.6502878401571168\n", " 0.9092974268256817\n", " -0.27941549819892586\n", " -0.4121184852417566" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sin.(y) # elementwise sin" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7-element Array{Float64,1}:\n", " 0.9895925568529049\n", " 0.43720897273586745\n", " 0.18692127626397315\n", " 0.5248400288925346\n", " 0.7725784322036084\n", " 0.2755926598616645\n", " 0.046487055457531845" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rand(7) # 7 random numbers in [0,1)" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7-element Array{Float64,1}:\n", " -0.7766970200438933\n", " 0.8375893322814147\n", " -1.0161992755239175\n", " -1.4656970471375195\n", " -0.2380323626857652\n", " 0.3324373560431813\n", " -0.2545786106508578" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "randn(7) # 7 normally-distributed random numbers (mean 0, std. dev. 1)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Array{Int64,1}:\n", " 0\n", " 2\n", " 4\n", " 6" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collect(0:2:7) # 0 to 7 in steps of 2" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "71-element Array{Float64,1}:\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " 0.9\n", " 1.0\n", " 1.1\n", " 1.2\n", " ⋮\n", " 5.9\n", " 6.0\n", " 6.1\n", " 6.2\n", " 6.3\n", " 6.4\n", " 6.5\n", " 6.6\n", " 6.7\n", " 6.8\n", " 6.9\n", " 7.0" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collect(0:0.1:7) # 0 to 7 in steps of 0.1" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0:0.1282282715750936:6.283185307179586" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = range(0, 2π, length=50) # 50 numbers from 0 to 2π, equally spaced" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "50-element Array{Float64,1}:\n", " 0.0\n", " 0.1282282715750936\n", " 0.2564565431501872\n", " 0.38468481472528077\n", " 0.5129130863003744\n", " 0.641141357875468\n", " 0.7693696294505615\n", " 0.8975979010256552\n", " 1.0258261726007487\n", " 1.1540544441758425\n", " 1.282282715750936\n", " 1.4105109873260295\n", " 1.538739258901123\n", " ⋮\n", " 4.872674319853557\n", " 5.00090259142865\n", " 5.129130863003744\n", " 5.257359134578837\n", " 5.385587406153931\n", " 5.513815677729025\n", " 5.642043949304118\n", " 5.770272220879212\n", " 5.898500492454305\n", " 6.026728764029399\n", " 6.154957035604492\n", " 6.283185307179586" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collect(r)" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0:6.28318537001144e-8:6.283185307179586" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = range(0, 2π, length=10^8) # not computed explicitly" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10-element Array{Float64,1}:\n", " 0.0\n", " 6.28318537001144e-8\n", " 1.256637074002288e-7\n", " 1.884955611003432e-7\n", " 2.513274148004576e-7\n", " 3.14159268500572e-7\n", " 3.769911222006864e-7\n", " 4.398229759008008e-7\n", " 5.026548296009151e-7\n", " 5.654866833010296e-7" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collect(r[1:10])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Matrices" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Int64,2}:\n", " 1 3 7\n", " 4 7 2\n", " 0 1 1" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = [1 3 7\n", " 4 7 2\n", " 0 1 1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that the type is `Array{Int64,2}` — the **2** here is for a 2d array, a \"matrix\"" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Int64,1}:\n", " 3\n", " 2\n", " 1" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = [3, 2, 1] # a vector" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Int64,1}:\n", " 16\n", " 28\n", " 3" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A * b # matrix-vector product" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Float64,2}:\n", " 0.238095 0.190476 -2.04762\n", " -0.190476 0.047619 1.2381\n", " 0.190476 -0.047619 -0.238095" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "inv(A)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's solve a linear system:\n", "$$\n", "Ax = b\n", "$$\n", "for $x = A^{-1} b$:" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " -0.9523809523809521\n", " 0.761904761904762\n", " 0.23809523809523808" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = inv(A) * b" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " 3.0000000000000004\n", " 2.0000000000000018\n", " 1.0" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A * x" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " 4.440892098500626e-16\n", " 1.7763568394002505e-15\n", " 0.0" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A * x - b # not zero due to roundoff errors — more about this in 18.330 or 18.335 in spring" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternatively:" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " -0.9523809523809528\n", " 0.7619047619047621\n", " 0.23809523809523808" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = A \\ b # effectively equivalent to inv(A) * b, but faster and better" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " 0.0\n", " 0.0\n", " 2.220446049250313e-16" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A * x - b # slightly different (smaller in this case)" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Float64,2}:\n", " 0.841471 0.14112 0.656987\n", " -0.756802 0.656987 0.909297\n", " 0.0 0.841471 0.841471" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sin.(A) # elementwise sine" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Float64,2}:\n", " -0.888487 -0.296349 6.91956\n", " 0.962251 0.264022 -3.59102\n", " -0.581735 0.240563 0.565852" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sin(A) # is this meaningful????" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In 18.06 (or maybe 18.S096), you'll eventually learn that $\\sin(A)$ is perfectly meaningful for a square matrix. It's defined by the Taylor series:\n", "$$\n", "\\sin(A) = A - \\frac{A^3}{3!} + \\frac{A^5}{5!} - \\frac{A^7}{7!} + \\cdots\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Functions" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "f (generic function with 1 method)" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function f(x)\n", " return 3x^3 - 5x^2 + sin(x) - x\n", "end" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "34.141120008059865" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(3)" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Float64,2}:\n", " 344.112 669.704 418.92\n", " 688.962 1421.26 956.409\n", " 87.4183 172.241 125.566" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(A)" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Float64,1}:\n", " -6.989077393122971\n", " -1.6472437070737587\n", " -0.24519753391390525" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.(x) # applied elementwise" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Float64,2}:\n", " -2.15853 33.1411 777.657\n", " 107.243 777.657 2.9093\n", " 0.0 -2.15853 -2.15853" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.(A)" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "g (generic function with 1 method)" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g(x) = 4x^3 - 5x^2 + 6x + 2 # one-line function definition" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Int64,2}:\n", " 7 83 1171\n", " 202 1171 26\n", " 2 7 7" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g.(A)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More Linear Algebra\n", "\n", "Most linear-algebra routines are in the `LinearAlgebra` standard library:" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [], "source": [ "using LinearAlgebra # similar to \"from LinearAlgebra import *\" in Python" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Complex{Float64},1}:\n", " -0.07094370057923445 - 1.5139635518670342im\n", " -0.07094370057923445 + 1.5139635518670342im\n", " 9.141887401158474 + 0.0im" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eigvals(A) # eigenvalues" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Eigen{Complex{Float64},Complex{Float64},Array{Complex{Float64},2},Array{Complex{Float64},1}}\n", "values:\n", "3-element Array{Complex{Float64},1}:\n", " -0.07094370057923445 - 1.5139635518670342im\n", " -0.07094370057923445 + 1.5139635518670342im\n", " 9.141887401158474 + 0.0im\n", "vectors:\n", "3×3 Array{Complex{Float64},2}:\n", " 0.834342-0.0im 0.834342+0.0im 0.42575+0.0im\n", " -0.454852+0.168903im -0.454852-0.168903im 0.898092+0.0im\n", " 0.0672889-0.252839im 0.0672889+0.252839im 0.110305+0.0im" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F = eigen(A) # eigenvectors and eigenvalues" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Array{Complex{Float64},1}:\n", " -0.07094370057923445 - 1.5139635518670342im\n", " -0.07094370057923445 + 1.5139635518670342im\n", " 9.141887401158474 + 0.0im" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F.values # the eigenvalues" ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Complex{Float64},2}:\n", " 0.834342-0.0im 0.834342+0.0im 0.42575+0.0im\n", " -0.454852+0.168903im -0.454852-0.168903im 0.898092+0.0im\n", " 0.0672889-0.252839im 0.0672889+0.252839im 0.110305+0.0im" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F.vectors # the eigenvectors" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearAlgebra.QRCompactWY{Float64,Array{Float64,2}}\n", "Q factor:\n", "3×3 LinearAlgebra.QRCompactWYQ{Float64,Array{Float64,2}}:\n", " -0.242536 0.748481 -0.617213\n", " -0.970143 -0.18712 0.154303\n", " 0.0 0.636209 0.771517\n", "R factor:\n", "3×3 Array{Float64,2}:\n", " -4.12311 -7.5186 -3.63803\n", " 0.0 1.57181 5.50134\n", " 0.0 0.0 -3.24037" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qr(A) # QR factorization = Gram-Schmidt orthogonalization" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LU{Float64,Array{Float64,2}}\n", "L factor:\n", "3×3 Array{Float64,2}:\n", " 1.0 0.0 0.0\n", " 0.25 1.0 0.0\n", " 0.0 0.8 1.0\n", "U factor:\n", "3×3 Array{Float64,2}:\n", " 4.0 7.0 2.0\n", " 0.0 1.25 6.5\n", " 0.0 0.0 -4.2" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lu(A) # Gaussian elimination = LU factorization" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SVD{Float64,Float64,Array{Float64,2}}\n", "U factor:\n", "3×3 Array{Float64,2}:\n", " -0.657006 0.742232 -0.132041\n", " -0.742831 -0.667249 -0.0545987\n", " -0.128629 0.0622125 0.989739\n", "singular values:\n", "3-element Array{Float64,1}:\n", " 10.249509228237182\n", " 4.9777646539733755\n", " 0.4116061587661843\n", "Vt factor:\n", "3×3 Array{Float64,2}:\n", " -0.354 -0.712177 -0.606208\n", " -0.387074 -0.478494 0.788173\n", " -0.851386 0.513661 -0.106278" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "svd(A)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# A little plotting\n", "\n", "You must load a plotting library, similar to Python.\n", "\n", "There are lots to choose from. If you are used to Python, you've probably used Matplotlib, and you can call Matplotlib in Julia via PyPlot:" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [], "source": [ "using PyPlot" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "1-element Array{PyCall.PyObject,1}:\n", " PyObject " ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(x, \"bo-\")" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "PyObject " ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = range(0, 2π, length=1000)\n", "y = sin.(3x + 4cos.(2x))\n", "plot(x / 2π, y, \"r-\")\n", "plot(x / 2π, y.^2, \"b-\")\n", "plot(x / 2π, 1 ./ sqrt.(1 .+ y.^2), \"b-\")\n", "xlabel(\"x / 2π\")\n", "ylabel(\"our funny function\")\n", "title(\"our second plot\")\n", "legend([L\"y\", L\"y^2\", L\"\\frac{1}{\\sqrt{1+y^2}}\"])" ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "search: \u001b[0m\u001b[1mp\u001b[22m\u001b[0m\u001b[1ml\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1mt\u001b[22m \u001b[0m\u001b[1mp\u001b[22m\u001b[0m\u001b[1ml\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1mt\u001b[22m3D \u001b[0m\u001b[1mp\u001b[22m\u001b[0m\u001b[1ml\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1mt\u001b[22mfile \u001b[0m\u001b[1mp\u001b[22m\u001b[0m\u001b[1ml\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1mt\u001b[22m_date \u001b[0m\u001b[1mp\u001b[22m\u001b[0m\u001b[1ml\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1mt\u001b[22m_trisurf \u001b[0m\u001b[1mp\u001b[22m\u001b[0m\u001b[1ml\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1mt\u001b[22m_surface \u001b[0m\u001b[1mp\u001b[22m\u001b[0m\u001b[1ml\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1mt\u001b[22m_wireframe\n", "\n" ] }, { "data": { "text/plain": [ "Plot y versus x as lines and/or markers.\n", "\n", "Call signatures::\n", "\n", " plot([x], y, [fmt], *, data=None, **kwargs)\n", " plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)\n", "\n", "The coordinates of the points or line nodes are given by *x*, *y*.\n", "\n", "The optional parameter *fmt* is a convenient way for defining basic\n", "formatting like color, marker and linestyle. It's a shortcut string\n", "notation described in the *Notes* section below.\n", "\n", ">>> plot(x, y) # plot x and y using default line style and color\n", ">>> plot(x, y, 'bo') # plot x and y using blue circle markers\n", ">>> plot(y) # plot y using x as index array 0..N-1\n", ">>> plot(y, 'r+') # ditto, but with red plusses\n", "\n", "You can use `.Line2D` properties as keyword arguments for more\n", "control on the appearance. Line properties and *fmt* can be mixed.\n", "The following two calls yield identical results:\n", "\n", ">>> plot(x, y, 'go--', linewidth=2, markersize=12)\n", ">>> plot(x, y, color='green', marker='o', linestyle='dashed',\n", "... linewidth=2, markersize=12)\n", "\n", "When conflicting with *fmt*, keyword arguments take precedence.\n", "\n", "\n", "**Plotting labelled data**\n", "\n", "There's a convenient way for plotting objects with labelled data (i.e.\n", "data that can be accessed by index ``obj['y']``). Instead of giving\n", "the data in *x* and *y*, you can provide the object in the *data*\n", "parameter and just give the labels for *x* and *y*::\n", "\n", ">>> plot('xlabel', 'ylabel', data=obj)\n", "\n", "All indexable objects are supported. This could e.g. be a `dict`, a\n", "`pandas.DataFame` or a structured numpy array.\n", "\n", "\n", "**Plotting multiple sets of data**\n", "\n", "There are various ways to plot multiple sets of data.\n", "\n", "- The most straight forward way is just to call `plot` multiple times.\n", " Example:\n", "\n", " >>> plot(x1, y1, 'bo')\n", " >>> plot(x2, y2, 'go')\n", "\n", "- Alternatively, if your data is already a 2d array, you can pass it\n", " directly to *x*, *y*. A separate data set will be drawn for every\n", " column.\n", "\n", " Example: an array ``a`` where the first column represents the *x*\n", " values and the other columns are the *y* columns::\n", "\n", " >>> plot(a[0], a[1:])\n", "\n", "- The third way is to specify multiple sets of *[x]*, *y*, *[fmt]*\n", " groups::\n", "\n", " >>> plot(x1, y1, 'g^', x2, y2, 'g-')\n", "\n", " In this case, any additional keyword argument applies to all\n", " datasets. Also this syntax cannot be combined with the *data*\n", " parameter.\n", "\n", "By default, each line is assigned a different style specified by a\n", "'style cycle'. The *fmt* and line property parameters are only\n", "necessary if you want explicit deviations from these defaults.\n", "Alternatively, you can also change the style cycle using the\n", "'axes.prop_cycle' rcParam.\n", "\n", "\n", "Parameters\n", "----------\n", "x, y : array-like or scalar\n", " The horizontal / vertical coordinates of the data points.\n", " *x* values are optional and default to `range(len(y))`.\n", "\n", " Commonly, these parameters are 1D arrays.\n", "\n", " They can also be scalars, or two-dimensional (in that case, the\n", " columns represent separate data sets).\n", "\n", " These arguments cannot be passed as keywords.\n", "\n", "fmt : str, optional\n", " A format string, e.g. 'ro' for red circles. See the *Notes*\n", " section for a full description of the format strings.\n", "\n", " Format strings are just an abbreviation for quickly setting\n", " basic line properties. All of these and more can also be\n", " controlled by keyword arguments.\n", "\n", " This argument cannot be passed as keyword.\n", "\n", "data : indexable object, optional\n", " An object with labelled data. If given, provide the label names to\n", " plot in *x* and *y*.\n", "\n", " .. note::\n", " Technically there's a slight ambiguity in calls where the\n", " second label is a valid *fmt*. `plot('n', 'o', data=obj)`\n", " could be `plt(x, y)` or `plt(y, fmt)`. In such cases,\n", " the former interpretation is chosen, but a warning is issued.\n", " You may suppress the warning by adding an empty format string\n", " `plot('n', 'o', '', data=obj)`.\n", "\n", "Other Parameters\n", "----------------\n", "scalex, scaley : bool, optional, default: True\n", " These parameters determined if the view limits are adapted to\n", " the data limits. The values are passed on to `autoscale_view`.\n", "\n", "**kwargs : `.Line2D` properties, optional\n", " *kwargs* are used to specify properties like a line label (for\n", " auto legends), linewidth, antialiasing, marker face color.\n", " Example::\n", "\n", " >>> plot([1,2,3], [1,2,3], 'go-', label='line 1', linewidth=2)\n", " >>> plot([1,2,3], [1,4,9], 'rs', label='line 2')\n", "\n", " If you make multiple lines with one plot command, the kwargs\n", " apply to all those lines.\n", "\n", " Here is a list of available `.Line2D` properties:\n", "\n", " agg_filter: a filter function, which takes a (m, n, 3) float array and a dpi value, and returns a (m, n, 3) array\n", " alpha: float\n", " animated: bool\n", " antialiased or aa: bool\n", " clip_box: `.Bbox`\n", " clip_on: bool\n", " clip_path: [(`~matplotlib.path.Path`, `.Transform`) | `.Patch` | None]\n", " color or c: color\n", " contains: callable\n", " dash_capstyle: {'butt', 'round', 'projecting'}\n", " dash_joinstyle: {'miter', 'round', 'bevel'}\n", " dashes: sequence of floats (on/off ink in points) or (None, None)\n", " drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n", " figure: `.Figure`\n", " fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n", " gid: str\n", " in_layout: bool\n", " label: object\n", " linestyle or ls: {'-', '--', '-.', ':', '', (offset, on-off-seq), ...}\n", " linewidth or lw: float\n", " marker: marker style\n", " markeredgecolor or mec: color\n", " markeredgewidth or mew: float\n", " markerfacecolor or mfc: color\n", " markerfacecoloralt or mfcalt: color\n", " markersize or ms: float\n", " markevery: None or int or (int, int) or slice or List[int] or float or (float, float)\n", " path_effects: `.AbstractPathEffect`\n", " picker: float or callable[[Artist, Event], Tuple[bool, dict]]\n", " pickradius: float\n", " rasterized: bool or None\n", " sketch_params: (scale: float, length: float, randomness: float)\n", " snap: bool or None\n", " solid_capstyle: {'butt', 'round', 'projecting'}\n", " solid_joinstyle: {'miter', 'round', 'bevel'}\n", " transform: `matplotlib.transforms.Transform`\n", " url: str\n", " visible: bool\n", " xdata: 1D array\n", " ydata: 1D array\n", " zorder: float\n", "\n", "Returns\n", "-------\n", "lines\n", " A list of `.Line2D` objects representing the plotted data.\n", "\n", "See Also\n", "--------\n", "scatter : XY scatter plot with markers of varying size and/or color (\n", " sometimes also called bubble chart).\n", "\n", "Notes\n", "-----\n", "**Format Strings**\n", "\n", "A format string consists of a part for color, marker and line::\n", "\n", " fmt = '[marker][line][color]'\n", "\n", "Each of them is optional. If not provided, the value from the style\n", "cycle is used. Exception: If ``line`` is given, but no ``marker``,\n", "the data will be a line without markers.\n", "\n", "Other combinations such as ``[color][marker][line]`` are also\n", "supported, but note that their parsing may be ambiguous.\n", "\n", "**Markers**\n", "\n", "============= ===============================\n", "character description\n", "============= ===============================\n", "``'.'`` point marker\n", "``','`` pixel marker\n", "``'o'`` circle marker\n", "``'v'`` triangle_down marker\n", "``'^'`` triangle_up marker\n", "``'<'`` triangle_left marker\n", "``'>'`` triangle_right marker\n", "``'1'`` tri_down marker\n", "``'2'`` tri_up marker\n", "``'3'`` tri_left marker\n", "``'4'`` tri_right marker\n", "``'s'`` square marker\n", "``'p'`` pentagon marker\n", "``'*'`` star marker\n", "``'h'`` hexagon1 marker\n", "``'H'`` hexagon2 marker\n", "``'+'`` plus marker\n", "``'x'`` x marker\n", "``'D'`` diamond marker\n", "``'d'`` thin_diamond marker\n", "``'|'`` vline marker\n", "``'_'`` hline marker\n", "============= ===============================\n", "\n", "**Line Styles**\n", "\n", "============= ===============================\n", "character description\n", "============= ===============================\n", "``'-'`` solid line style\n", "``'--'`` dashed line style\n", "``'-.'`` dash-dot line style\n", "``':'`` dotted line style\n", "============= ===============================\n", "\n", "Example format strings::\n", "\n", " 'b' # blue markers with default shape\n", " 'or' # red circles\n", " '-g' # green solid line\n", " '--' # dashed line with default color\n", " '^k:' # black triangle_up markers connected by a dotted line\n", "\n", "**Colors**\n", "\n", "The supported color abbreviations are the single letter codes\n", "\n", "============= ===============================\n", "character color\n", "============= ===============================\n", "``'b'`` blue\n", "``'g'`` green\n", "``'r'`` red\n", "``'c'`` cyan\n", "``'m'`` magenta\n", "``'y'`` yellow\n", "``'k'`` black\n", "``'w'`` white\n", "============= ===============================\n", "\n", "and the ``'CN'`` colors that index into the default property cycle.\n", "\n", "If the color is the only part of the format string, you can\n", "additionally use any `matplotlib.colors` spec, e.g. full names\n", "(``'green'``) or hex strings (``'#008000'``)." ] }, "execution_count": 125, "metadata": {}, "output_type": "execute_result" } ], "source": [ "?plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Multiple dispatch\n", "\n", "In an OOP language like Python or C++, given an object `o`, you would type `o.method(x,y)` to call a method, and it would choose the correct `method` based on the runtime (\"dynamic\") type of `o` (for a \"virtual\" method).\n", "\n", "In Julia, the analogous code would call `method(o, x, y)` — `o` is just one of the arguments. But Julia looks at the runtime (\"dynamic\") types of *all* the arguments to decide on the `method` to call.\n", "\n", "In this sense it is a strict superset of multiple dispatch. It is *not* equivalent to C++ overloading, because that is *static* overloading. There was [a nice talk about the differences between OOP, static overloading, and dynamic multiple dispatch](https://www.youtube.com/watch?v=kc9HwsxE1OY) at JuliaCon 2019 that I strongly encourage you to go watch." ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "foo (generic function with 1 method)" ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo(x, y) = x + y" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7" ] }, "execution_count": 131, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo(3, 4)" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [ { "ename": "LoadError", "evalue": "MethodError: no method matching +(::Array{Int64,2}, ::Int64)\nFor element-wise addition, use broadcasting with dot syntax: array .+ scalar\nClosest candidates are:\n +(::Any, ::Any, !Matched::Any, !Matched::Any...) at operators.jl:538\n +(!Matched::Missing, ::Number) at missing.jl:115\n +(!Matched::BigFloat, ::Union{Int16, Int32, Int64, Int8}) at mpfr.jl:378\n ...", "output_type": "error", "traceback": [ "MethodError: no method matching +(::Array{Int64,2}, ::Int64)\nFor element-wise addition, use broadcasting with dot syntax: array .+ scalar\nClosest candidates are:\n +(::Any, ::Any, !Matched::Any, !Matched::Any...) at operators.jl:538\n +(!Matched::Missing, ::Number) at missing.jl:115\n +(!Matched::BigFloat, ::Union{Int16, Int32, Int64, Int8}) at mpfr.jl:378\n ...", "", "Stacktrace:", " [1] foo(::Array{Int64,2}, ::Int64) at ./In[130]:1", " [2] top-level scope at In[132]:1", " [3] include_string(::Function, ::Module, ::String, ::String) at ./loading.jl:1091", " [4] execute_code(::String, ::String) at /Users/stevenj/.julia/dev/IJulia/src/execute_request.jl:27", " [5] execute_request(::ZMQ.Socket, ::IJulia.Msg) at /Users/stevenj/.julia/dev/IJulia/src/execute_request.jl:86", " [6] #invokelatest#1 at ./essentials.jl:710 [inlined]", " [7] invokelatest at ./essentials.jl:709 [inlined]", " [8] eventloop(::ZMQ.Socket) at /Users/stevenj/.julia/dev/IJulia/src/eventloop.jl:8", " [9] (::IJulia.var\"#15#18\")() at ./task.jl:356" ] } ], "source": [ "foo(A, 4)" ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "foo (generic function with 2 methods)" ] }, "execution_count": 133, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo(A::Matrix, y::Number) = A + y*I" ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Int64,2}:\n", " 101 3 7\n", " 4 107 2\n", " 0 1 101" ] }, "execution_count": 134, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo(A, 100)" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Array{Int64,2}:\n", " 2 6 14\n", " 8 14 4\n", " 0 2 2" ] }, "execution_count": 135, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo(A, A)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.7.1", "language": "julia", "name": "julia-1.7" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.5.0" } }, "nbformat": 4, "nbformat_minor": 4 }