{ "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": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3 + 4" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "12" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3 * 4" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "81" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3^4" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.1411200080598672" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sin(3)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6035051827052901" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 / (1 + sin(7))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Variables" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "17" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = 17" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.9613974918795568" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = sin(x)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.74" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "α = 3.74 # Unicode variable names — type it by \"\\alpha\"" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "α̂₂ = 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A complex number $3 + 5i$:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3 + 5im" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z = 3 + 5im" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-198 + 10im" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z^3" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.697507299833739 - 19.26050892528742im" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "exp(z) # compute eᶻ" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10.472508533940392 - 73.46062169567367im" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sin(z)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Online help:" ] }, { "cell_type": "code", "execution_count": 14, "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 \u001b[0m\u001b[1ms\u001b[22m\u001b[0m\u001b[1mi\u001b[22m\u001b[0m\u001b[1mn\u001b[22mcospi 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\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", "See also \\href{@ref}{\\texttt{sind}}, \\href{@ref}{\\texttt{sinpi}}, \\href{@ref}{\\texttt{sincos}}, \\href{@ref}{\\texttt{cis}}, \\href{@ref}{\\texttt{asin}}.\n", "\n", "\\section{Examples}\n", "\\begin{verbatim}\n", "julia> round.(sin.(range(0, 2pi, length=9)'), digits=3)\n", "1×9 Matrix{Float64}:\n", " 0.0 0.707 1.0 0.707 0.0 -0.707 -1.0 -0.707 -0.0\n", "\n", "julia> sind(45)\n", "0.7071067811865476\n", "\n", "julia> sinpi(1/4)\n", "0.7071067811865475\n", "\n", "julia> round.(sincos(pi/6), digits=3)\n", "(0.5, 0.866)\n", "\n", "julia> round(cis(pi/6), digits=3)\n", "0.866 + 0.5im\n", "\n", "julia> round(exp(im*pi/6), digits=3)\n", "0.866 + 0.5im\n", "\\end{verbatim}\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 Matrix{Float64}:\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", "See also [`sind`](@ref), [`sinpi`](@ref), [`sincos`](@ref), [`cis`](@ref), [`asin`](@ref).\n", "\n", "# Examples\n", "\n", "```jldoctest\n", "julia> round.(sin.(range(0, 2pi, length=9)'), digits=3)\n", "1×9 Matrix{Float64}:\n", " 0.0 0.707 1.0 0.707 0.0 -0.707 -1.0 -0.707 -0.0\n", "\n", "julia> sind(45)\n", "0.7071067811865476\n", "\n", "julia> sinpi(1/4)\n", "0.7071067811865475\n", "\n", "julia> round.(sincos(pi/6), digits=3)\n", "(0.5, 0.866)\n", "\n", "julia> round(cis(pi/6), digits=3)\n", "0.866 + 0.5im\n", "\n", "julia> round(exp(im*pi/6), digits=3)\n", "0.866 + 0.5im\n", "```\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 Matrix{Float64}:\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", " See also \u001b[36msind\u001b[39m, \u001b[36msinpi\u001b[39m, \u001b[36msincos\u001b[39m, \u001b[36mcis\u001b[39m, \u001b[36masin\u001b[39m.\n", "\n", "\u001b[1m Examples\u001b[22m\n", "\u001b[1m ≡≡≡≡≡≡≡≡\u001b[22m\n", "\n", "\u001b[36m julia> round.(sin.(range(0, 2pi, length=9)'), digits=3)\u001b[39m\n", "\u001b[36m 1×9 Matrix{Float64}:\u001b[39m\n", "\u001b[36m 0.0 0.707 1.0 0.707 0.0 -0.707 -1.0 -0.707 -0.0\u001b[39m\n", "\u001b[36m \u001b[39m\n", "\u001b[36m julia> sind(45)\u001b[39m\n", "\u001b[36m 0.7071067811865476\u001b[39m\n", "\u001b[36m \u001b[39m\n", "\u001b[36m julia> sinpi(1/4)\u001b[39m\n", "\u001b[36m 0.7071067811865475\u001b[39m\n", "\u001b[36m \u001b[39m\n", "\u001b[36m julia> round.(sincos(pi/6), digits=3)\u001b[39m\n", "\u001b[36m (0.5, 0.866)\u001b[39m\n", "\u001b[36m \u001b[39m\n", "\u001b[36m julia> round(cis(pi/6), digits=3)\u001b[39m\n", "\u001b[36m 0.866 + 0.5im\u001b[39m\n", "\u001b[36m \u001b[39m\n", "\u001b[36m julia> round(exp(im*pi/6), digits=3)\u001b[39m\n", "\u001b[36m 0.866 + 0.5im\u001b[39m\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 Matrix{Float64}:\u001b[39m\n", "\u001b[36m 0.454649 0.454649\u001b[39m\n", "\u001b[36m 0.454649 0.454649\u001b[39m" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "?sin" ] }, { "cell_type": "code", "execution_count": 15, "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\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\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\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": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "?α̂₂" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Vectors" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Vector{Int64}:\n", " 1\n", " 17\n", " 32\n", " 15" ] }, "execution_count": 16, "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": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Vector{Int64}:\n", " 15\n", " 2\n", " 6\n", " -9" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = [15, 2, 6, -9]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Vector{Int64}:\n", " 16\n", " 19\n", " 38\n", " 6" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x + y" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "ename": "LoadError", "evalue": "MethodError: no method matching *(::Vector{Int64}, ::Vector{Int64})\n\n\u001b[0mClosest candidates are:\n\u001b[0m *(::Any, ::Any, \u001b[91m::Any\u001b[39m, \u001b[91m::Any...\u001b[39m)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m\u001b[4moperators.jl:587\u001b[24m\u001b[39m\n\u001b[0m *(\u001b[91m::LinearAlgebra.Transpose{T, <:AbstractVector}\u001b[39m, ::AbstractVector{T}) where T<:Real\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mLinearAlgebra\u001b[39m \u001b[90m~/.julia/juliaup/julia-1.10.4+0.aarch64.apple.darwin14/share/julia/stdlib/v1.10/LinearAlgebra/src/\u001b[39m\u001b[90m\u001b[4madjtrans.jl:463\u001b[24m\u001b[39m\n\u001b[0m *(\u001b[91m::Union{LinearAlgebra.Adjoint{<:Any, <:StridedMatrix{T}}, LinearAlgebra.Transpose{<:Any, <:StridedMatrix{T}}, StridedMatrix{T}}\u001b[39m, ::StridedVector{S}) where {T<:Union{Float32, Float64, ComplexF64, ComplexF32}, S<:Real}\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mLinearAlgebra\u001b[39m \u001b[90m~/.julia/juliaup/julia-1.10.4+0.aarch64.apple.darwin14/share/julia/stdlib/v1.10/LinearAlgebra/src/\u001b[39m\u001b[90m\u001b[4mmatmul.jl:50\u001b[24m\u001b[39m\n\u001b[0m ...\n", "output_type": "error", "traceback": [ "MethodError: no method matching *(::Vector{Int64}, ::Vector{Int64})\n\n\u001b[0mClosest candidates are:\n\u001b[0m *(::Any, ::Any, \u001b[91m::Any\u001b[39m, \u001b[91m::Any...\u001b[39m)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m\u001b[4moperators.jl:587\u001b[24m\u001b[39m\n\u001b[0m *(\u001b[91m::LinearAlgebra.Transpose{T, <:AbstractVector}\u001b[39m, ::AbstractVector{T}) where T<:Real\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mLinearAlgebra\u001b[39m \u001b[90m~/.julia/juliaup/julia-1.10.4+0.aarch64.apple.darwin14/share/julia/stdlib/v1.10/LinearAlgebra/src/\u001b[39m\u001b[90m\u001b[4madjtrans.jl:463\u001b[24m\u001b[39m\n\u001b[0m *(\u001b[91m::Union{LinearAlgebra.Adjoint{<:Any, <:StridedMatrix{T}}, LinearAlgebra.Transpose{<:Any, <:StridedMatrix{T}}, StridedMatrix{T}}\u001b[39m, ::StridedVector{S}) where {T<:Union{Float32, Float64, ComplexF64, ComplexF32}, S<:Real}\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mLinearAlgebra\u001b[39m \u001b[90m~/.julia/juliaup/julia-1.10.4+0.aarch64.apple.darwin14/share/julia/stdlib/v1.10/LinearAlgebra/src/\u001b[39m\u001b[90m\u001b[4mmatmul.jl:50\u001b[24m\u001b[39m\n\u001b[0m ...\n", "", "Stacktrace:", " [1] top-level scope", " @ In[19]:1" ] } ], "source": [ "x * y # not allowed: vector * vector is not a linear-algebra operation" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1×4 transpose(::Vector{Int64}) with eltype Int64:\n", " 1 17 32 15" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transpose(x)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "106" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transpose(x) * y # allowed = a dot product" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Vector{Int64}:\n", " 15\n", " 34\n", " 192\n", " -135" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x .* y # elementwise product" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Vector{Float64}:\n", " 15.0\n", " 131072.0\n", " 7.958661109946401e24\n", " -2.05891132094649e14" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "float(y) .^ x " ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Vector{Float64}:\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": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Float64}:\n", " 3.7\n", " 4.2\n", " 6.1" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z = [3.7, 4.2, 6.1]" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Float64}:\n", " 1.0\n", " 4.2\n", " 37.209999999999994" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z .^ [0,1,2]" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Float64}:\n", " 1.0 3.7 13.69\n", " 1.0 4.2 17.64\n", " 1.0 6.1 37.21" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z .^ transpose([0,1,2]) # a Vandermonde matrix" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Float64}:\n", " 1.0 3.7 13.69\n", " 1.0 4.2 17.64\n", " 1.0 6.1 37.21" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z .^ [0 1 2]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1×3 Matrix{Int64}:\n", " 0 1 2" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[0 1 2] # another row vector" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x = [1, 17, 32, 15]\n" ] }, { "data": { "text/plain": [ "17" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "@show x\n", "x[2] # second element" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2-element Vector{Int64}:\n", " 17\n", " 32" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x[2:3] # elements 2 to 3 — \"slicing\"" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Int64}:\n", " 17\n", " 32\n", " 15" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x[2:4] # elements 2,3,4" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2:4" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2:4" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0:4" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0:4 # analogous to range(5) in Python" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5-element Vector{Int64}:\n", " 0\n", " 1\n", " 2\n", " 3\n", " 4" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collect(0:4)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Vector{Int64}:\n", " 3375\n", " 8\n", " 216\n", " -729" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y .^ 3 # elementwise cube" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Vector{Float64}:\n", " 0.6502878401571168\n", " 0.9092974268256817\n", " -0.27941549819892586\n", " -0.4121184852417566" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sin.(y) # elementwise sin" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7-element Vector{Float64}:\n", " 0.29697193235196806\n", " 0.6089232064474845\n", " 0.640156831669824\n", " 0.9941647502045372\n", " 0.09866110916321136\n", " 0.16174898078972932\n", " 0.026765055464918253" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rand(7) # 7 random numbers in [0,1)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7-element Vector{Float64}:\n", " 0.14339842083322113\n", " 2.3190665256048937\n", " -0.19541657959814898\n", " -0.1534544357604896\n", " 1.352610770582491\n", " 1.324758138046486\n", " -0.6616849551188408" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "randn(7) # 7 normally-distributed random numbers (mean 0, std. dev. 1)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4-element Vector{Int64}:\n", " 0\n", " 2\n", " 4\n", " 6" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collect(0:2:7) # 0 to 7 in steps of 2" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "71-element Vector{Float64}:\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": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collect(0:0.1:7) # 0 to 7 in steps of 0.1" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0:0.1282282715750936:6.283185307179586" ] }, "execution_count": 42, "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": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "50-element Vector{Float64}:\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": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collect(r)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0:6.28318537001144e-8:6.283185307179586" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = range(0, 2π, length=10^8) # not computed explicitly" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10-element Vector{Float64}:\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": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collect(r[1:10])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Matrices" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Int64}:\n", " 1 3 7\n", " 4 7 2\n", " 0 1 1" ] }, "execution_count": 46, "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": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Int64}:\n", " 3\n", " 2\n", " 1" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = [3, 2, 1] # a vector" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Int64}:\n", " 16\n", " 28\n", " 3" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A * b # matrix-vector product" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Float64}:\n", " 0.238095 0.190476 -2.04762\n", " -0.190476 0.047619 1.2381\n", " 0.190476 -0.047619 -0.238095" ] }, "execution_count": 49, "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": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Float64}:\n", " -0.9523809523809521\n", " 0.7619047619047618\n", " 0.23809523809523808" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = inv(A) * b" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Float64}:\n", " 2.9999999999999996\n", " 2.0\n", " 0.9999999999999998" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A * x" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Float64}:\n", " -4.440892098500626e-16\n", " 0.0\n", " -2.220446049250313e-16" ] }, "execution_count": 52, "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": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Float64}:\n", " -0.9523809523809526\n", " 0.761904761904762\n", " 0.23809523809523808" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = A \\ b # effectively equivalent to inv(A) * b, but faster and better" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Float64}:\n", " 0.0\n", " 0.0\n", " 0.0" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A * x - b # slightly different (smaller in this case)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Float64}:\n", " 0.841471 0.14112 0.656987\n", " -0.756802 0.656987 0.909297\n", " 0.0 0.841471 0.841471" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sin.(A) # elementwise sine" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Float64}:\n", " -0.888487 -0.296349 6.91956\n", " 0.962251 0.264022 -3.59102\n", " -0.581735 0.240563 0.565852" ] }, "execution_count": 56, "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": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "f (generic function with 1 method)" ] }, "execution_count": 57, "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": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "33.141120008059865" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(3)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Float64}:\n", " 344.112 669.704 418.92\n", " 688.962 1421.26 956.409\n", " 87.4183 172.241 125.566" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(A)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Float64}:\n", " -6.989077393122965\n", " -1.6472437070737587\n", " -0.24519753391390525" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.(x) # applied elementwise" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Float64}:\n", " -2.15853 33.1411 777.657\n", " 107.243 777.657 2.9093\n", " 0.0 -2.15853 -2.15853" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f.(A)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "g (generic function with 1 method)" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g(x) = 4x^3 - 5x^2 + 6x + 2 # one-line function definition" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Int64}:\n", " 7 83 1171\n", " 202 1171 26\n", " 2 7 7" ] }, "execution_count": 63, "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": 64, "metadata": {}, "outputs": [], "source": [ "using LinearAlgebra # similar to \"from LinearAlgebra import *\" in Python" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{ComplexF64}:\n", " -0.070943700579234 - 1.5139635518670351im\n", " -0.070943700579234 + 1.5139635518670351im\n", " 9.141887401158478 + 0.0im" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eigvals(A) # eigenvalues" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Eigen{ComplexF64, ComplexF64, Matrix{ComplexF64}, Vector{ComplexF64}}\n", "values:\n", "3-element Vector{ComplexF64}:\n", " -0.070943700579234 - 1.5139635518670351im\n", " -0.070943700579234 + 1.5139635518670351im\n", " 9.141887401158478 + 0.0im\n", "vectors:\n", "3×3 Matrix{ComplexF64}:\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": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F = eigen(A) # eigenvectors and eigenvalues" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{ComplexF64}:\n", " -0.070943700579234 - 1.5139635518670351im\n", " -0.070943700579234 + 1.5139635518670351im\n", " 9.141887401158478 + 0.0im" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F.values # the eigenvalues" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{ComplexF64}:\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": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F.vectors # the eigenvectors" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearAlgebra.QRCompactWY{Float64, Matrix{Float64}, Matrix{Float64}}\n", "Q factor: 3×3 LinearAlgebra.QRCompactWYQ{Float64, Matrix{Float64}, Matrix{Float64}}\n", "R factor:\n", "3×3 Matrix{Float64}:\n", " -4.12311 -7.5186 -3.63803\n", " 0.0 1.57181 5.50134\n", " 0.0 0.0 -3.24037" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qr(A) # QR factorization = Gram-Schmidt orthogonalization" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LU{Float64, Matrix{Float64}, Vector{Int64}}\n", "L factor:\n", "3×3 Matrix{Float64}:\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 Matrix{Float64}:\n", " 4.0 7.0 2.0\n", " 0.0 1.25 6.5\n", " 0.0 0.0 -4.2" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lu(A) # Gaussian elimination = LU factorization" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SVD{Float64, Float64, Matrix{Float64}, Vector{Float64}}\n", "U factor:\n", "3×3 Matrix{Float64}:\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 Vector{Float64}:\n", " 10.24950922823718\n", " 4.977764653973376\n", " 0.41160615876618434\n", "Vt factor:\n", "3×3 Matrix{Float64}:\n", " -0.354 -0.712177 -0.606208\n", " -0.387074 -0.478494 0.788173\n", " -0.851386 0.513661 -0.106278" ] }, "execution_count": 71, "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": 72, "metadata": {}, "outputs": [], "source": [ "using PyPlot" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAGdCAYAAAAfTAk2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABJ7klEQVR4nO3de3zO9f/H8cdldkB2oWWbzKnkXLHCyDdFk6LjN3RYKiaVWFSICpWlEpVDCFNJKpQKtcqpHAqjr8ihyGQjxTWUYT6/P94/02UHxq59rsPzfrt9bj77XO/r4/W2fXa9vI8Oy7IsRERERPxIKbsDEBERESluSnBERETE7yjBEREREb+jBEdERET8jhIcERER8TtKcERERMTvKMERERERv6MER0RERPxOabsDsMPx48fZtWsX5cuXx+Fw2B2OiIiInAHLsjhw4ABVqlShVKnC22gCMsHZtWsXMTExdochIiIiZyE9PZ2qVasWWiYgE5zy5csD5h8oPDzc5mhERETkTGRlZRETE5P7OV6YgExwTnRLhYeHK8ERERHxMWcyvESDjEVERMTvKMERERERv6MER0RERPyOEhwRERHxO0pwRERExO8owRERERG/owRHRERE/I4SHBEREfE7AbnQn4j4p5wcWLoUMjIgOhpatYKgILujEhE7KMEREb8wezb06QM7d568VrUqvPYa3HabfXGJiD3URSUiPm/2bPjvf92TG4DffzfXZ8+2Jy4RsY8SHBHxaTk5puXGsvK+duJaUpIpJyKBo0QSnHHjxlGzZk3CwsKIjY1l6dKlBZa97777cDgceY4GDRrklklJScm3zOHDh0uiOiLiRZYuzdty82+WBenpppyIBA6PJzgzZ84kKSmJQYMGkZaWRqtWrWjfvj07duzIt/xrr71GRkZG7pGenk6lSpW444473MqFh4e7lcvIyCAsLMzT1RERL5ORUbzlRMQ/eDzBefXVV+nWrRvdu3enXr16jB49mpiYGMaPH59veafTSVRUVO6xatUq9u3bx/333+9WzuFwuJWLiorydFVExAtFR59ZuS1b1E0lEkg8muAcOXKE1atXEx8f73Y9Pj6eZcuWndE9Jk+eTNu2balevbrb9YMHD1K9enWqVq1Khw4dSEtLK/Ae2dnZZGVluR0i4h9atTKzpU7n2Wehbl0YPx7+/tvzcYmIvTya4Ozd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LrjgAsLDw4mLi+OLL75wK5OSkoLD4chzHD582NNVyVdR6rdo0aJ8Y//555/dynnT97Ao9bvvvvvyrV+DBg1yy3jT92/JkiV07NiRKlWq4HA4+Pjjj0/7Hl97BotaR197BotaP198BotaR196DpOTk7nyyispX748lStX5pZbbmHTpk2nfZ83PIdKcAoxc+ZMkpKSGDRoEGlpabRq1Yr27duzY8eOfMtv27aNG264gVatWpGWlsZTTz1F7969mTVrVm6Z5cuX07lzZxISEli3bh0JCQl06tSJlStXllS13BS1jkuWLOG6665j3rx5rF69mmuuuYaOHTuSlpbmVi48PJyMjAy3IywsrCSq5Kao9Tth06ZNbrHXrl079zVv+h4WtX6vvfaaW73S09OpVKkSd9xxh1s5b/n+HTp0iMsuu4wxY8acUXlffAaLWkdfewaLWr8TfOUZhKLX0Zeew8WLF/PII4+wYsUKUlNTOXbsGPHx8Rw6dKjA93jNc2hJgZo2bWr17NnT7VrdunWtAQMG5Fv+ySeftOrWret27cEHH7SaN2+e+3WnTp2s66+/3q1Mu3btrC5duhRT1EVT1Drmp379+tbQoUNzv546darldDqLK8RzUtT6LVy40AKsffv2FXhPb/oenuv3b86cOZbD4bC2b9+ee82bvn//Blhz5swptIwvPoP/diZ1zI83P4P/dib187Vn8FRn8z30pedwz549FmAtXry4wDLe8hyqBacAR44cYfXq1cTHx7tdj4+PZ9myZfm+Z/ny5XnKt2vXjlWrVnH06NFCyxR0T086mzqe6vjx4xw4cIBKlSq5XT948CDVq1enatWqdOjQIc//LkvCudSvcePGREdH06ZNGxYuXOj2mrd8D4vj+zd58mTatm1L9erV3a57w/fvbPjaM1gcvPkZPBe+8AwWF196Dl0uF0Cen7d/85bnUAlOAfbu3UtOTg6RkZFu1yMjI8nMzMz3PZmZmfmWP3bsGHv37i20TEH39KSzqeOpRo4cyaFDh+jUqVPutbp165KSksLcuXOZMWMGYWFhtGzZki1bthRr/KdzNvWLjo5m4sSJzJo1i9mzZ1OnTh3atGnDkiVLcst4y/fwXL9/GRkZzJ8/n+7du7td95bv39nwtWewOHjzM3g2fOkZLA6+9BxalkXfvn256qqraNiwYYHlvOU5DMjdxIvC4XC4fW1ZVp5rpyt/6vWi3tPTzjaeGTNmMGTIED755BMqV66ce7158+Y0b9489+uWLVvSpEkT3njjDV5//fXiC/wMFaV+derUoU6dOrlfx8XFkZ6eziuvvMJ//vOfs7qnp51tLCkpKVSoUIFbbrnF7bq3ff+KyhefwbPlK89gUfjiM3gufOk57NWrFz/++CPffvvtact6w3OoFpwCREREEBQUlCeb3LNnT56s84SoqKh8y5cuXZrzzz+/0DIF3dOTzqaOJ8ycOZNu3brxwQcf0LZt20LLlipViiuvvLLE/+dxLvX7t+bNm7vF7i3fw3Opn2VZTJkyhYSEBEJCQgota9f372z42jN4LnzhGSwu3voMnitfeg4fffRR5s6dy8KFC6latWqhZb3lOVSCU4CQkBBiY2NJTU11u56amkqLFi3yfU9cXFye8l9++SVXXHEFwcHBhZYp6J6edDZ1BPO/xvvuu4/33nuPG2+88bR/j2VZrF27lujo6HOOuSjOtn6nSktLc4vdW76H51K/xYsXs3XrVrp163bav8eu79/Z8LVn8Gz5yjNYXLz1GTxXvvAcWpZFr169mD17Nt988w01a9Y87Xu85jkstuHKfuj999+3goODrcmTJ1sbNmywkpKSrHLlyuWOdB8wYICVkJCQW/7XX3+1ypYtaz322GPWhg0brMmTJ1vBwcHWRx99lFvmu+++s4KCgqwXX3zR2rhxo/Xiiy9apUuXtlasWFHi9bOsotfxvffes0qXLm2NHTvWysjIyD3279+fW2bIkCHWggULrF9++cVKS0uz7r//fqt06dLWypUrvb5+o0aNsubMmWNt3rzZWr9+vTVgwAALsGbNmpVbxpu+h0Wt3wn33HOP1axZs3zv6U3fvwMHDlhpaWlWWlqaBVivvvqqlZaWZv3222+WZfnHM1jUOvraM1jU+vnaM2hZRa/jCb7wHD700EOW0+m0Fi1a5Pbz9vfff+eW8dbnUAnOaYwdO9aqXr26FRISYjVp0sRtalzXrl2tq6++2q38okWLrMaNG1shISFWjRo1rPHjx+e554cffmjVqVPHCg4OturWrev24NqhKHW8+uqrLSDP0bVr19wySUlJVrVq1ayQkBDrggsusOLj461ly5aVYI3cFaV+I0aMsC666CIrLCzMqlixonXVVVdZn3/+eZ57etP3sKg/o/v377fKlCljTZw4Md/7edP378SU4YJ+3vzhGSxqHX3tGSxq/XzxGTybn1NfeQ7zqxdgTZ06NbeMtz6Hjv+vgIiIiIjf0BgcERER8TtKcERERMTvKMERERERv6MER0RERPyOEhwRERHxO0pwRERExO8owRERERG/owRHRERE/I4SHBEREfE7SnBERETE7yjBEREREb+jBEdERET8zv8B1c8BDr6+/jIAAAAASUVORK5CYII=", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "1-element Vector{PyCall.PyObject}:\n", " PyObject " ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(x, \"bo-\")" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAHFCAYAAADi7703AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAD26UlEQVR4nOydd5gUVdbG3+6enGcYmGEAyTkLSlpMCCqGdRXFhLpmUTEHdBV1d0XddcWErpHPNeEKukYUETCAgaiScxwYmJxDd31/nLp1q7qru6u6qzrM3N/z9NM9PdXV1d11b733Peee65AkSYJAIBAIBAKBQBdntA9AIBAIBAKBIJYRYkkgEAgEAoEgAEIsCQQCgUAgEARAiCWBQCAQCASCAAixJBAIBAKBQBAAIZYEAoFAIBAIAiDEkkAgEAgEAkEAhFgSCAQCgUAgCIAQSwKBQCAQCAQBEGJJIBAIoozD4cDDDz9s2f4efvhhOByOkF77zjvvYM6cOZYdi0DQGhBiSSAQCAQKQiwJBL4IsSQQCGKG+vr6aB+CQCAQ+CDEkkAgMMT333+PCRMmIDMzE2lpaRg7diw+++wzzTb+wj/z5s2Dw+HA7t27lee6deuGs846CwsXLsTw4cORkpKCRx55xO/7r127FmeddRY6dOiA5ORkFBUV4cwzz8T+/fuVbSRJwty5czFs2DCkpqYiNzcXU6ZMwc6dO332t2jRIkyYMAHZ2dlIS0tD//79MXv2bM02H3/8McaMGYO0tDRkZmZi4sSJWLlype5n3rBhAy6++GJkZ2ejoKAAV111FSorKzXbVlVV4dprr0W7du2QkZGB008/HVu3bvX7mdUsW7YMDocDb731Fu644w4UFhYiNTUVJ554ItauXRv09R6PB08++ST69euH5ORkdOjQAZdffrnm+zvppJPw2WefYc+ePXA4HMpNIGjrCLEkEAiCsnz5cpxyyimorKzEa6+9hnfffReZmZk4++yzMX/+/JD3u2bNGtx9992YMWMGFi1ahPPPP193u9raWkycOBGHDx/GCy+8gMWLF2POnDk45phjUF1drWx3/fXX47bbbsOpp56Kjz76CHPnzsWGDRswduxYHD58WNnutddew+TJk+HxePDSSy/hk08+wYwZMzTC4Z133sEf//hHZGVl4d1338Vrr72G8vJynHTSSfj+++99jvH8889Hnz59sGDBAtx333145513cPvttyv/lyQJ5557Lv7zn//gzjvvxIcffojRo0fjjDPOMPWd3X///di5cydeffVVvPrqqzh48CBOOukkXUGo5sYbb8S9996LiRMn4uOPP8Zf//pXLFq0CGPHjsXRo0cBAHPnzsW4ceNQWFiIlStXKjeBoM0jCQQCQRBGjx4tdejQQaqurlaea2lpkQYNGiR17txZ8ng8kiRJ0qxZsyS9buWNN96QAEi7du1SnuvatavkcrmkLVu2BH3/VatWSQCkjz76yO82K1eulABITz31lOb5ffv2SampqdI999wjSZIkVVdXS1lZWdIf/vAH5bi9cbvdUlFRkTR48GDJ7XYrz1dXV0sdOnSQxo4dqzzHPvOTTz6p2cf06dOllJQU5T2++OILCYD0zDPPaLb7+9//LgGQZs2aFfA7WLp0qQRAOvbYYzXHvXv3bikxMVG65pprfI6JsWnTJgmANH36dM0+f/rpJwmAdP/99yvPnXnmmVLXrl0DHotA0NYQzpJAIAhIbW0tfvrpJ0yZMgUZGRnK8y6XC9OmTcP+/fuxZcuWkPY9ZMgQ9OnTJ+h2vXr1Qm5uLu6991689NJL2Lhxo882n376KRwOBy677DK0tLQot8LCQgwdOhTLli0DAKxYsQJVVVWYPn263xDTli1bcPDgQUybNg1OJ+8mMzIycP755+PHH39EXV2d5jXnnHOOz2draGhASUkJAGDp0qUAgEsvvVSz3SWXXBL083tvrz7url27YuzYscr+9WD/u/LKKzXPH3/88ejfvz+WLFli6hgEgraGEEsCgSAg5eXlkCQJHTt29PlfUVERAKC0tDSkfevtU4/s7GwsX74cw4YNw/3334+BAweiqKgIs2bNQnNzMwDg8OHDkCQJBQUFSExM1Nx+/PFHJdR05MgRAEDnzp39vh/7PP4+s8fjQXl5ueb5du3aaf5OTk4GwJPWS0tLkZCQ4LNdYWGhoe8g0PaFhYUBf4NgnyfU308gaCskRPsABAJBbJObmwun04ni4mKf/x08eBAAkJ+fDwBISUkBADQ2NipiAYAiVLwxkzw8ePBgvPfee5AkCb/++ivmzZuHRx99FKmpqbjvvvuQn58Ph8OB7777TvPeDPZc+/btAUCTn+QNEzT+PrPT6URubq7hY2f7bGlpQWlpqUYwHTp0yNR+9LY/dOiQjwjzfm+APo+3SDx48KDy+wkEAn2EsyQQCAKSnp6OUaNGYeHChZqp/R6PB2+99RY6d+6shNK6desGAPj11181+/jkk08sOx6Hw4GhQ4fi6aefRk5ODtasWQMAOOussyBJEg4cOICRI0f63AYPHgwAGDt2LLKzs/HSSy9BkiTd9+jbty86deqEd955R7NNbW0tFixYoMyQM8PJJ58MAHj77bc1z7/zzjum9vPuu+9qjmnPnj1YsWIFTjrpJL+vOeWUUwAAb731lub5X375BZs2bcKECROU55KTk0UJB4HAC+EsCQSCoMyePRsTJ07EySefjLvuugtJSUmYO3cufv/9d7z77ruKQzR58mTk5eXh6quvxqOPPoqEhATMmzcP+/btC+v9P/30U8ydOxfnnnsuevToAUmSsHDhQlRUVGDixIkAgHHjxuG6667Dn//8Z6xatQonnHAC0tPTUVxcjO+//x6DBw/GjTfeiIyMDDz11FO45pprcOqpp+Laa69FQUEBtm/fjvXr1+P555+H0+nEk08+iUsvvRRnnXUWrr/+ejQ2NuIf//gHKioq8Pjjj5v+DJMmTcIJJ5yAe+65B7W1tRg5ciR++OEH/Oc//zG1n5KSEvzpT3/Ctddei8rKSsyaNQspKSmYOXOm39f07dsX1113HZ577jk4nU6cccYZ2L17Nx588EF06dJFM2tv8ODBWLhwIV588UWMGDECTqcTI0eONP15BYJWRfRyywUCQTzx3XffSaeccoqUnp4upaamSqNHj5Y++eQTn+1+/vlnaezYsVJ6errUqVMnadasWdKrr76qOxvuzDPPNPTemzdvli6++GKpZ8+eUmpqqpSdnS0df/zx0rx583y2ff3116VRo0Ypx9mzZ0/p8ssvl1atWqXZ7vPPP5dOPPFEKT09XUpLS5MGDBggPfHEE5ptPvroI2nUqFFSSkqKlJ6eLk2YMEH64YcfNNuwmWdHjhzRPK83A7CiokK66qqrpJycHCktLU2aOHGitHnzZlOz4f7zn/9IM2bMkNq3by8lJydL48eP9/lserMS3W639MQTT0h9+vSREhMTpfz8fOmyyy6T9u3bp9murKxMmjJlipSTkyM5HA7d2Y0CQVvDIUl+fGiBQCAQxAzLli3DySefjP/+97+YMmVKtA9HIGhTiJwlgUAgEAgEggAIsSQQCAQCgUAQABGG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", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "PyObject " ] }, "execution_count": 74, "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": 75, "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.DataFrame` 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", "- If *x* and/or *y* are 2D arrays a separate data set will be drawn\n", " for every column. If both *x* and *y* are 2D, they must have the\n", " same shape. If only one of them is 2D with shape (N, m) the other\n", " must have length N and will be used for every data set m.\n", "\n", " Example:\n", "\n", " >>> x = [1, 2, 3]\n", " >>> y = np.array([[1, 2], [3, 4], [5, 6]])\n", " >>> plot(x, y)\n", "\n", " is equivalent to:\n", "\n", " >>> for col in range(y.shape[1]):\n", " ... plot(x, y[:, col])\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\n", ":rc:`axes.prop_cycle`.\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", "Returns\n", "-------\n", "list of `.Line2D`\n", " A list of lines representing the plotted data.\n", "\n", "Other Parameters\n", "----------------\n", "scalex, scaley : bool, default: True\n", " These parameters determine if the view limits are adapted to the\n", " data limits. The values are passed on to\n", " `~.axes.Axes.autoscale_view`.\n", "\n", "**kwargs : `~matplotlib.lines.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 specify multiple lines with one plot call, the kwargs apply\n", " to all those lines. In case the label object is iterable, each\n", " element is used as labels for each set of data.\n", "\n", " Here is a list of available `.Line2D` properties:\n", "\n", " Properties:\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 and two offsets from the bottom left corner of the image\n", " alpha: scalar or None\n", " animated: bool\n", " antialiased or aa: bool\n", " clip_box: `~matplotlib.transforms.BboxBase` or None\n", " clip_on: bool\n", " clip_path: Patch or (Path, Transform) or None\n", " color or c: color\n", " dash_capstyle: `.CapStyle` or {'butt', 'projecting', 'round'}\n", " dash_joinstyle: `.JoinStyle` or {'miter', 'round', 'bevel'}\n", " dashes: sequence of floats (on/off ink in points) or (None, None)\n", " data: (2, N) array or two 1D arrays\n", " drawstyle or ds: {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, default: 'default'\n", " figure: `~matplotlib.figure.Figure`\n", " fillstyle: {'full', 'left', 'right', 'bottom', 'top', 'none'}\n", " gapcolor: color or 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 string, `~.path.Path` or `~.markers.MarkerStyle`\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) or list[bool]\n", " mouseover: bool\n", " path_effects: list of `.AbstractPathEffect`\n", " picker: float or callable[[Artist, Event], tuple[bool, dict]]\n", " pickradius: float\n", " rasterized: bool\n", " sketch_params: (scale: float, length: float, randomness: float)\n", " snap: bool or None\n", " solid_capstyle: `.CapStyle` or {'butt', 'projecting', 'round'}\n", " solid_joinstyle: `.JoinStyle` or {'miter', 'round', 'bevel'}\n", " transform: unknown\n", " url: str\n", " visible: bool\n", " xdata: 1D array\n", " ydata: 1D array\n", " zorder: float\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", "``'8'`` octagon marker\n", "``'s'`` square marker\n", "``'p'`` pentagon marker\n", "``'P'`` plus (filled) marker\n", "``'*'`` star marker\n", "``'h'`` hexagon1 marker\n", "``'H'`` hexagon2 marker\n", "``'+'`` plus marker\n", "``'x'`` x marker\n", "``'X'`` x (filled) 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": 75, "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": 76, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "foo (generic function with 1 method)" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo(x, y) = x + y" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo(3, 4)" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "ename": "LoadError", "evalue": "MethodError: no method matching +(::Matrix{Int64}, ::Int64)\nFor element-wise addition, use broadcasting with dot syntax: array .+ scalar\n\n\u001b[0mClosest candidates are:\n\u001b[0m +(::Any, ::Any, \u001b[91m::Any\u001b[39m, \u001b[91m::Any...\u001b[39m)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m\u001b[4moperators.jl:587\u001b[24m\u001b[39m\n\u001b[0m +(\u001b[91m::PyCall.PyObject\u001b[39m, ::Any)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[33mPyCall\u001b[39m \u001b[90m~/.julia/packages/PyCall/1gn3u/src/\u001b[39m\u001b[90m\u001b[4mpyoperators.jl:13\u001b[24m\u001b[39m\n\u001b[0m +(::Any, \u001b[91m::PyCall.PyObject\u001b[39m)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[33mPyCall\u001b[39m \u001b[90m~/.julia/packages/PyCall/1gn3u/src/\u001b[39m\u001b[90m\u001b[4mpyoperators.jl:14\u001b[24m\u001b[39m\n\u001b[0m ...\n", "output_type": "error", "traceback": [ "MethodError: no method matching +(::Matrix{Int64}, ::Int64)\nFor element-wise addition, use broadcasting with dot syntax: array .+ scalar\n\n\u001b[0mClosest candidates are:\n\u001b[0m +(::Any, ::Any, \u001b[91m::Any\u001b[39m, \u001b[91m::Any...\u001b[39m)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[90mBase\u001b[39m \u001b[90m\u001b[4moperators.jl:587\u001b[24m\u001b[39m\n\u001b[0m +(\u001b[91m::PyCall.PyObject\u001b[39m, ::Any)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[33mPyCall\u001b[39m \u001b[90m~/.julia/packages/PyCall/1gn3u/src/\u001b[39m\u001b[90m\u001b[4mpyoperators.jl:13\u001b[24m\u001b[39m\n\u001b[0m +(::Any, \u001b[91m::PyCall.PyObject\u001b[39m)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[33mPyCall\u001b[39m \u001b[90m~/.julia/packages/PyCall/1gn3u/src/\u001b[39m\u001b[90m\u001b[4mpyoperators.jl:14\u001b[24m\u001b[39m\n\u001b[0m ...\n", "", "Stacktrace:", " [1] foo(x::Matrix{Int64}, y::Int64)", " @ Main ./In[76]:1", " [2] top-level scope", " @ In[78]:1" ] } ], "source": [ "foo(A, 4)" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "foo (generic function with 2 methods)" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo(A::Matrix, y::Number) = A + y*I" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Int64}:\n", " 101 3 7\n", " 4 107 2\n", " 0 1 101" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo(A, 100)" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3×3 Matrix{Int64}:\n", " 2 6 14\n", " 8 14 4\n", " 0 2 2" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "foo(A, A)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.10.4", "language": "julia", "name": "julia-1.10" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.10.4" } }, "nbformat": 4, "nbformat_minor": 4 }