HSG-MCS-HS21_Julia/Problemsets/PS01_Basics.ipynb
2021-11-15 21:14:51 +01:00

1584 lines
125 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"source": [
"# Basic Julia Tutorial"
],
"metadata": {
"collapsed": true
}
},
{
"cell_type": "markdown",
"source": [
"# Running/Installing Julia\n",
"\n",
"This is a notebook. To run in you need Julia and jupyter or nteract (see below).\n",
"\n",
"1. To run Julia without a local installation, use (for instance) [CoCalc](https://cocalc.com).\n",
"\n",
"2. To install Julia on your machine, [download and install it](https://julialang.org/downloads/). \n",
"\n",
"3. You may also want to use [VS Code with the Julia extension](https://github.com/julia-vscode/julia-vscode) IDE. See also the [julia-vscode.org](https://www.julia-vscode.org/) for more information.\n",
"\n",
"4. To run notebooks with either jupyter or nteract from your local installation, see [IJulia](https://github.com/JuliaLang/IJulia.jl) for instructions. See also below for some hints.\n",
"\n",
"5. As an alternative to jupyter/nteract you can also run notebooks in VS Code (see above).\n",
"\n",
"\n",
"\n",
"## More Details on Installing jupyter and nteract\n",
"\n",
"1. If you want to use nteract do as follows: install IJulia, but do *not* call on `notebook()` to avoid the automatic Python installation. Then install nteract.\n",
"\n",
"2. After installing IJulia and issuing the command `notebook()` a new local Python installation will be made - unless IJulia finds an existing installation.\n",
"\n",
"3. If you already have a Python installation, run `ENV[\"JUPYTER\"] = \"C:\\\\Miniconda3\\\\Scripts\\\\jupyter.exe\"` (change the path as needed) before you install IJulia. The best is perhaps to add this to your startup.jl file (~/.julia/config/startup.jl, for instance, C:\\Users\\yourusername\\.julia\\config\\startup.jl if you are on Windows). You can test whether it works by running ```run(`$(ENV[\"JUPYTER\"]) --version`)``` from the Julia REPL.\n",
"\n",
"4. On Windows, it helps to allow the Python installer to add python to the system path."
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# Documentation and Help\n",
"\n",
"1. Cheat sheet at [QuantEcon](https://cheatsheets.quantecon.org/julia-cheatsheet.html)\n",
"2. [Wiki book](https://en.wikibooks.org/wiki/Introducing_Julia)\n",
"3. [Short tutorials](https://techytok.com/from-zero-to-julia/) \n",
"4. [ThinkJulia](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html) is a free on-line book\n",
"5. The [official Julia on-line manual](https://docs.julialang.org)\n",
"6. Discussion lists are found at\n",
" * https://discourse.julialang.org/\n",
" * https://stackoverflow.com/questions/tagged/julia-lang\n",
" * https://www.reddit.com/r/Julia/\n",
" * https://gitter.im/JuliaLang/julia\n",
"7. In Julia, do ```? cos``` to get help with the cos function "
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# About Notebooks\n",
"\n",
"This cell is a \"Markdown\" cell. This is meant for comments and documentation, not computations.\n",
"\n",
"You can change a cell to \"Code\" or \"Markdown\" in the menu.\n",
"\n",
"Markdown cells can handle LaTeX. An example: $\\alpha = \\beta/2$. A Markdown cell can also contain some *formatting*, like lists of this kind\n",
"\n",
"1. To insert a new cell, use the menu. \n",
"\n",
"2. The next cell is \"Code\". You can run it. Text after a # sign is treated as a comment.\n",
"\n",
"3. The subsequent cell shows how to get help on a command."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 41,
"source": [
"a = 2 #this is a comment\n",
" #run this cell by using the menu, or by Shift+Enter"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2"
]
},
"metadata": {},
"execution_count": 41
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 42,
"source": [
"? cos #to get help on the cos() function"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"search: \u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1ms\u001b[22m \u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1ms\u001b[22mh \u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1ms\u001b[22md \u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1ms\u001b[22mc \u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1ms\u001b[22mpi a\u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1ms\u001b[22m a\u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1ms\u001b[22mh a\u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1ms\u001b[22md sin\u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1ms\u001b[22m sin\u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1ms\u001b[22md sin\u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22m\u001b[0m\u001b[1ms\u001b[22mpi \u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mo\u001b[22mn\u001b[0m\u001b[1ms\u001b[22mt\n",
"\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/latex": [
"\\begin{verbatim}\n",
"cos(x)\n",
"\\end{verbatim}\n",
"Compute cosine of \\texttt{x}, where \\texttt{x} is in radians.\n",
"\n",
"See also [\\texttt{cosd}], [\\texttt{cospi}], [\\texttt{sincos}], [\\texttt{cis}].\n",
"\n",
"\\rule{\\textwidth}{1pt}\n",
"\\begin{verbatim}\n",
"cos(A::AbstractMatrix)\n",
"\\end{verbatim}\n",
"Compute the matrix cosine 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 cosine. Otherwise, the cosine is determined by calling \\href{@ref}{\\texttt{exp}}.\n",
"\n",
"\\section{Examples}\n",
"\\begin{verbatim}\n",
"julia> cos(fill(1.0, (2,2)))\n",
"2×2 Matrix{Float64}:\n",
" 0.291927 -0.708073\n",
" -0.708073 0.291927\n",
"\\end{verbatim}\n"
],
"text/markdown": [
"```\n",
"cos(x)\n",
"```\n",
"\n",
"Compute cosine of `x`, where `x` is in radians.\n",
"\n",
"See also [`cosd`], [`cospi`], [`sincos`], [`cis`].\n",
"\n",
"---\n",
"\n",
"```\n",
"cos(A::AbstractMatrix)\n",
"```\n",
"\n",
"Compute the matrix cosine of a square matrix `A`.\n",
"\n",
"If `A` is symmetric or Hermitian, its eigendecomposition ([`eigen`](@ref)) is used to compute the cosine. Otherwise, the cosine is determined by calling [`exp`](@ref).\n",
"\n",
"# Examples\n",
"\n",
"```jldoctest\n",
"julia> cos(fill(1.0, (2,2)))\n",
"2×2 Matrix{Float64}:\n",
" 0.291927 -0.708073\n",
" -0.708073 0.291927\n",
"```\n"
],
"text/plain": [
"\u001b[36m cos(x)\u001b[39m\n",
"\n",
" Compute cosine of \u001b[36mx\u001b[39m, where \u001b[36mx\u001b[39m is in radians.\n",
"\n",
" See also [\u001b[36mcosd\u001b[39m], [\u001b[36mcospi\u001b[39m], [\u001b[36msincos\u001b[39m], [\u001b[36mcis\u001b[39m].\n",
"\n",
" ────────────────────────────────────────────────────────────────────────────\n",
"\n",
"\u001b[36m cos(A::AbstractMatrix)\u001b[39m\n",
"\n",
" Compute the matrix cosine 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 cosine. Otherwise, the cosine 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> cos(fill(1.0, (2,2)))\u001b[39m\n",
"\u001b[36m 2×2 Matrix{Float64}:\u001b[39m\n",
"\u001b[36m 0.291927 -0.708073\u001b[39m\n",
"\u001b[36m -0.708073 0.291927\u001b[39m"
]
},
"metadata": {},
"execution_count": 42
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# Load Packages and Extra Functions\n",
"\n",
"There are many packages for Julia, for instance, for plotting or statistical methods (see [JuliaHub](https://juliahub.com/) for a list). To install a package, you do either \n",
"\n",
"1. (works everywhere) run `import Pkg` and then `Pkg.add(\"Packagename\")`\n",
"\n",
"2. (works in the Julia console, REPL) enter the \"package manager mode\" by typing `]`, then run `add PackageName`. You leave the package manager mode by ctrl-c or backspace.\n",
"\n",
"Once a package is installed, you can use it by running\n",
"\n",
"```\n",
"using PackageName\n",
"```"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 77,
"source": [
"using Printf\n",
"\n",
"include(\"jlFiles/printmat.jl\") #just a function for prettier matrix printing"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"printyellow (generic function with 1 method)"
]
},
"metadata": {},
"execution_count": 77
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 78,
"source": [
"using Plots #this loads the Plots package\n",
"\n",
"#pyplot(size=(600,400)) #choice of plotting backend\n",
"gr(size=(480,320))\n",
"default(fmt = :svg) #try :png or :svg"
],
"outputs": [],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# Scalars and Matrices\n",
"\n"
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"### Create a Scalar and a Matrix"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 45,
"source": [
"q = 1 #create a scalar\n",
"Q = [ 1 2 3; #create 2x3 matrix\n",
" 4 5 6 ] \n",
"println(\"q is a scalar. To print, use println() or printlnPs()\")\n",
"println(q)\n",
"\n",
"println(\"\\nQ is a matrix. To print, use display() or printmat()\")\n",
"printmat(Q) \n",
"display(Q) #case sensitive (q and Q are different)\n",
" #the \\n adds a line break"
],
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"2×3 Matrix{Int64}:\n",
" 1 2 3\n",
" 4 5 6"
]
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"q is a scalar. To print, use println() or printlnPs()\n",
"1\n",
"\n",
"Q is a matrix. To print, use display() or printmat()\n",
" 1 2 3 \n",
" 4 5 6 \n",
"\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"### Picking Out Parts of a Matrix"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 46,
"source": [
"println(\"\\n\",\"element [1,2] of Q: \", #commands continue on\n",
" Q[1,2]) #the next line (until finished)\n",
"\n",
"println(\"\\ncolumns 2 and 3 of Q: \")\n",
"printmat(Q[:,2:3])\n",
"\n",
"println(\"\\nline 1 of Q (as a vector): \")\n",
"printmat(Q[1,:])"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\n",
"element [1,2] of Q: 2\n",
"\n",
"columns 2 and 3 of Q: \n",
" 2 3 \n",
" 5 6 \n",
"\n",
"\n",
"line 1 of Q (as a vector): \n",
" 1 \n",
" 2 \n",
" 3 \n",
"\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Task\n",
"Create a 2x2 matrix A\n",
"\n",
"```\n",
"10 10\n",
"21 22\n",
"```\n",
"\n",
"Print it\n",
"\n",
"Change the second row to `[1 2]`. Print again."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 80,
"source": [
"A = [10 10;\n",
" 21 22]\n",
"\n",
"printmat(A)\n",
"\n",
"A[2,:] = [1 2]\n",
"\n",
"printmat(A)"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" 10 10 \n",
" 21 22 \n",
"\n",
" 10 10 \n",
" 1 2 \n",
"\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"### Basic Linear Algebra\n",
"\n",
"The syntax for linear algebra is similar to the standard text book approach. For instance, \n",
"* `Q'Q` (or `Q'*Q`) multiplies the transpose ($Q'$) with the matrix ($Q$)\n",
"* `A*B` does matrix multiplication\n",
"* `100*Q` multiplies each element of the matrix ($Q$) by 100. (You can also do `100Q`.)\n",
"\n",
"However, to add a scalar to each element of a matrix, use `100 .+ Q`. Notice the dot."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 79,
"source": [
"println(\"Q:\")\n",
"printmat(Q)\n",
"\n",
"println(\"transpose of Q:\")\n",
"printmat(Q')\n",
"\n",
"println(\"Q'Q:\")\n",
"printmat(Q'Q)\n",
"\n",
"println(\"scalar * matrix:\")\n",
"printmat(100*Q)\n",
"\n",
"println(\"scalar .+ matrix:\") #notice the dot\n",
"printmat(100 .+ Q)"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Q:\n",
" 1 2 3 \n",
" 4 5 6 \n",
"\n",
"transpose of Q:\n",
" 1 4 \n",
" 2 5 \n",
" 3 6 \n",
"\n",
"Q'Q:\n",
" 17 22 27 \n",
" 22 29 36 \n",
" 27 36 45 \n",
"\n",
"scalar * matrix:\n",
" 100 200 300 \n",
" 400 500 600 \n",
"\n",
"scalar .+ matrix:\n",
" 101 102 103 \n",
" 104 105 106 \n",
"\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Task\n",
"\n",
"Consider the system of linear equations\n",
"\n",
"$\n",
"Ax = q\n",
"$, \n",
"\n",
"where \n",
"$ \n",
"q = \\begin{bmatrix} 1 \\\\2 \\end{bmatrix}\n",
"$\n",
"\n",
"You could solve it as\n",
"$\n",
"x = A^{-1}q\n",
"$\n",
"\n",
"\n",
"Solve (numrically) for the vector $x$. Hint: `inv()` Then check that $Ax$ indeed equals $q$"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 81,
"source": [
"q = [1, 2]\n",
"\n",
"printmat(q)\n",
"\n",
"x = inv(A)q\n",
"\n",
"printmat(x)\n",
"\n",
"printmat(A*x)\n"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" 1 \n",
" 2 \n",
"\n",
" -1.800\n",
" 1.900\n",
"\n",
" 1.000\n",
" 2.000\n",
"\n"
]
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 83,
"source": [
"x_alt = A\\q"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2-element Vector{Float64}:\n",
" -1.8\n",
" 1.9"
]
},
"metadata": {},
"execution_count": 83
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"### Creating a Sequence and a Vector"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 50,
"source": [
"θ = 1:10:21 #a range, type \\theta[TAB] to get this symbol\n",
"println(\"\\n\",\"θ is a sequence: \",θ)\n",
"\n",
"ρ = collect(θ) #make the sequence into a vector, \\rho[TAB]\n",
"println(\"\\n\",\"ρ is a vector: \")\n",
"printmat(ρ)"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"\n",
"θ is a sequence: 1:10:21\n",
"\n",
"ρ is a vector: \n",
" 1 \n",
" 11 \n",
" 21 \n",
"\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Task\n",
"\n",
"Create a sequence $\\alpha$ which starts at 0 and ends at 1, taking 11 steps. (Hint: you can also use `range()`)"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 84,
"source": [
"α = 0:0.1:1\n",
"\n",
"α2 = range(0, 1, 11)\n",
"\n",
"printmat(α)\n",
"println(α2)"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" 0.000\n",
" 0.100\n",
" 0.200\n",
" 0.300\n",
" 0.400\n",
" 0.500\n",
" 0.600\n",
" 0.700\n",
" 0.800\n",
" 0.900\n",
" 1.000\n",
"\n",
"0.0:0.1:1.0\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# Comparing Things\n",
"\n",
"To see if the scalar z <= 0, do \n",
"```\n",
"vv = z <= 0\n",
"```\n",
"to get a single output (true or false).\n",
"\n",
"Instead, if x is an array, do \n",
"```\n",
"vv = x .<= 0 #notice the dot.\n",
"```\n",
"to get an array of outputs (same dimension as x)"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 52,
"source": [
"x = [-1.5,-1.0,-0.5,0,0.5] #this is a vector\n",
"\n",
"println(\"x values: \")\n",
"printmat(x)\n",
"\n",
"vv = -1 .< x .<= 0 #true for x values (-1,0], vv is a vector\n",
"println(\"true if x is in (-1,0]: \")\n",
"printmat(vv)\n",
"\n",
"x2 = x[vv] #x values for which vv==true\n",
"println(\"x values that are in (-1,0]: \")\n",
"printmat(x2)"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"x values: \n",
" -1.500\n",
" -1.000\n",
" -0.500\n",
" 0.000\n",
" 0.500\n",
"\n",
"true if x is in (-1,0]: \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 0 \n",
"\n",
"x values that are in (-1,0]: \n",
" -0.500\n",
" 0.000\n",
"\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Task\n",
"\n",
"Which elements of $\\alpha$ are (weakly) between 0.6 and 0.99?"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 53,
"source": [
"# printmat(α)\n",
"\n",
"vv = 0.6 .< α .< 0.99\n",
"\n",
"# printmat(vv)\n",
"printmat(α[vv])\n"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" 0.700\n",
" 0.800\n",
" 0.900\n",
"\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# Finding Things\n",
"\n",
"can be done by, for instance, `findfirst()`, `findall()` and `indexin()`. \n",
"\n",
"Instead, if you just need to check if the number `z` is in an array (or any collection) `x`, then use `in(z,x)`."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 54,
"source": [
"x = [-1.5,-1.0,-0.5,0,0.5] #this is a vector\n",
"\n",
"println(\"x values: \")\n",
"printmat(x)\n",
"\n",
"v1 = findfirst(x.==0)\n",
"println(\"(first) index v in x such x[v]==0: \",v1)\n",
"\n",
"v2 = findall(x.>=0)\n",
"println(\"\\nall indices v in x such x[v]>=0: \")\n",
"printmat(v2)\n",
"\n",
"y = [-1.0,0]\n",
"v3 = indexin(y,x)\n",
"println(\"\\nindices in x so that x[v] equals the vector y=$y: \")\n",
"printmat(v3)\n",
"\n",
"v4 = in(0,x)\n",
"println(\"\\ntesting if 0 is in x: \",v4)"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"x values: \n",
" -1.500\n",
" -1.000\n",
" -0.500\n",
" 0.000\n",
" 0.500\n",
"\n",
"(first) index v in x such x[v]==0: 4\n",
"\n",
"all indices v in x such x[v]>=0: \n",
" 4 \n",
" 5 \n",
"\n",
"\n",
"indices in x so that x[v] equals the vector y=[-1.0, 0.0]: \n",
" 2 \n",
" 4 \n",
"\n",
"\n",
"testing if 0 is in x: true\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# if-else\n",
"\n",
"allows you to run different comman ddepending on a condition which you specify.\n",
"\n",
"(extra) There are also other (more compact) possibilities for `if-else` case\n",
"\n",
"1. `y = ifelse(z <= 2,z,2)` or \n",
"2. `z <= 2 ? y = z : y = 2`\n",
"(In this partcular case, `y=minimum(z,2)` also works.)\n",
"\n",
"You can also insert an `ifelse` command."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 55,
"source": [
"z = 1.05\n",
"\n",
"if z <= 2 #(a) if true, run the next command (y=z) and then jump to end\n",
" y = z\n",
"else #(b) if (a) is false, do this instead\n",
" y = 2\n",
"end\n",
"\n",
"#y = ifelse(z <= 2,z,2) #these two versions also work\n",
"#z <= 2 ? y = z : y = 2\n",
"\n",
"println(y)"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1.05\n"
]
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 56,
"source": [
"if z < 1 #(a) if true, run the next command (y=1) and then jump to end\n",
" y = 1\n",
"elseif 1 <= z <= 2 #(b) if (a) is false, try this instead \n",
" y = z\n",
"else #(c) if also (b) is false, do this\n",
" y = 2\n",
"end\n",
"\n",
"println(y)"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1.05\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Task\n",
"\n",
"\n",
"Use `if-else` to calculate the tax paid by someone with an income of $X$. The tax schedule is progressive so the first 100 of the income pays 40% tax, while income above 100 has a marginal tax rate of 0.6 (that is, $X-100$ pays 60% if $X>100)$. What is the total tax paid and the average tax rate.\n",
"Report the results for an income of 150."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 85,
"source": [
"X = 150\n",
"\n",
"if X > 100\n",
" tax = 100 * 0.4 + (X - 100) * 0.6\n",
"else\n",
" tax = X * 0.4\n",
"end\n",
"\n",
"println(\"The tax is: \", tax)\n",
"println(\"Avarage tax is: \", tax / X * 100)"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"The tax is: 70.0\n",
"Avarage tax is: 46.666666666666664\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# Loops\n",
"\n",
"The are two types of loops: \"for loops\" and \"while loops\". \n",
"\n",
"The *for loop* is best when you know how many times you want to loop (for instance, over all $m$ rows in a matrix). \n",
"\n",
"The *while loop* is best when you want to keep looping until something happens, for instance, that $x_0$ and $x_1$ get really close.\n",
"\n",
"The default behaviour in *IJulia*, *inside functions* and at the *REPL* promt is that assignments of `x` inside the loop overwrites `x` defined before the loop. To get the same behavior in scripts, you need to add `global x` somewhere inside the loop.\n",
"\n",
"To make sure that the `y` calculated inside the loop does not affect `y` outside the loop, add `local y`.\n",
"\n",
"A variable (here `z2`) that does not exist before the loop is local to the loop."
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"### A Simple \"for loop\"\n",
"\n",
"The \"for loop\" in the next cell makes 3 iterations and changes a global $x$ variable."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 58,
"source": [
"x = 0\n",
"y = -999\n",
"for i = 3:3:9 #or `i in 3:3:9`, or `v=[3,6,9]; i in v`\n",
" #global x #only needed in script\n",
" local y #don't overwrite y outside loop\n",
" x += i #adding i to the \"old\" x\n",
" y = i\n",
" z2 = -998 #notice: z2 has not been used before \n",
" println(\"i=$i, x=$x and z2=$z2\") #$x prints the value of x\n",
"end\n",
"\n",
"println(\"\\nAfter loop: x=$x and y=$y\")\n",
"#println(z2) #does not work: z2 is local to the loop"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"i=3, x=3 and z2=-998\n",
"i=6, x=9 and z2=-998\n",
"i=9, x=18 and z2=-998\n",
"\n",
"After loop: x=18 and y=-999\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Task\n",
"\n",
"You have the following financial data\n",
"\n",
"```\n",
"P = [100;108;109] #price series, after dividends\n",
"D = [0;2;0] #dividends\n",
"```\n",
"\n",
"For each $t$, calculate the returns\n",
"\n",
"$\n",
"R_t = (P_t+D_t)/P_{t-1} - 1\n",
"$,\n",
"\n",
"by using a loop."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 91,
"source": [
"P = [100;108;109]\n",
"D = [0;2;0]\n",
"\n",
"for t = 1:3\n",
" if t > 1\n",
" x = (P[t] + D[t]) / P[t - 1] - 1\n",
" else\n",
" x = \"n/a\"\n",
" end\n",
" println(\"returns are: $x\")\n",
"end"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"returns are: n/a\n",
"returns are: 0.10000000000000009\n",
"returns are: 0.0092592592592593\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"### A Double \"for loop\"\n",
"\n",
"An example of a nested for for loop\n",
"\n",
"```\n",
"for j = 1:n, i = 1:m\n",
" #do something\n",
"end\n",
"```\n",
"\n",
"If you prefer, could also write a longer version to do the same thing\n",
"```\n",
"for j = 1:n \n",
" for i = 1:m\n",
" #do something\n",
" end \n",
"end\n",
"```\n",
"\n",
"The next cell uses a double loop to fill a matrix. "
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 60,
"source": [
"(m,n) = (4,3) #same as m=4;n=3\n",
"x = fill(-999,(m,n)) #to put results in, initialized as -999\n",
"for i = 1:m, j = 1:n\n",
" x[i,j] = 10*i + j\n",
"end\n",
"\n",
"println(\"new x matrix: \\n\")\n",
"printmat(x)"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"new x matrix: \n",
"\n",
" 11 12 13 \n",
" 21 22 23 \n",
" 31 32 33 \n",
" 41 42 43 \n",
"\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## A Simple \"while loop\"\n",
"\n",
"The \"while loop\" in the next cell iterates until two variables ($x_0$ and $x_1$) get close.\n",
"\n",
"The background to the example is that we want to solve a function $f(x)=x^2$ for the $x$ value that makes $f(x)=2$. The Newton-Raphson algorithm starts with a value $x_0$ and updates it to\n",
"$\n",
"x_1 = x_0 + (2-f(x_0))/f'(x_0)\n",
"$\n",
"where $f'(x_0)$ is the derivative of $f()$ evaluated at $x_0$. The algorithm iterates until $x_0$ and $x_1$ are close. Clearly, we are trying to find the square root of 2."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 61,
"source": [
"println(\"Solving x^2 = 2 with Newton-Raphson:\\n\")\n",
"\n",
"x₀ = Inf #x\\_0[TAB]\n",
"x₁ = 10\n",
"\n",
"while abs(x₁-x₀) > 0.001 #keep going until they get similar\n",
" #global x₀, x₁ #only needed in script\n",
" local y, dy #don't overwrite any y,dy outside loop\n",
" x₀ = x₁ #initial guess is taken from old guess\n",
" y = x₀^2 #value of function\n",
" dy = 2*x₀ #derivative of function\n",
" x₁ = x₀ + (2 - y)/dy #updating the guess, Newton-Raphson\n",
" printlnPs(x₀,\" is changed to \",x₁)\n",
"end\n",
"\n",
"printlnPs(\"\\nThe result should be close to \",sqrt(2))"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Solving x^2 = 2 with Newton-Raphson:\n",
"\n",
" 10 is changed to 5.100\n",
" 5.100 is changed to 2.746\n",
" 2.746 is changed to 1.737\n",
" 1.737 is changed to 1.444\n",
" 1.444 is changed to 1.415\n",
" 1.415 is changed to 1.414\n",
"\n",
"The result should be close to 1.414\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Task\n",
"\n",
"Start at `x=1` and create a while loop that multiplies the previous $x$ by 1.1.(That is, you earn a 10% return each year.) Continue while `x<2`. Print the iterations (iteration number, `x`). So, how many years did it take to double the investment?"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 92,
"source": [
"x = 1\n",
"while x < 2\n",
" x = x * 1.1\n",
" printlnPs(x)\n",
"end"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" 1.100\n",
" 1.210\n",
" 1.331\n",
" 1.464\n",
" 1.611\n",
" 1.772\n",
" 1.949\n",
" 2.144\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# A Simple Function\n",
"\n",
"The next cell defines a new function, `fn1()`. It takes a scalar input (`x`) and returns a scalar output (`y`).\n",
"\n",
"If you instead use a vector as the input, then the computation fails. (The reason is that you cannot do x^2 on a vector. You could on a square matrix, though.)\n",
"\n",
"However, using the \"dot\" syntax\n",
"```\n",
"y = fn1.(x)\n",
"```\n",
"gives an array as output where element `y[i,j] = fn1(x[i,j])`."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 63,
"source": [
"function fn1(x) #define a new function \n",
" y = (x-1.1)^2 - 0.5\n",
" return y\n",
"end"
],
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"fn1 (generic function with 1 method)"
]
},
"metadata": {},
"execution_count": 63
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 64,
"source": [
"y = fn1(1.5)\n",
"printlnPs(\"result from fn1(1.5): \",y)\n",
"\n",
"x = [1;1.5]\n",
"#y = fn1(x) #would give an error \n",
"y = fn1.(x) #calling on the function, dot. to do for each element in x\n",
"printlnPs(\"\\nresult from fn1.(x): \")\n",
"printmat(y)"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"result from fn1(1.5): -0.340\n",
"\n",
"result from fn1.(x): \n",
" -0.490\n",
" -0.340\n",
"\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Task\n",
"\n",
"Write a function to calculate \n",
"$B =\\exp{(-my)}$, \n",
"where $B$ is the price of a bond and $m$ is the time to maturity (measured in years) and $y$ is the (continously compounded) interest rate.\n",
"\n",
"If $y=0.103$ and $m=0.5$, what is $B$?"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 96,
"source": [
"using Base\n",
"\n",
"function test(m, y)\n",
" return exp(-m * y)\n",
"end\n",
"\n",
"BondPrice(m, y) = exp(-m * y)\n",
"\n",
"B = test(0.5, 0.103)\n",
"printlnPs(\"B = $B\")\n",
"printlnPs(BondPrice(0.5, 0.103))"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"B = 0.9498036499621996\n",
" 0.950\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# A First Plot\n",
"\n",
"With the Plots package you create a a simple plot like this:\n",
"\n",
"1. Plot two curve by using the `plot([x1 x2],[y1 y2])` command\n",
"2. Configure curves by `linecolor =`, `linestyle =` etc\n",
"2. Add titles and labels by `title = `, `xlabel = `, etc\n",
"\n",
"Notice: the *first plot is slow*."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 66,
"source": [
"x = -3:6/99:6 \n",
"\n",
"p1 = plot( [x x],[fn1.(x) cos.(x)],\n",
" linecolor = [:red :blue],\n",
" linestyle = [:solid :dash],\n",
" linewidth = [2 1],\n",
" label = [\"fn1()\" \"cos\"],\n",
" title = \"My Results\",\n",
" xlabel = \"x\",\n",
" ylabel = \"my output value\" )\n",
"display(p1) #not needed in notebook, but useful in script"
],
"outputs": [
{
"output_type": "display_data",
"data": {
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"480\" height=\"320\" viewBox=\"0 0 1920 1280\">\n<defs>\n <clipPath id=\"clip300\">\n <rect x=\"0\" y=\"0\" width=\"1920\" height=\"1280\"/>\n </clipPath>\n</defs>\n<path clip-path=\"url(#clip300)\" d=\"\nM0 1280 L1920 1280 L1920 0 L0 0 Z\n \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n<defs>\n <clipPath id=\"clip301\">\n <rect x=\"384\" y=\"0\" width=\"1345\" height=\"1280\"/>\n </clipPath>\n</defs>\n<path clip-path=\"url(#clip300)\" d=\"\nM199.164 1106.38 L1872.76 1106.38 L1872.76 123.472 L199.164 123.472 Z\n \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n<defs>\n <clipPath id=\"clip302\">\n <rect x=\"199\" y=\"123\" width=\"1675\" height=\"984\"/>\n </clipPath>\n</defs>\n<polyline clip-path=\"url(#clip302)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 422.551,1106.38 422.551,123.472 \n \"/>\n<polyline clip-path=\"url(#clip302)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 774.594,1106.38 774.594,123.472 \n \"/>\n<polyline clip-path=\"url(#clip302)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 1126.64,1106.38 1126.64,123.472 \n \"/>\n<polyline clip-path=\"url(#clip302)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 1478.68,1106.38 1478.68,123.472 \n \"/>\n<polyline clip-path=\"url(#clip302)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 1830.72,1106.38 1830.72,123.472 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 199.164,1106.38 1872.76,1106.38 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 422.551,1106.38 422.551,1087.48 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 774.594,1106.38 774.594,1087.48 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 1126.64,1106.38 1126.64,1087.48 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 1478.68,1106.38 1478.68,1087.48 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 1830.72,1106.38 1830.72,1087.48 \n \"/>\n<path clip-path=\"url(#clip300)\" d=\"M392.493 1146.38 L422.169 1146.38 L422.169 1150.32 L392.493 1150.32 L392.493 1146.38 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M436.289 1159.28 L452.609 1159.28 L452.609 1163.21 L430.664 1163.21 L430.664 1159.28 Q433.326 1156.52 437.91 1151.89 Q442.516 1147.24 443.697 1145.9 Q445.942 1143.37 446.822 1141.64 Q447.725 1139.88 447.725 1138.19 Q447.725 1135.43 445.78 1133.7 Q443.859 1131.96 440.757 1131.96 Q438.558 1131.96 436.104 1132.73 Q433.674 1133.49 430.896 1135.04 L430.896 1130.32 Q433.72 1129.18 436.174 1128.61 Q438.627 1128.03 440.664 1128.03 Q446.035 1128.03 449.229 1130.71 Q452.424 1133.4 452.424 1137.89 Q452.424 1140.02 451.613 1141.94 Q450.826 1143.84 448.72 1146.43 Q448.141 1147.1 445.039 1150.32 Q441.937 1153.51 436.289 1159.28 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M774.594 1131.73 Q770.983 1131.73 769.155 1135.3 Q767.349 1138.84 767.349 1145.97 Q767.349 1153.07 769.155 1156.64 Q770.983 1160.18 774.594 1160.18 Q778.229 1160.18 780.034 1156.64 Q781.863 1153.07 781.863 1145.97 Q781.863 1138.84 780.034 1135.3 Q778.229 1131.73 774.594 1131.73 M774.594 1128.03 Q780.404 1128.03 783.46 1132.63 Q786.539 1137.22 786.539 1145.97 Q786.539 1154.69 783.46 1159.3 Q780.404 1163.88 774.594 1163.88 Q768.784 1163.88 765.705 1159.3 Q762.65 1154.69 762.65 1145.97 Q762.65 1137.22 765.705 1132.63 Q768.784 1128.03 774.594 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1121.29 1159.28 L1137.61 1159.28 L1137.61 1163.21 L1115.67 1163.21 L1115.67 1159.28 Q1118.33 1156.52 1122.91 1151.89 Q1127.52 1147.24 1128.7 1145.9 Q1130.94 1143.37 1131.82 1141.64 Q1132.73 1139.88 1132.73 1138.19 Q1132.73 1135.43 1130.78 1133.7 Q1128.86 1131.96 1125.76 1131.96 Q1123.56 1131.96 1121.11 1132.73 Q1118.67 1133.49 1115.9 1135.04 L1115.9 1130.32 Q1118.72 1129.18 1121.17 1128.61 Q1123.63 1128.03 1125.67 1128.03 Q1131.04 1128.03 1134.23 1130.71 Q1137.42 1133.4 1137.42 1137.89 Q1137.42 1140.02 1136.61 1141.94 Q1135.83 1143.84 1133.72 1146.43 Q1133.14 1147.1 1130.04 1150.32 Q1126.94 1153.51 1121.29 1159.28 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1481.69 1132.73 L1469.88 1151.17 L1481.69 1151.17 L1481.69 1132.73 M1480.46 1128.65 L1486.34 1128.65 L1486.34 1151.17 L1491.27 1151.17 L1491.27 1155.06 L1486.34 1155.06 L1486.34 1163.21 L1481.69 1163.21 L1481.69 1155.06 L1466.09 1155.06 L1466.09 1150.55 L1480.46 1128.65 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1831.13 1144.07 Q1827.98 1144.07 1826.13 1146.22 Q1824.3 1148.37 1824.3 1152.12 Q1824.3 1155.85 1826.13 1158.03 Q1827.98 1160.18 1831.13 1160.18 Q1834.28 1160.18 1836.11 1158.03 Q1837.96 1155.85 1837.96 1152.12 Q1837.96 1148.37 1836.11 1146.22 Q1834.28 1144.07 1831.13 1144.07 M1840.41 1129.42 L1840.41 1133.67 Q1838.65 1132.84 1836.85 1132.4 Q1835.06 1131.96 1833.31 1131.96 Q1828.68 1131.96 1826.22 1135.09 Q1823.79 1138.21 1823.44 1144.53 Q1824.81 1142.52 1826.87 1141.45 Q1828.93 1140.36 1831.41 1140.36 Q1836.62 1140.36 1839.62 1143.54 Q1842.66 1146.68 1842.66 1152.12 Q1842.66 1157.45 1839.51 1160.67 Q1836.36 1163.88 1831.13 1163.88 Q1825.13 1163.88 1821.96 1159.3 Q1818.79 1154.69 1818.79 1145.97 Q1818.79 1137.77 1822.68 1132.91 Q1826.57 1128.03 1833.12 1128.03 Q1834.88 1128.03 1836.66 1128.37 Q1838.47 1128.72 1840.41 1129.42 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1052.57 1208.4 L1039.68 1225.74 L1053.24 1244.04 L1046.34 1244.04 L1035.96 1230.04 L1025.58 1244.04 L1018.68 1244.04 L1032.52 1225.39 L1019.85 1208.4 L1026.76 1208.4 L1036.21 1221.1 L1045.67 1208.4 L1052.57 1208.4 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip302)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 199.164,1040.27 1872.76,1040.27 \n \"/>\n<polyline clip-path=\"url(#clip302)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 199.164,848.798 1872.76,848.798 \n \"/>\n<polyline clip-path=\"url(#clip302)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 199.164,657.322 1872.76,657.322 \n \"/>\n<polyline clip-path=\"url(#clip302)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 199.164,465.846 1872.76,465.846 \n \"/>\n<polyline clip-path=\"url(#clip302)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 199.164,274.369 1872.76,274.369 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 199.164,1106.38 199.164,123.472 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 199.164,1040.27 218.061,1040.27 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 199.164,848.798 218.061,848.798 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 199.164,657.322 218.061,657.322 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 199.164,465.846 218.061,465.846 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 199.164,274.369 218.061,274.369 \n \"/>\n<path clip-path=\"url(#clip300)\" d=\"M158.419 1026.07 Q154.808 1026.07 152.979 1029.64 Q151.174 1033.18 151.174 1040.31 Q151.174 1047.42 152.979 1050.98 Q154.808 1054.52 158.419 1054.52 Q162.053 1054.52 163.859 1050.98 Q165.688 1047.42 165.688 1040.31 Q165.688 1033.18 163.859 1029.64 Q162.053 1026.07 158.419 1026.07 M158.419 1022.37 Q164.229 1022.37 167.285 1026.98 Q170.364 1031.56 170.364 1040.31 Q170.364 1049.04 167.285 1053.64 Q164.229 1058.23 158.419 1058.23 Q152.609 1058.23 149.53 1053.64 Q146.475 1049.04 146.475 1040.31 Q146.475 1031.56 149.53 1026.98 Q152.609 1022.37 158.419 1022.37 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M149.461 831.518 L167.817 831.518 L167.817 835.453 L153.743 835.453 L153.743 843.925 Q154.762 843.578 155.78 843.416 Q156.799 843.231 157.817 843.231 Q163.604 843.231 166.984 846.402 Q170.364 849.574 170.364 854.99 Q170.364 860.569 166.891 863.671 Q163.419 866.749 157.1 866.749 Q154.924 866.749 152.655 866.379 Q150.41 866.009 148.003 865.268 L148.003 860.569 Q150.086 861.703 152.308 862.259 Q154.53 862.814 157.007 862.814 Q161.012 862.814 163.35 860.708 Q165.688 858.601 165.688 854.99 Q165.688 851.379 163.35 849.273 Q161.012 847.166 157.007 847.166 Q155.132 847.166 153.257 847.583 Q151.405 848 149.461 848.879 L149.461 831.518 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M119.068 670.667 L126.706 670.667 L126.706 644.301 L118.396 645.968 L118.396 641.708 L126.66 640.042 L131.336 640.042 L131.336 670.667 L138.975 670.667 L138.975 674.602 L119.068 674.602 L119.068 670.667 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M158.419 643.121 Q154.808 643.121 152.979 646.685 Q151.174 650.227 151.174 657.357 Q151.174 664.463 152.979 668.028 Q154.808 671.569 158.419 671.569 Q162.053 671.569 163.859 668.028 Q165.688 664.463 165.688 657.357 Q165.688 650.227 163.859 646.685 Q162.053 643.121 158.419 643.121 M158.419 639.417 Q164.229 639.417 167.285 644.023 Q170.364 648.607 170.364 657.357 Q170.364 666.083 167.285 670.69 Q164.229 675.273 158.419 675.273 Q152.609 675.273 149.53 670.69 Q146.475 666.083 146.475 657.357 Q146.475 648.607 149.53 644.023 Q152.609 639.417 158.419 639.417 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M120.063 479.19 L127.702 479.19 L127.702 452.825 L119.392 454.491 L119.392 450.232 L127.655 448.566 L132.331 448.566 L132.331 479.19 L139.97 479.19 L139.97 483.126 L120.063 483.126 L120.063 479.19 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M149.461 448.566 L167.817 448.566 L167.817 452.501 L153.743 452.501 L153.743 460.973 Q154.762 460.626 155.78 460.464 Q156.799 460.278 157.817 460.278 Q163.604 460.278 166.984 463.45 Q170.364 466.621 170.364 472.038 Q170.364 477.616 166.891 480.718 Q163.419 483.797 157.1 483.797 Q154.924 483.797 152.655 483.426 Q150.41 483.056 148.003 482.315 L148.003 477.616 Q150.086 478.751 152.308 479.306 Q154.53 479.862 157.007 479.862 Q161.012 479.862 163.35 477.755 Q165.688 475.649 165.688 472.038 Q165.688 468.427 163.35 466.32 Q161.012 464.214 157.007 464.214 Q155.132 464.214 153.257 464.63 Q151.405 465.047 149.461 465.927 L149.461 448.566 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M122.285 287.714 L138.604 287.714 L138.604 291.649 L116.66 291.649 L116.66 287.714 Q119.322 284.959 123.905 280.33 Q128.512 275.677 129.692 274.335 Q131.938 271.811 132.817 270.075 Q133.72 268.316 133.72 266.626 Q133.72 263.872 131.776 262.136 Q129.855 260.399 126.753 260.399 Q124.554 260.399 122.1 261.163 Q119.669 261.927 116.892 263.478 L116.892 258.756 Q119.716 257.622 122.169 257.043 Q124.623 256.464 126.66 256.464 Q132.03 256.464 135.225 259.149 Q138.419 261.835 138.419 266.325 Q138.419 268.455 137.609 270.376 Q136.822 272.274 134.716 274.867 Q134.137 275.538 131.035 278.756 Q127.933 281.95 122.285 287.714 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M158.419 260.168 Q154.808 260.168 152.979 263.733 Q151.174 267.274 151.174 274.404 Q151.174 281.51 152.979 285.075 Q154.808 288.617 158.419 288.617 Q162.053 288.617 163.859 285.075 Q165.688 281.51 165.688 274.404 Q165.688 267.274 163.859 263.733 Q162.053 260.168 158.419 260.168 M158.419 256.464 Q164.229 256.464 167.285 261.071 Q170.364 265.654 170.364 274.404 Q170.364 283.131 167.285 287.737 Q164.229 292.321 158.419 292.321 Q152.609 292.321 149.53 287.737 Q146.475 283.131 146.475 274.404 Q146.475 265.654 149.53 261.071 Q152.609 256.464 158.419 256.464 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M44.7993 850.537 Q40.8526 848.341 38.9747 845.285 Q37.0968 842.229 37.0968 838.092 Q37.0968 832.522 41.0117 829.498 Q44.8948 826.474 52.0881 826.474 L73.6042 826.474 L73.6042 832.363 L52.279 832.363 Q47.1546 832.363 44.672 834.177 Q42.1894 835.991 42.1894 839.715 Q42.1894 844.266 45.2131 846.908 Q48.2368 849.55 53.4567 849.55 L73.6042 849.55 L73.6042 855.438 L52.279 855.438 Q47.1228 855.438 44.672 857.253 Q42.1894 859.067 42.1894 862.854 Q42.1894 867.342 45.2449 869.984 Q48.2686 872.626 53.4567 872.626 L73.6042 872.626 L73.6042 878.514 L37.9562 878.514 L37.9562 872.626 L43.4944 872.626 Q40.216 870.621 38.6564 867.82 Q37.0968 865.019 37.0968 861.167 Q37.0968 857.284 39.0702 854.579 Q41.0436 851.842 44.7993 850.537 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M76.9143 799.961 Q83.28 802.444 85.2216 804.799 Q87.1631 807.154 87.1631 811.101 L87.1631 815.78 L82.2615 815.78 L82.2615 812.342 Q82.2615 809.923 81.1157 808.587 Q79.9699 807.25 75.7048 805.627 L73.0312 804.576 L37.9562 818.995 L37.9562 812.788 L65.838 801.648 L37.9562 790.508 L37.9562 784.302 L76.9143 799.961 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M42.0621 741.683 Q42.0621 746.394 45.7542 749.131 Q49.4145 751.868 55.812 751.868 Q62.2095 751.868 65.9017 749.163 Q69.5619 746.426 69.5619 741.683 Q69.5619 737.004 65.8698 734.267 Q62.1777 731.53 55.812 731.53 Q49.4781 731.53 45.786 734.267 Q42.0621 737.004 42.0621 741.683 M37.0968 741.683 Q37.0968 734.044 42.0621 729.684 Q47.0273 725.323 55.812 725.323 Q64.5649 725.323 69.5619 729.684 Q74.5272 734.044 74.5272 741.683 Q74.5272 749.354 69.5619 753.714 Q64.5649 758.043 55.812 758.043 Q47.0273 758.043 42.0621 753.714 Q37.0968 749.354 37.0968 741.683 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M59.5359 716.22 L37.9562 716.22 L37.9562 710.364 L59.3131 710.364 Q64.3739 710.364 66.9202 708.39 Q69.4346 706.417 69.4346 702.47 Q69.4346 697.728 66.4109 694.991 Q63.3872 692.222 58.1673 692.222 L37.9562 692.222 L37.9562 686.365 L73.6042 686.365 L73.6042 692.222 L68.1296 692.222 Q71.3762 694.354 72.9676 697.187 Q74.5272 699.988 74.5272 703.712 Q74.5272 709.855 70.7078 713.037 Q66.8883 716.22 59.5359 716.22 M37.0968 701.484 L37.0968 701.484 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M27.8347 668.509 L37.9562 668.509 L37.9562 656.446 L42.5077 656.446 L42.5077 668.509 L61.8594 668.509 Q66.2199 668.509 67.4613 667.332 Q68.7026 666.122 68.7026 662.462 L68.7026 656.446 L73.6042 656.446 L73.6042 662.462 Q73.6042 669.241 71.0897 671.819 Q68.5434 674.398 61.8594 674.398 L42.5077 674.398 L42.5077 678.694 L37.9562 678.694 L37.9562 674.398 L27.8347 674.398 L27.8347 668.509 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M68.257 643.078 L87.1631 643.078 L87.1631 648.967 L37.9562 648.967 L37.9562 643.078 L43.3671 643.078 Q40.1842 641.232 38.6564 638.431 Q37.0968 635.599 37.0968 631.684 Q37.0968 625.191 42.2531 621.148 Q47.4093 617.074 55.812 617.074 Q64.2147 617.074 69.371 621.148 Q74.5272 625.191 74.5272 631.684 Q74.5272 635.599 72.9994 638.431 Q71.4398 641.232 68.257 643.078 M55.812 623.154 Q49.3508 623.154 45.6905 625.827 Q41.9984 628.469 41.9984 633.116 Q41.9984 637.763 45.6905 640.437 Q49.3508 643.078 55.812 643.078 Q62.2732 643.078 65.9653 640.437 Q69.6256 637.763 69.6256 633.116 Q69.6256 628.469 65.9653 625.827 Q62.2732 623.154 55.812 623.154 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M59.5359 607.971 L37.9562 607.971 L37.9562 602.115 L59.3131 602.115 Q64.3739 602.115 66.9202 600.142 Q69.4346 598.168 69.4346 594.222 Q69.4346 589.479 66.4109 586.742 Q63.3872 583.973 58.1673 583.973 L37.9562 583.973 L37.9562 578.116 L73.6042 578.116 L73.6042 583.973 L68.1296 583.973 Q71.3762 586.105 72.9676 588.938 Q74.5272 591.739 74.5272 595.463 Q74.5272 601.606 70.7078 604.789 Q66.8883 607.971 59.5359 607.971 M37.0968 593.235 L37.0968 593.235 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M27.8347 560.26 L37.9562 560.26 L37.9562 548.197 L42.5077 548.197 L42.5077 560.26 L61.8594 560.26 Q66.2199 560.26 67.4613 559.083 Q68.7026 557.873 68.7026 554.213 L68.7026 548.197 L73.6042 548.197 L73.6042 554.213 Q73.6042 560.993 71.0897 563.571 Q68.5434 566.149 61.8594 566.149 L42.5077 566.149 L42.5077 570.446 L37.9562 570.446 L37.9562 566.149 L27.8347 566.149 L27.8347 560.26 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M37.9562 523.976 L37.9562 517.769 L67.875 506.629 L37.9562 495.489 L37.9562 489.283 L73.6042 502.651 L73.6042 510.608 L37.9562 523.976 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M55.6847 464.998 Q55.6847 472.095 57.3079 474.833 Q58.9312 477.57 62.8461 477.57 Q65.9653 477.57 67.8114 475.533 Q69.6256 473.464 69.6256 469.931 Q69.6256 465.061 66.1881 462.133 Q62.7188 459.173 56.9897 459.173 L55.6847 459.173 L55.6847 464.998 M53.2657 453.317 L73.6042 453.317 L73.6042 459.173 L68.1933 459.173 Q71.4398 461.178 72.9994 464.17 Q74.5272 467.162 74.5272 471.491 Q74.5272 476.965 71.4716 480.212 Q68.3843 483.426 63.2281 483.426 Q57.2125 483.426 54.1569 479.416 Q51.1014 475.374 51.1014 467.385 L51.1014 459.173 L50.5285 459.173 Q46.4862 459.173 44.2901 461.847 Q42.0621 464.488 42.0621 469.295 Q42.0621 472.35 42.7941 475.246 Q43.5262 478.143 44.9903 480.816 L39.5795 480.816 Q38.3381 477.602 37.7334 474.578 Q37.0968 471.554 37.0968 468.69 Q37.0968 460.955 41.1072 457.136 Q45.1176 453.317 53.2657 453.317 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M24.079 441.254 L24.079 435.397 L73.6042 435.397 L73.6042 441.254 L24.079 441.254 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M59.5359 423.748 L37.9562 423.748 L37.9562 417.891 L59.3131 417.891 Q64.3739 417.891 66.9202 415.918 Q69.4346 413.945 69.4346 409.998 Q69.4346 405.256 66.4109 402.518 Q63.3872 399.749 58.1673 399.749 L37.9562 399.749 L37.9562 393.893 L73.6042 393.893 L73.6042 399.749 L68.1296 399.749 Q71.3762 401.882 72.9676 404.714 Q74.5272 407.515 74.5272 411.239 Q74.5272 417.382 70.7078 420.565 Q66.8883 423.748 59.5359 423.748 M37.0968 409.011 L37.0968 409.011 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M54.3161 351.338 L57.1806 351.338 L57.1806 378.265 Q63.2281 377.883 66.4109 374.636 Q69.5619 371.358 69.5619 365.534 Q69.5619 362.16 68.7344 359.009 Q67.9069 355.826 66.2518 352.707 L71.7899 352.707 Q73.1267 355.858 73.827 359.168 Q74.5272 362.478 74.5272 365.884 Q74.5272 374.414 69.5619 379.411 Q64.5967 384.376 56.1303 384.376 Q47.3774 384.376 42.2531 379.665 Q37.0968 374.923 37.0968 366.902 Q37.0968 359.709 41.7438 355.539 Q46.3589 351.338 54.3161 351.338 M52.5973 357.194 Q47.7912 357.258 44.9266 359.9 Q42.0621 362.51 42.0621 366.838 Q42.0621 371.74 44.8312 374.7 Q47.6002 377.628 52.6292 378.074 L52.5973 357.194 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M818.75 12.096 L830.943 12.096 L846.377 53.2532 L861.892 12.096 L874.086 12.096 L874.086 72.576 L866.105 72.576 L866.105 19.4686 L850.509 60.9499 L842.286 60.9499 L826.69 19.4686 L826.69 72.576 L818.75 72.576 L818.75 12.096 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M908.883 76.7889 Q905.723 84.8907 902.725 87.3618 Q899.728 89.8329 894.705 89.8329 L888.75 89.8329 L888.75 83.5945 L893.125 83.5945 Q896.204 83.5945 897.905 82.1361 Q899.606 80.6778 901.672 75.2496 L903.009 71.8468 L884.658 27.2059 L892.558 27.2059 L906.736 62.6918 L920.914 27.2059 L928.813 27.2059 L908.883 76.7889 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M994.478 44.2197 Q997.112 45.1109 999.583 48.0275 Q1002.09 50.9442 1004.61 56.0483 L1012.91 72.576 L1004.12 72.576 L996.382 57.061 Q993.385 50.9847 990.549 48.9997 Q987.754 47.0148 982.893 47.0148 L973.981 47.0148 L973.981 72.576 L965.798 72.576 L965.798 12.096 L984.27 12.096 Q994.641 12.096 999.745 16.4305 Q1004.85 20.7649 1004.85 29.5149 Q1004.85 35.2267 1002.18 38.994 Q999.542 42.7613 994.478 44.2197 M973.981 18.8205 L973.981 40.2903 L984.27 40.2903 Q990.185 40.2903 993.182 37.5762 Q996.22 34.8216 996.22 29.5149 Q996.22 24.2082 993.182 21.5346 Q990.185 18.8205 984.27 18.8205 L973.981 18.8205 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1058.2 48.0275 L1058.2 51.6733 L1023.93 51.6733 Q1024.41 59.3701 1028.55 63.421 Q1032.72 67.4314 1040.13 67.4314 Q1044.43 67.4314 1048.44 66.3781 Q1052.49 65.3249 1056.46 63.2184 L1056.46 70.267 Q1052.45 71.9684 1048.23 72.8596 Q1044.02 73.7508 1039.69 73.7508 Q1028.83 73.7508 1022.47 67.4314 Q1016.15 61.1119 1016.15 50.3365 Q1016.15 39.1965 1022.15 32.6746 Q1028.18 26.1121 1038.39 26.1121 Q1047.55 26.1121 1052.85 32.0264 Q1058.2 37.9003 1058.2 48.0275 M1050.75 45.84 Q1050.66 39.7232 1047.3 36.0774 Q1043.98 32.4315 1038.47 32.4315 Q1032.23 32.4315 1028.47 35.9558 Q1024.74 39.4801 1024.17 45.8805 L1050.75 45.84 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1099.36 28.5427 L1099.36 35.5912 Q1096.2 33.9709 1092.79 33.1607 Q1089.39 32.3505 1085.75 32.3505 Q1080.2 32.3505 1077.4 34.0519 Q1074.65 35.7533 1074.65 39.156 Q1074.65 41.7486 1076.63 43.2475 Q1078.62 44.7058 1084.61 46.0426 L1087.16 46.6097 Q1095.1 48.3111 1098.42 51.4303 Q1101.79 54.509 1101.79 60.0587 Q1101.79 66.3781 1096.76 70.0644 Q1091.78 73.7508 1083.03 73.7508 Q1079.39 73.7508 1075.42 73.0216 Q1071.49 72.3329 1067.11 70.9151 L1067.11 63.2184 Q1071.24 65.3654 1075.25 66.4591 Q1079.26 67.5124 1083.19 67.5124 Q1088.46 67.5124 1091.3 65.73 Q1094.13 63.9071 1094.13 60.6258 Q1094.13 57.5877 1092.06 55.9673 Q1090.04 54.3469 1083.11 52.8481 L1080.52 52.2405 Q1073.59 50.7821 1070.51 47.7845 Q1067.44 44.7463 1067.44 39.4801 Q1067.44 33.0797 1071.97 29.5959 Q1076.51 26.1121 1084.85 26.1121 Q1088.99 26.1121 1092.63 26.7198 Q1096.28 27.3274 1099.36 28.5427 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1112.89 54.671 L1112.89 27.2059 L1120.34 27.2059 L1120.34 54.3874 Q1120.34 60.8284 1122.85 64.0691 Q1125.36 67.2693 1130.39 67.2693 Q1136.42 67.2693 1139.91 63.421 Q1143.43 59.5726 1143.43 52.9291 L1143.43 27.2059 L1150.88 27.2059 L1150.88 72.576 L1143.43 72.576 L1143.43 65.6084 Q1140.72 69.7404 1137.11 71.7658 Q1133.55 73.7508 1128.81 73.7508 Q1120.99 73.7508 1116.94 68.8897 Q1112.89 64.0286 1112.89 54.671 M1131.64 26.1121 L1131.64 26.1121 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1166.24 9.54393 L1173.69 9.54393 L1173.69 72.576 L1166.24 72.576 L1166.24 9.54393 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1196.66 14.324 L1196.66 27.2059 L1212.01 27.2059 L1212.01 32.9987 L1196.66 32.9987 L1196.66 57.6282 Q1196.66 63.1779 1198.16 64.7578 Q1199.7 66.3376 1204.36 66.3376 L1212.01 66.3376 L1212.01 72.576 L1204.36 72.576 Q1195.73 72.576 1192.45 69.3758 Q1189.16 66.1351 1189.16 57.6282 L1189.16 32.9987 L1183.7 32.9987 L1183.7 27.2059 L1189.16 27.2059 L1189.16 14.324 L1196.66 14.324 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1250.74 28.5427 L1250.74 35.5912 Q1247.58 33.9709 1244.18 33.1607 Q1240.77 32.3505 1237.13 32.3505 Q1231.58 32.3505 1228.78 34.0519 Q1226.03 35.7533 1226.03 39.156 Q1226.03 41.7486 1228.01 43.2475 Q1230 44.7058 1235.99 46.0426 L1238.55 46.6097 Q1246.49 48.3111 1249.81 51.4303 Q1253.17 54.509 1253.17 60.0587 Q1253.17 66.3781 1248.15 70.0644 Q1243.16 73.7508 1234.41 73.7508 Q1230.77 73.7508 1226.8 73.0216 Q1222.87 72.3329 1218.49 70.9151 L1218.49 63.2184 Q1222.63 65.3654 1226.64 66.4591 Q1230.65 67.5124 1234.58 67.5124 Q1239.84 67.5124 1242.68 65.73 Q1245.51 63.9071 1245.51 60.6258 Q1245.51 57.5877 1243.45 55.9673 Q1241.42 54.3469 1234.49 52.8481 L1231.9 52.2405 Q1224.97 50.7821 1221.9 47.7845 Q1218.82 44.7463 1218.82 39.4801 Q1218.82 33.0797 1223.35 29.5959 Q1227.89 26.1121 1236.24 26.1121 Q1240.37 26.1121 1244.01 26.7198 Q1247.66 27.3274 1250.74 28.5427 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip302)\" style=\"stroke:#ff0000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none\" points=\"\n 246.529,415.679 257.197,434.57 267.865,453.179 278.533,471.508 289.201,489.554 299.869,507.32 310.537,524.804 321.205,542.007 331.873,558.929 342.541,575.569 \n 353.209,591.928 363.877,608.006 374.545,623.802 385.213,639.317 395.881,654.551 406.549,669.504 417.217,684.175 427.885,698.564 438.553,712.673 449.221,726.5 \n 459.889,740.046 470.557,753.31 481.225,766.293 491.893,778.995 502.561,791.415 513.229,803.554 523.897,815.412 534.565,826.989 545.233,838.284 555.901,849.298 \n 566.569,860.03 577.237,870.482 587.905,880.651 598.573,890.54 609.241,900.147 619.909,909.473 630.577,918.518 641.245,927.281 651.913,935.763 662.581,943.963 \n 673.248,951.883 683.916,959.521 694.584,966.877 705.252,973.953 715.92,980.747 726.588,987.259 737.256,993.491 747.924,999.441 758.592,1005.11 769.26,1010.5 \n 779.928,1015.6 790.596,1020.43 801.264,1024.97 811.932,1029.23 822.6,1033.21 833.268,1036.91 843.936,1040.33 854.604,1043.47 865.272,1046.32 875.94,1048.9 \n 886.608,1051.19 897.276,1053.2 907.944,1054.93 918.612,1056.38 929.28,1057.55 939.948,1058.43 950.616,1059.04 961.284,1059.36 971.952,1059.4 982.62,1059.17 \n 993.288,1058.65 1003.96,1057.84 1014.62,1056.76 1025.29,1055.4 1035.96,1053.75 1046.63,1051.82 1057.3,1049.61 1067.96,1047.12 1078.63,1044.35 1089.3,1041.3 \n 1099.97,1037.97 1110.64,1034.35 1121.3,1030.46 1131.97,1026.28 1142.64,1021.82 1153.31,1017.08 1163.98,1012.06 1174.64,1006.75 1185.31,1001.17 1195.98,995.305 \n 1206.65,989.158 1217.32,982.73 1227.98,976.02 1238.65,969.029 1249.32,961.757 1259.99,954.204 1270.66,946.369 1281.32,938.253 1291.99,929.855 1302.66,921.176 \n 1313.33,912.216 1324,902.974 1334.66,893.452 1345.33,883.647 1356,873.562 1366.67,863.195 1377.34,852.547 1388,841.618 1398.67,830.407 1409.34,818.915 \n 1420.01,807.141 1430.67,795.087 1441.34,782.751 1452.01,770.133 1462.68,757.234 1473.35,744.054 1484.01,730.593 1494.68,716.85 1505.35,702.826 1516.02,688.521 \n 1526.69,673.934 1537.35,659.066 1548.02,643.917 1558.69,628.486 1569.36,612.774 1580.03,596.781 1590.69,580.507 1601.36,563.951 1612.03,547.113 1622.7,529.995 \n 1633.37,512.595 1644.03,494.914 1654.7,476.951 1665.37,458.707 1676.04,440.182 1686.71,421.376 1697.37,402.288 1708.04,382.919 1718.71,363.268 1729.38,343.336 \n 1740.05,323.123 1750.71,302.629 1761.38,281.853 1772.05,260.796 1782.72,239.457 1793.39,217.838 1804.05,195.936 1814.72,173.754 1825.39,151.29 \n \"/>\n<polyline clip-path=\"url(#clip302)\" style=\"stroke:#0000ff; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" stroke-dasharray=\"16, 10\" points=\"\n 246.529,1078.19 257.197,1077.79 267.865,1077.25 278.533,1076.58 289.201,1075.78 299.869,1074.85 310.537,1073.79 321.205,1072.6 331.873,1071.3 342.541,1069.88 \n 353.209,1068.36 363.877,1066.73 374.545,1065 385.213,1063.18 395.881,1061.28 406.549,1059.31 417.217,1057.26 427.885,1055.15 438.553,1052.98 449.221,1050.77 \n 459.889,1048.52 470.557,1046.24 481.225,1043.94 491.893,1041.62 502.561,1039.3 513.229,1036.99 523.897,1034.68 534.565,1032.4 545.233,1030.14 555.901,1027.92 \n 566.569,1025.75 577.237,1023.63 587.905,1021.57 598.573,1019.58 609.241,1017.67 619.909,1015.84 630.577,1014.1 641.245,1012.45 651.913,1010.91 662.581,1009.47 \n 673.248,1008.15 683.916,1006.95 694.584,1005.87 705.252,1004.91 715.92,1004.09 726.588,1003.39 737.256,1002.84 747.924,1002.42 758.592,1002.14 769.26,1002 \n 779.928,1002 790.596,1002.14 801.264,1002.42 811.932,1002.84 822.6,1003.39 833.268,1004.09 843.936,1004.91 854.604,1005.87 865.272,1006.95 875.94,1008.15 \n 886.608,1009.47 897.276,1010.91 907.944,1012.45 918.612,1014.1 929.28,1015.84 939.948,1017.67 950.616,1019.58 961.284,1021.57 971.952,1023.63 982.62,1025.75 \n 993.288,1027.92 1003.96,1030.14 1014.62,1032.4 1025.29,1034.68 1035.96,1036.99 1046.63,1039.3 1057.3,1041.62 1067.96,1043.94 1078.63,1046.24 1089.3,1048.52 \n 1099.97,1050.77 1110.64,1052.98 1121.3,1055.15 1131.97,1057.26 1142.64,1059.31 1153.31,1061.28 1163.98,1063.18 1174.64,1065 1185.31,1066.73 1195.98,1068.36 \n 1206.65,1069.88 1217.32,1071.3 1227.98,1072.6 1238.65,1073.79 1249.32,1074.85 1259.99,1075.78 1270.66,1076.58 1281.32,1077.25 1291.99,1077.79 1302.66,1078.19 \n 1313.33,1078.44 1324,1078.56 1334.66,1078.54 1345.33,1078.38 1356,1078.07 1366.67,1077.63 1377.34,1077.05 1388,1076.34 1398.67,1075.49 1409.34,1074.51 \n 1420.01,1073.41 1430.67,1072.19 1441.34,1070.85 1452.01,1069.39 1462.68,1067.83 1473.35,1066.17 1484.01,1064.42 1494.68,1062.57 1505.35,1060.64 1516.02,1058.64 \n 1526.69,1056.57 1537.35,1054.45 1548.02,1052.26 1558.69,1050.04 1569.36,1047.78 1580.03,1045.49 1590.69,1043.18 1601.36,1040.86 1612.03,1038.54 1622.7,1036.23 \n 1633.37,1033.93 1644.03,1031.66 1654.7,1029.41 1665.37,1027.21 1676.04,1025.05 1686.71,1022.95 1697.37,1020.91 1708.04,1018.95 1718.71,1017.06 1729.38,1015.26 \n 1740.05,1013.55 1750.71,1011.94 1761.38,1010.43 1772.05,1009.03 1782.72,1007.75 1793.39,1006.58 1804.05,1005.54 1814.72,1004.63 1825.39,1003.85 \n \"/>\n<path clip-path=\"url(#clip300)\" d=\"\nM1522.29 311.756 L1816.97 311.756 L1816.97 156.236 L1522.29 156.236 Z\n \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 1522.29,311.756 1816.97,311.756 1816.97,156.236 1522.29,156.236 1522.29,311.756 \n \"/>\n<polyline clip-path=\"url(#clip300)\" style=\"stroke:#ff0000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 1540.88,208.076 1652.46,208.076 \n \"/>\n<path clip-path=\"url(#clip300)\" d=\"M1687.56 189.337 L1687.56 192.879 L1683.48 192.879 Q1681.19 192.879 1680.29 193.805 Q1679.41 194.731 1679.41 197.138 L1679.41 199.43 L1686.42 199.43 L1686.42 202.74 L1679.41 202.74 L1679.41 225.356 L1675.13 225.356 L1675.13 202.74 L1671.05 202.74 L1671.05 199.43 L1675.13 199.43 L1675.13 197.624 Q1675.13 193.296 1677.14 191.328 Q1679.15 189.337 1683.53 189.337 L1687.56 189.337 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1712.67 209.708 L1712.67 225.356 L1708.41 225.356 L1708.41 209.847 Q1708.41 206.166 1706.98 204.337 Q1705.54 202.509 1702.67 202.509 Q1699.22 202.509 1697.23 204.708 Q1695.24 206.907 1695.24 210.703 L1695.24 225.356 L1690.96 225.356 L1690.96 199.43 L1695.24 199.43 L1695.24 203.458 Q1696.77 201.12 1698.83 199.962 Q1700.91 198.805 1703.62 198.805 Q1708.09 198.805 1710.38 201.583 Q1712.67 204.337 1712.67 209.708 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1722.58 221.421 L1730.22 221.421 L1730.22 195.055 L1721.91 196.722 L1721.91 192.462 L1730.17 190.796 L1734.85 190.796 L1734.85 221.421 L1742.49 221.421 L1742.49 225.356 L1722.58 225.356 L1722.58 221.421 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1761.56 189.384 Q1758.46 194.708 1756.95 199.916 Q1755.45 205.124 1755.45 210.472 Q1755.45 215.819 1756.95 221.073 Q1758.48 226.305 1761.56 231.606 L1757.86 231.606 Q1754.39 226.166 1752.65 220.911 Q1750.94 215.657 1750.94 210.472 Q1750.94 205.31 1752.65 200.078 Q1754.36 194.847 1757.86 189.384 L1761.56 189.384 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1769.15 189.384 L1772.86 189.384 Q1776.33 194.847 1778.04 200.078 Q1779.78 205.31 1779.78 210.472 Q1779.78 215.657 1778.04 220.911 Q1776.33 226.166 1772.86 231.606 L1769.15 231.606 Q1772.23 226.305 1773.74 221.073 Q1775.26 215.819 1775.26 210.472 Q1775.26 205.124 1773.74 199.916 Q1772.23 194.708 1769.15 189.384 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip300)\" style=\"stroke:#0000ff; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" stroke-dasharray=\"16, 10\" points=\"\n 1540.88,259.916 1652.46,259.916 \n \"/>\n<path clip-path=\"url(#clip300)\" d=\"M1691.56 252.265 L1691.56 256.247 Q1689.76 255.251 1687.93 254.765 Q1686.12 254.256 1684.27 254.256 Q1680.13 254.256 1677.83 256.895 Q1675.54 259.511 1675.54 264.256 Q1675.54 269.001 1677.83 271.64 Q1680.13 274.256 1684.27 274.256 Q1686.12 274.256 1687.93 273.77 Q1689.76 273.261 1691.56 272.265 L1691.56 276.2 Q1689.78 277.034 1687.86 277.45 Q1685.96 277.867 1683.81 277.867 Q1677.95 277.867 1674.5 274.186 Q1671.05 270.506 1671.05 264.256 Q1671.05 257.913 1674.52 254.279 Q1678.02 250.645 1684.08 250.645 Q1686.05 250.645 1687.93 251.062 Q1689.8 251.455 1691.56 252.265 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1709.02 254.256 Q1705.59 254.256 1703.6 256.941 Q1701.61 259.603 1701.61 264.256 Q1701.61 268.909 1703.58 271.594 Q1705.57 274.256 1709.02 274.256 Q1712.42 274.256 1714.41 271.571 Q1716.4 268.886 1716.4 264.256 Q1716.4 259.65 1714.41 256.964 Q1712.42 254.256 1709.02 254.256 M1709.02 250.645 Q1714.57 250.645 1717.74 254.256 Q1720.91 257.867 1720.91 264.256 Q1720.91 270.622 1717.74 274.256 Q1714.57 277.867 1709.02 277.867 Q1703.44 277.867 1700.27 274.256 Q1697.12 270.622 1697.12 264.256 Q1697.12 257.867 1700.27 254.256 Q1703.44 250.645 1709.02 250.645 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip300)\" d=\"M1744.5 252.034 L1744.5 256.062 Q1742.7 255.136 1740.75 254.673 Q1738.81 254.21 1736.72 254.21 Q1733.55 254.21 1731.95 255.182 Q1730.38 256.154 1730.38 258.099 Q1730.38 259.58 1731.51 260.437 Q1732.65 261.27 1736.08 262.034 L1737.53 262.358 Q1742.07 263.33 1743.97 265.112 Q1745.89 266.872 1745.89 270.043 Q1745.89 273.654 1743.02 275.761 Q1740.17 277.867 1735.17 277.867 Q1733.09 277.867 1730.82 277.45 Q1728.58 277.057 1726.08 276.247 L1726.08 271.849 Q1728.44 273.075 1730.73 273.7 Q1733.02 274.302 1735.26 274.302 Q1738.27 274.302 1739.89 273.284 Q1741.51 272.242 1741.51 270.367 Q1741.51 268.631 1740.33 267.705 Q1739.18 266.779 1735.22 265.923 L1733.74 265.575 Q1729.78 264.742 1728.02 263.029 Q1726.26 261.293 1726.26 258.284 Q1726.26 254.626 1728.85 252.636 Q1731.45 250.645 1736.21 250.645 Q1738.58 250.645 1740.66 250.992 Q1742.74 251.339 1744.5 252.034 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /></svg>\n"
},
"metadata": {}
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Task\n",
"\n",
"Consider different interest rates in the interval (-0.05,0.1). Plot the prices of 3-month and 10-year bonds as functions of the interest rate."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 101,
"source": [
"\n",
"x = range(-0.05,stop=0.1,length=100) \n",
"printmat(x)\n",
"\n",
"p2 = plot( [x x], [BondPrice.(0.33, x) BondPrice.(10, x)],\n",
" label = [\"y 0.3\" \"y 10\"],\n",
" xlabel = \"interest rate\",\n",
" ylabel = \"bond price\",\n",
" linecolor = [:red :blue],\n",
" linestyle = [:solid :dot],\n",
" linewidth = [2 2] )\n",
"display(p2)"
],
"outputs": [
{
"output_type": "display_data",
"data": {
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"480\" height=\"320\" viewBox=\"0 0 1920 1280\">\n<defs>\n <clipPath id=\"clip500\">\n <rect x=\"0\" y=\"0\" width=\"1920\" height=\"1280\"/>\n </clipPath>\n</defs>\n<path clip-path=\"url(#clip500)\" d=\"\nM0 1280 L1920 1280 L1920 0 L0 0 Z\n \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n<defs>\n <clipPath id=\"clip501\">\n <rect x=\"384\" y=\"0\" width=\"1345\" height=\"1280\"/>\n </clipPath>\n</defs>\n<path clip-path=\"url(#clip500)\" d=\"\nM244.742 1106.38 L1872.76 1106.38 L1872.76 47.2441 L244.742 47.2441 Z\n \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n<defs>\n <clipPath id=\"clip502\">\n <rect x=\"244\" y=\"47\" width=\"1629\" height=\"1060\"/>\n </clipPath>\n</defs>\n<polyline clip-path=\"url(#clip502)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 495.6,1106.38 495.6,47.2441 \n \"/>\n<polyline clip-path=\"url(#clip502)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 802.772,1106.38 802.772,47.2441 \n \"/>\n<polyline clip-path=\"url(#clip502)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 1109.94,1106.38 1109.94,47.2441 \n \"/>\n<polyline clip-path=\"url(#clip502)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 1417.12,1106.38 1417.12,47.2441 \n \"/>\n<polyline clip-path=\"url(#clip502)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 1724.29,1106.38 1724.29,47.2441 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 244.742,1106.38 1872.76,1106.38 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 495.6,1106.38 495.6,1087.48 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 802.772,1106.38 802.772,1087.48 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 1109.94,1106.38 1109.94,1087.48 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 1417.12,1106.38 1417.12,1087.48 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 1724.29,1106.38 1724.29,1087.48 \n \"/>\n<path clip-path=\"url(#clip500)\" d=\"M427.371 1146.38 L457.046 1146.38 L457.046 1150.32 L427.371 1150.32 L427.371 1146.38 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M477.139 1131.73 Q473.528 1131.73 471.699 1135.3 Q469.894 1138.84 469.894 1145.97 Q469.894 1153.07 471.699 1156.64 Q473.528 1160.18 477.139 1160.18 Q480.773 1160.18 482.579 1156.64 Q484.407 1153.07 484.407 1145.97 Q484.407 1138.84 482.579 1135.3 Q480.773 1131.73 477.139 1131.73 M477.139 1128.03 Q482.949 1128.03 486.005 1132.63 Q489.083 1137.22 489.083 1145.97 Q489.083 1154.69 486.005 1159.3 Q482.949 1163.88 477.139 1163.88 Q471.329 1163.88 468.25 1159.3 Q465.195 1154.69 465.195 1145.97 Q465.195 1137.22 468.25 1132.63 Q471.329 1128.03 477.139 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M497.301 1157.33 L502.185 1157.33 L502.185 1163.21 L497.301 1163.21 L497.301 1157.33 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M522.37 1131.73 Q518.759 1131.73 516.93 1135.3 Q515.125 1138.84 515.125 1145.97 Q515.125 1153.07 516.93 1156.64 Q518.759 1160.18 522.37 1160.18 Q526.004 1160.18 527.81 1156.64 Q529.639 1153.07 529.639 1145.97 Q529.639 1138.84 527.81 1135.3 Q526.004 1131.73 522.37 1131.73 M522.37 1128.03 Q528.18 1128.03 531.236 1132.63 Q534.315 1137.22 534.315 1145.97 Q534.315 1154.69 531.236 1159.3 Q528.18 1163.88 522.37 1163.88 Q516.56 1163.88 513.481 1159.3 Q510.426 1154.69 510.426 1145.97 Q510.426 1137.22 513.481 1132.63 Q516.56 1128.03 522.37 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M556.699 1144.58 Q560.055 1145.3 561.93 1147.56 Q563.828 1149.83 563.828 1153.17 Q563.828 1158.28 560.31 1161.08 Q556.791 1163.88 550.31 1163.88 Q548.134 1163.88 545.819 1163.44 Q543.528 1163.03 541.074 1162.17 L541.074 1157.66 Q543.018 1158.79 545.333 1159.37 Q547.648 1159.95 550.171 1159.95 Q554.569 1159.95 556.861 1158.21 Q559.176 1156.48 559.176 1153.17 Q559.176 1150.11 557.023 1148.4 Q554.893 1146.66 551.074 1146.66 L547.046 1146.66 L547.046 1142.82 L551.259 1142.82 Q554.708 1142.82 556.537 1141.45 Q558.365 1140.06 558.365 1137.47 Q558.365 1134.81 556.467 1133.4 Q554.592 1131.96 551.074 1131.96 Q549.152 1131.96 546.953 1132.38 Q544.754 1132.8 542.115 1133.67 L542.115 1129.51 Q544.777 1128.77 547.092 1128.4 Q549.43 1128.03 551.49 1128.03 Q556.814 1128.03 559.916 1130.46 Q563.018 1132.86 563.018 1136.99 Q563.018 1139.86 561.375 1141.85 Q559.731 1143.81 556.699 1144.58 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M765.075 1131.73 Q761.464 1131.73 759.636 1135.3 Q757.83 1138.84 757.83 1145.97 Q757.83 1153.07 759.636 1156.64 Q761.464 1160.18 765.075 1160.18 Q768.71 1160.18 770.515 1156.64 Q772.344 1153.07 772.344 1145.97 Q772.344 1138.84 770.515 1135.3 Q768.71 1131.73 765.075 1131.73 M765.075 1128.03 Q770.886 1128.03 773.941 1132.63 Q777.02 1137.22 777.02 1145.97 Q777.02 1154.69 773.941 1159.3 Q770.886 1163.88 765.075 1163.88 Q759.265 1163.88 756.187 1159.3 Q753.131 1154.69 753.131 1145.97 Q753.131 1137.22 756.187 1132.63 Q759.265 1128.03 765.075 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M785.237 1157.33 L790.122 1157.33 L790.122 1163.21 L785.237 1163.21 L785.237 1157.33 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M810.307 1131.73 Q806.696 1131.73 804.867 1135.3 Q803.061 1138.84 803.061 1145.97 Q803.061 1153.07 804.867 1156.64 Q806.696 1160.18 810.307 1160.18 Q813.941 1160.18 815.746 1156.64 Q817.575 1153.07 817.575 1145.97 Q817.575 1138.84 815.746 1135.3 Q813.941 1131.73 810.307 1131.73 M810.307 1128.03 Q816.117 1128.03 819.172 1132.63 Q822.251 1137.22 822.251 1145.97 Q822.251 1154.69 819.172 1159.3 Q816.117 1163.88 810.307 1163.88 Q804.496 1163.88 801.418 1159.3 Q798.362 1154.69 798.362 1145.97 Q798.362 1137.22 801.418 1132.63 Q804.496 1128.03 810.307 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M840.469 1131.73 Q836.857 1131.73 835.029 1135.3 Q833.223 1138.84 833.223 1145.97 Q833.223 1153.07 835.029 1156.64 Q836.857 1160.18 840.469 1160.18 Q844.103 1160.18 845.908 1156.64 Q847.737 1153.07 847.737 1145.97 Q847.737 1138.84 845.908 1135.3 Q844.103 1131.73 840.469 1131.73 M840.469 1128.03 Q846.279 1128.03 849.334 1132.63 Q852.413 1137.22 852.413 1145.97 Q852.413 1154.69 849.334 1159.3 Q846.279 1163.88 840.469 1163.88 Q834.658 1163.88 831.58 1159.3 Q828.524 1154.69 828.524 1145.97 Q828.524 1137.22 831.58 1132.63 Q834.658 1128.03 840.469 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1072.57 1131.73 Q1068.96 1131.73 1067.13 1135.3 Q1065.33 1138.84 1065.33 1145.97 Q1065.33 1153.07 1067.13 1156.64 Q1068.96 1160.18 1072.57 1160.18 Q1076.21 1160.18 1078.01 1156.64 Q1079.84 1153.07 1079.84 1145.97 Q1079.84 1138.84 1078.01 1135.3 Q1076.21 1131.73 1072.57 1131.73 M1072.57 1128.03 Q1078.38 1128.03 1081.44 1132.63 Q1084.52 1137.22 1084.52 1145.97 Q1084.52 1154.69 1081.44 1159.3 Q1078.38 1163.88 1072.57 1163.88 Q1066.76 1163.88 1063.68 1159.3 Q1060.63 1154.69 1060.63 1145.97 Q1060.63 1137.22 1063.68 1132.63 Q1066.76 1128.03 1072.57 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1092.73 1157.33 L1097.62 1157.33 L1097.62 1163.21 L1092.73 1163.21 L1092.73 1157.33 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1117.8 1131.73 Q1114.19 1131.73 1112.36 1135.3 Q1110.56 1138.84 1110.56 1145.97 Q1110.56 1153.07 1112.36 1156.64 Q1114.19 1160.18 1117.8 1160.18 Q1121.44 1160.18 1123.24 1156.64 Q1125.07 1153.07 1125.07 1145.97 Q1125.07 1138.84 1123.24 1135.3 Q1121.44 1131.73 1117.8 1131.73 M1117.8 1128.03 Q1123.61 1128.03 1126.67 1132.63 Q1129.75 1137.22 1129.75 1145.97 Q1129.75 1154.69 1126.67 1159.3 Q1123.61 1163.88 1117.8 1163.88 Q1111.99 1163.88 1108.91 1159.3 Q1105.86 1154.69 1105.86 1145.97 Q1105.86 1137.22 1108.91 1132.63 Q1111.99 1128.03 1117.8 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1152.13 1144.58 Q1155.49 1145.3 1157.36 1147.56 Q1159.26 1149.83 1159.26 1153.17 Q1159.26 1158.28 1155.74 1161.08 Q1152.22 1163.88 1145.74 1163.88 Q1143.57 1163.88 1141.25 1163.44 Q1138.96 1163.03 1136.51 1162.17 L1136.51 1157.66 Q1138.45 1158.79 1140.77 1159.37 Q1143.08 1159.95 1145.6 1159.95 Q1150 1159.95 1152.29 1158.21 Q1154.61 1156.48 1154.61 1153.17 Q1154.61 1150.11 1152.46 1148.4 Q1150.33 1146.66 1146.51 1146.66 L1142.48 1146.66 L1142.48 1142.82 L1146.69 1142.82 Q1150.14 1142.82 1151.97 1141.45 Q1153.8 1140.06 1153.8 1137.47 Q1153.8 1134.81 1151.9 1133.4 Q1150.03 1131.96 1146.51 1131.96 Q1144.59 1131.96 1142.39 1132.38 Q1140.19 1132.8 1137.55 1133.67 L1137.55 1129.51 Q1140.21 1128.77 1142.53 1128.4 Q1144.86 1128.03 1146.92 1128.03 Q1152.25 1128.03 1155.35 1130.46 Q1158.45 1132.86 1158.45 1136.99 Q1158.45 1139.86 1156.81 1141.85 Q1155.16 1143.81 1152.13 1144.58 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1379.34 1131.73 Q1375.73 1131.73 1373.9 1135.3 Q1372.09 1138.84 1372.09 1145.97 Q1372.09 1153.07 1373.9 1156.64 Q1375.73 1160.18 1379.34 1160.18 Q1382.97 1160.18 1384.78 1156.64 Q1386.61 1153.07 1386.61 1145.97 Q1386.61 1138.84 1384.78 1135.3 Q1382.97 1131.73 1379.34 1131.73 M1379.34 1128.03 Q1385.15 1128.03 1388.2 1132.63 Q1391.28 1137.22 1391.28 1145.97 Q1391.28 1154.69 1388.2 1159.3 Q1385.15 1163.88 1379.34 1163.88 Q1373.53 1163.88 1370.45 1159.3 Q1367.39 1154.69 1367.39 1145.97 Q1367.39 1137.22 1370.45 1132.63 Q1373.53 1128.03 1379.34 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1399.5 1157.33 L1404.39 1157.33 L1404.39 1163.21 L1399.5 1163.21 L1399.5 1157.33 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1424.57 1131.73 Q1420.96 1131.73 1419.13 1135.3 Q1417.33 1138.84 1417.33 1145.97 Q1417.33 1153.07 1419.13 1156.64 Q1420.96 1160.18 1424.57 1160.18 Q1428.2 1160.18 1430.01 1156.64 Q1431.84 1153.07 1431.84 1145.97 Q1431.84 1138.84 1430.01 1135.3 Q1428.2 1131.73 1424.57 1131.73 M1424.57 1128.03 Q1430.38 1128.03 1433.44 1132.63 Q1436.51 1137.22 1436.51 1145.97 Q1436.51 1154.69 1433.44 1159.3 Q1430.38 1163.88 1424.57 1163.88 Q1418.76 1163.88 1415.68 1159.3 Q1412.63 1154.69 1412.63 1145.97 Q1412.63 1137.22 1415.68 1132.63 Q1418.76 1128.03 1424.57 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1455.31 1144.07 Q1452.16 1144.07 1450.31 1146.22 Q1448.48 1148.37 1448.48 1152.12 Q1448.48 1155.85 1450.31 1158.03 Q1452.16 1160.18 1455.31 1160.18 Q1458.46 1160.18 1460.29 1158.03 Q1462.14 1155.85 1462.14 1152.12 Q1462.14 1148.37 1460.29 1146.22 Q1458.46 1144.07 1455.31 1144.07 M1464.59 1129.42 L1464.59 1133.67 Q1462.83 1132.84 1461.03 1132.4 Q1459.25 1131.96 1457.49 1131.96 Q1452.86 1131.96 1450.4 1135.09 Q1447.97 1138.21 1447.63 1144.53 Q1448.99 1142.52 1451.05 1141.45 Q1453.11 1140.36 1455.59 1140.36 Q1460.8 1140.36 1463.81 1143.54 Q1466.84 1146.68 1466.84 1152.12 Q1466.84 1157.45 1463.69 1160.67 Q1460.54 1163.88 1455.31 1163.88 Q1449.32 1163.88 1446.14 1159.3 Q1442.97 1154.69 1442.97 1145.97 Q1442.97 1137.77 1446.86 1132.91 Q1450.75 1128.03 1457.3 1128.03 Q1459.06 1128.03 1460.84 1128.37 Q1462.65 1128.72 1464.59 1129.42 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1686.69 1131.73 Q1683.07 1131.73 1681.25 1135.3 Q1679.44 1138.84 1679.44 1145.97 Q1679.44 1153.07 1681.25 1156.64 Q1683.07 1160.18 1686.69 1160.18 Q1690.32 1160.18 1692.13 1156.64 Q1693.95 1153.07 1693.95 1145.97 Q1693.95 1138.84 1692.13 1135.3 Q1690.32 1131.73 1686.69 1131.73 M1686.69 1128.03 Q1692.5 1128.03 1695.55 1132.63 Q1698.63 1137.22 1698.63 1145.97 Q1698.63 1154.69 1695.55 1159.3 Q1692.5 1163.88 1686.69 1163.88 Q1680.88 1163.88 1677.8 1159.3 Q1674.74 1154.69 1674.74 1145.97 Q1674.74 1137.22 1677.8 1132.63 Q1680.88 1128.03 1686.69 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1706.85 1157.33 L1711.73 1157.33 L1711.73 1163.21 L1706.85 1163.21 L1706.85 1157.33 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1731.92 1131.73 Q1728.31 1131.73 1726.48 1135.3 Q1724.67 1138.84 1724.67 1145.97 Q1724.67 1153.07 1726.48 1156.64 Q1728.31 1160.18 1731.92 1160.18 Q1735.55 1160.18 1737.36 1156.64 Q1739.18 1153.07 1739.18 1145.97 Q1739.18 1138.84 1737.36 1135.3 Q1735.55 1131.73 1731.92 1131.73 M1731.92 1128.03 Q1737.73 1128.03 1740.78 1132.63 Q1743.86 1137.22 1743.86 1145.97 Q1743.86 1154.69 1740.78 1159.3 Q1737.73 1163.88 1731.92 1163.88 Q1726.11 1163.88 1723.03 1159.3 Q1719.97 1154.69 1719.97 1145.97 Q1719.97 1137.22 1723.03 1132.63 Q1726.11 1128.03 1731.92 1128.03 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1752.22 1162.49 L1752.22 1158.24 Q1753.98 1159.07 1755.78 1159.51 Q1757.59 1159.95 1759.32 1159.95 Q1763.95 1159.95 1766.38 1156.85 Q1768.84 1153.72 1769.18 1147.38 Q1767.84 1149.37 1765.78 1150.43 Q1763.72 1151.5 1761.22 1151.5 Q1756.04 1151.5 1753 1148.37 Q1750 1145.23 1750 1139.79 Q1750 1134.46 1753.14 1131.24 Q1756.29 1128.03 1761.52 1128.03 Q1767.52 1128.03 1770.67 1132.63 Q1773.84 1137.22 1773.84 1145.97 Q1773.84 1154.14 1769.95 1159.02 Q1766.08 1163.88 1759.53 1163.88 Q1757.77 1163.88 1755.97 1163.54 Q1754.16 1163.19 1752.22 1162.49 M1761.52 1147.84 Q1764.67 1147.84 1766.5 1145.69 Q1768.35 1143.54 1768.35 1139.79 Q1768.35 1136.06 1766.5 1133.91 Q1764.67 1131.73 1761.52 1131.73 Q1758.37 1131.73 1756.52 1133.91 Q1754.69 1136.06 1754.69 1139.79 Q1754.69 1143.54 1756.52 1145.69 Q1758.37 1147.84 1761.52 1147.84 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M861.953 1208.4 L867.81 1208.4 L867.81 1244.04 L861.953 1244.04 L861.953 1208.4 M861.953 1194.52 L867.81 1194.52 L867.81 1201.93 L861.953 1201.93 L861.953 1194.52 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M909.696 1222.53 L909.696 1244.04 L903.839 1244.04 L903.839 1222.72 Q903.839 1217.66 901.866 1215.14 Q899.893 1212.63 895.946 1212.63 Q891.204 1212.63 888.466 1215.65 Q885.729 1218.68 885.729 1223.9 L885.729 1244.04 L879.841 1244.04 L879.841 1208.4 L885.729 1208.4 L885.729 1213.93 Q887.83 1210.72 890.662 1209.13 Q893.527 1207.54 897.251 1207.54 Q903.394 1207.54 906.545 1211.36 Q909.696 1215.14 909.696 1222.53 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M927.17 1198.27 L927.17 1208.4 L939.233 1208.4 L939.233 1212.95 L927.17 1212.95 L927.17 1232.3 Q927.17 1236.66 928.347 1237.9 Q929.557 1239.14 933.217 1239.14 L939.233 1239.14 L939.233 1244.04 L933.217 1244.04 Q926.438 1244.04 923.86 1241.53 Q921.282 1238.98 921.282 1232.3 L921.282 1212.95 L916.985 1212.95 L916.985 1208.4 L921.282 1208.4 L921.282 1198.27 L927.17 1198.27 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M977.427 1224.76 L977.427 1227.62 L950.5 1227.62 Q950.882 1233.67 954.129 1236.85 Q957.407 1240 963.232 1240 Q966.605 1240 969.756 1239.17 Q972.939 1238.35 976.058 1236.69 L976.058 1242.23 Q972.907 1243.57 969.597 1244.27 Q966.287 1244.97 962.881 1244.97 Q954.351 1244.97 949.354 1240 Q944.389 1235.04 944.389 1226.57 Q944.389 1217.82 949.1 1212.69 Q953.842 1207.54 961.863 1207.54 Q969.056 1207.54 973.226 1212.18 Q977.427 1216.8 977.427 1224.76 M971.571 1223.04 Q971.507 1218.23 968.865 1215.37 Q966.255 1212.5 961.927 1212.5 Q957.025 1212.5 954.065 1215.27 Q951.137 1218.04 950.691 1223.07 L971.571 1223.04 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1007.7 1213.87 Q1006.71 1213.3 1005.53 1213.04 Q1004.39 1212.76 1002.99 1212.76 Q998.02 1212.76 995.347 1216 Q992.705 1219.22 992.705 1225.27 L992.705 1244.04 L986.816 1244.04 L986.816 1208.4 L992.705 1208.4 L992.705 1213.93 Q994.551 1210.69 997.511 1209.13 Q1000.47 1207.54 1004.7 1207.54 Q1005.31 1207.54 1006.04 1207.63 Q1006.77 1207.7 1007.66 1207.85 L1007.7 1213.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1042.9 1224.76 L1042.9 1227.62 L1015.97 1227.62 Q1016.35 1233.67 1019.6 1236.85 Q1022.88 1240 1028.7 1240 Q1032.08 1240 1035.23 1239.17 Q1038.41 1238.35 1041.53 1236.69 L1041.53 1242.23 Q1038.38 1243.57 1035.07 1244.27 Q1031.76 1244.97 1028.35 1244.97 Q1019.82 1244.97 1014.83 1240 Q1009.86 1235.04 1009.86 1226.57 Q1009.86 1217.82 1014.57 1212.69 Q1019.31 1207.54 1027.33 1207.54 Q1034.53 1207.54 1038.7 1212.18 Q1042.9 1216.8 1042.9 1224.76 M1037.04 1223.04 Q1036.98 1218.23 1034.34 1215.37 Q1031.73 1212.5 1027.4 1212.5 Q1022.5 1212.5 1019.54 1215.27 Q1016.61 1218.04 1016.16 1223.07 L1037.04 1223.04 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1075.24 1209.45 L1075.24 1214.98 Q1072.75 1213.71 1070.08 1213.07 Q1067.41 1212.44 1064.54 1212.44 Q1060.18 1212.44 1057.99 1213.77 Q1055.82 1215.11 1055.82 1217.79 Q1055.82 1219.82 1057.38 1221 Q1058.94 1222.15 1063.65 1223.2 L1065.66 1223.64 Q1071.89 1224.98 1074.5 1227.43 Q1077.15 1229.85 1077.15 1234.21 Q1077.15 1239.17 1073.2 1242.07 Q1069.28 1244.97 1062.41 1244.97 Q1059.54 1244.97 1056.43 1244.39 Q1053.34 1243.85 1049.9 1242.74 L1049.9 1236.69 Q1053.15 1238.38 1056.3 1239.24 Q1059.45 1240.07 1062.54 1240.07 Q1066.67 1240.07 1068.9 1238.66 Q1071.13 1237.23 1071.13 1234.65 Q1071.13 1232.27 1069.51 1230.99 Q1067.92 1229.72 1062.47 1228.54 L1060.44 1228.07 Q1054.99 1226.92 1052.57 1224.56 Q1050.16 1222.18 1050.16 1218.04 Q1050.16 1213.01 1053.72 1210.27 Q1057.28 1207.54 1063.84 1207.54 Q1067.09 1207.54 1069.95 1208.01 Q1072.82 1208.49 1075.24 1209.45 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1092.26 1198.27 L1092.26 1208.4 L1104.33 1208.4 L1104.33 1212.95 L1092.26 1212.95 L1092.26 1232.3 Q1092.26 1236.66 1093.44 1237.9 Q1094.65 1239.14 1098.31 1239.14 L1104.33 1239.14 L1104.33 1244.04 L1098.31 1244.04 Q1091.53 1244.04 1088.95 1241.53 Q1086.38 1238.98 1086.38 1232.3 L1086.38 1212.95 L1082.08 1212.95 L1082.08 1208.4 L1086.38 1208.4 L1086.38 1198.27 L1092.26 1198.27 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1153.41 1213.87 Q1152.42 1213.3 1151.24 1213.04 Q1150.1 1212.76 1148.7 1212.76 Q1143.73 1212.76 1141.06 1216 Q1138.42 1219.22 1138.42 1225.27 L1138.42 1244.04 L1132.53 1244.04 L1132.53 1208.4 L1138.42 1208.4 L1138.42 1213.93 Q1140.26 1210.69 1143.22 1209.13 Q1146.18 1207.54 1150.42 1207.54 Q1151.02 1207.54 1151.75 1207.63 Q1152.48 1207.7 1153.38 1207.85 L1153.41 1213.87 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1175.75 1226.12 Q1168.65 1226.12 1165.92 1227.75 Q1163.18 1229.37 1163.18 1233.29 Q1163.18 1236.4 1165.22 1238.25 Q1167.28 1240.07 1170.82 1240.07 Q1175.69 1240.07 1178.62 1236.63 Q1181.58 1233.16 1181.58 1227.43 L1181.58 1226.12 L1175.75 1226.12 M1187.43 1223.71 L1187.43 1244.04 L1181.58 1244.04 L1181.58 1238.63 Q1179.57 1241.88 1176.58 1243.44 Q1173.59 1244.97 1169.26 1244.97 Q1163.78 1244.97 1160.54 1241.91 Q1157.32 1238.82 1157.32 1233.67 Q1157.32 1227.65 1161.33 1224.6 Q1165.37 1221.54 1173.36 1221.54 L1181.58 1221.54 L1181.58 1220.97 Q1181.58 1216.93 1178.9 1214.73 Q1176.26 1212.5 1171.45 1212.5 Q1168.4 1212.5 1165.5 1213.23 Q1162.61 1213.97 1159.93 1215.43 L1159.93 1210.02 Q1163.15 1208.78 1166.17 1208.17 Q1169.19 1207.54 1172.06 1207.54 Q1179.79 1207.54 1183.61 1211.55 Q1187.43 1215.56 1187.43 1223.71 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1205.29 1198.27 L1205.29 1208.4 L1217.35 1208.4 L1217.35 1212.95 L1205.29 1212.95 L1205.29 1232.3 Q1205.29 1236.66 1206.47 1237.9 Q1207.67 1239.14 1211.33 1239.14 L1217.35 1239.14 L1217.35 1244.04 L1211.33 1244.04 Q1204.56 1244.04 1201.98 1241.53 Q1199.4 1238.98 1199.4 1232.3 L1199.4 1212.95 L1195.1 1212.95 L1195.1 1208.4 L1199.4 1208.4 L1199.4 1198.27 L1205.29 1198.27 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1255.54 1224.76 L1255.54 1227.62 L1228.62 1227.62 Q1229 1233.67 1232.25 1236.85 Q1235.52 1240 1241.35 1240 Q1244.72 1240 1247.87 1239.17 Q1251.06 1238.35 1254.18 1236.69 L1254.18 1242.23 Q1251.03 1243.57 1247.71 1244.27 Q1244.4 1244.97 1241 1244.97 Q1232.47 1244.97 1227.47 1240 Q1222.51 1235.04 1222.51 1226.57 Q1222.51 1217.82 1227.22 1212.69 Q1231.96 1207.54 1239.98 1207.54 Q1247.17 1207.54 1251.34 1212.18 Q1255.54 1216.8 1255.54 1224.76 M1249.69 1223.04 Q1249.62 1218.23 1246.98 1215.37 Q1244.37 1212.5 1240.04 1212.5 Q1235.14 1212.5 1232.18 1215.27 Q1229.25 1218.04 1228.81 1223.07 L1249.69 1223.04 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip502)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 244.742,973.337 1872.76,973.337 \n \"/>\n<polyline clip-path=\"url(#clip502)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 244.742,778.312 1872.76,778.312 \n \"/>\n<polyline clip-path=\"url(#clip502)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 244.742,583.287 1872.76,583.287 \n \"/>\n<polyline clip-path=\"url(#clip502)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 244.742,388.262 1872.76,388.262 \n \"/>\n<polyline clip-path=\"url(#clip502)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n 244.742,193.237 1872.76,193.237 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 244.742,1106.38 244.742,47.2441 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 244.742,973.337 263.64,973.337 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 244.742,778.312 263.64,778.312 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 244.742,583.287 263.64,583.287 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 244.742,388.262 263.64,388.262 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 244.742,193.237 263.64,193.237 \n \"/>\n<path clip-path=\"url(#clip500)\" d=\"M128.605 959.136 Q124.993 959.136 123.165 962.701 Q121.359 966.242 121.359 973.372 Q121.359 980.478 123.165 984.043 Q124.993 987.585 128.605 987.585 Q132.239 987.585 134.044 984.043 Q135.873 980.478 135.873 973.372 Q135.873 966.242 134.044 962.701 Q132.239 959.136 128.605 959.136 M128.605 955.432 Q134.415 955.432 137.47 960.039 Q140.549 964.622 140.549 973.372 Q140.549 982.099 137.47 986.705 Q134.415 991.288 128.605 991.288 Q122.794 991.288 119.716 986.705 Q116.66 982.099 116.66 973.372 Q116.66 964.622 119.716 960.039 Q122.794 955.432 128.605 955.432 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M148.766 984.737 L153.651 984.737 L153.651 990.617 L148.766 990.617 L148.766 984.737 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M163.882 956.057 L182.239 956.057 L182.239 959.992 L168.165 959.992 L168.165 968.464 Q169.183 968.117 170.202 967.955 Q171.22 967.77 172.239 967.77 Q178.026 967.77 181.405 970.941 Q184.785 974.113 184.785 979.529 Q184.785 985.108 181.313 988.21 Q177.84 991.288 171.521 991.288 Q169.345 991.288 167.077 990.918 Q164.831 990.548 162.424 989.807 L162.424 985.108 Q164.507 986.242 166.729 986.798 Q168.952 987.353 171.428 987.353 Q175.433 987.353 177.771 985.247 Q180.109 983.14 180.109 979.529 Q180.109 975.918 177.771 973.812 Q175.433 971.705 171.428 971.705 Q169.553 971.705 167.678 972.122 Q165.827 972.538 163.882 973.418 L163.882 956.057 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M203.998 959.136 Q200.387 959.136 198.558 962.701 Q196.752 966.242 196.752 973.372 Q196.752 980.478 198.558 984.043 Q200.387 987.585 203.998 987.585 Q207.632 987.585 209.437 984.043 Q211.266 980.478 211.266 973.372 Q211.266 966.242 209.437 962.701 Q207.632 959.136 203.998 959.136 M203.998 955.432 Q209.808 955.432 212.863 960.039 Q215.942 964.622 215.942 973.372 Q215.942 982.099 212.863 986.705 Q209.808 991.288 203.998 991.288 Q198.187 991.288 195.109 986.705 Q192.053 982.099 192.053 973.372 Q192.053 964.622 195.109 960.039 Q198.187 955.432 203.998 955.432 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M129.6 764.111 Q125.989 764.111 124.16 767.676 Q122.355 771.217 122.355 778.347 Q122.355 785.453 124.16 789.018 Q125.989 792.56 129.6 792.56 Q133.234 792.56 135.04 789.018 Q136.868 785.453 136.868 778.347 Q136.868 771.217 135.04 767.676 Q133.234 764.111 129.6 764.111 M129.6 760.407 Q135.41 760.407 138.466 765.014 Q141.544 769.597 141.544 778.347 Q141.544 787.074 138.466 791.68 Q135.41 796.263 129.6 796.263 Q123.79 796.263 120.711 791.68 Q117.656 787.074 117.656 778.347 Q117.656 769.597 120.711 765.014 Q123.79 760.407 129.6 760.407 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M149.762 789.712 L154.646 789.712 L154.646 795.592 L149.762 795.592 L149.762 789.712 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M163.651 761.032 L185.873 761.032 L185.873 763.023 L173.327 795.592 L168.442 795.592 L180.248 764.967 L163.651 764.967 L163.651 761.032 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M195.039 761.032 L213.396 761.032 L213.396 764.967 L199.322 764.967 L199.322 773.439 Q200.34 773.092 201.359 772.93 Q202.377 772.745 203.396 772.745 Q209.183 772.745 212.562 775.916 Q215.942 779.088 215.942 784.504 Q215.942 790.083 212.47 793.185 Q208.998 796.263 202.678 796.263 Q200.502 796.263 198.234 795.893 Q195.988 795.523 193.581 794.782 L193.581 790.083 Q195.664 791.217 197.887 791.773 Q200.109 792.328 202.586 792.328 Q206.59 792.328 208.928 790.222 Q211.266 788.115 211.266 784.504 Q211.266 780.893 208.928 778.787 Q206.59 776.68 202.586 776.68 Q200.711 776.68 198.836 777.097 Q196.984 777.513 195.039 778.393 L195.039 761.032 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M119.415 596.632 L127.054 596.632 L127.054 570.266 L118.743 571.933 L118.743 567.674 L127.007 566.007 L131.683 566.007 L131.683 596.632 L139.322 596.632 L139.322 600.567 L119.415 600.567 L119.415 596.632 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M148.766 594.687 L153.651 594.687 L153.651 600.567 L148.766 600.567 L148.766 594.687 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M173.836 569.086 Q170.225 569.086 168.396 572.651 Q166.59 576.192 166.59 583.322 Q166.59 590.428 168.396 593.993 Q170.225 597.535 173.836 597.535 Q177.47 597.535 179.276 593.993 Q181.104 590.428 181.104 583.322 Q181.104 576.192 179.276 572.651 Q177.47 569.086 173.836 569.086 M173.836 565.382 Q179.646 565.382 182.701 569.989 Q185.78 574.572 185.78 583.322 Q185.78 592.049 182.701 596.655 Q179.646 601.238 173.836 601.238 Q168.026 601.238 164.947 596.655 Q161.891 592.049 161.891 583.322 Q161.891 574.572 164.947 569.989 Q168.026 565.382 173.836 565.382 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M203.998 569.086 Q200.387 569.086 198.558 572.651 Q196.752 576.192 196.752 583.322 Q196.752 590.428 198.558 593.993 Q200.387 597.535 203.998 597.535 Q207.632 597.535 209.437 593.993 Q211.266 590.428 211.266 583.322 Q211.266 576.192 209.437 572.651 Q207.632 569.086 203.998 569.086 M203.998 565.382 Q209.808 565.382 212.863 569.989 Q215.942 574.572 215.942 583.322 Q215.942 592.049 212.863 596.655 Q209.808 601.238 203.998 601.238 Q198.187 601.238 195.109 596.655 Q192.053 592.049 192.053 583.322 Q192.053 574.572 195.109 569.989 Q198.187 565.382 203.998 565.382 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M120.41 401.607 L128.049 401.607 L128.049 375.241 L119.739 376.908 L119.739 372.649 L128.003 370.982 L132.679 370.982 L132.679 401.607 L140.317 401.607 L140.317 405.542 L120.41 405.542 L120.41 401.607 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M149.762 399.662 L154.646 399.662 L154.646 405.542 L149.762 405.542 L149.762 399.662 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M168.859 401.607 L185.178 401.607 L185.178 405.542 L163.234 405.542 L163.234 401.607 Q165.896 398.852 170.479 394.223 Q175.086 389.57 176.266 388.227 Q178.512 385.704 179.391 383.968 Q180.294 382.209 180.294 380.519 Q180.294 377.764 178.35 376.028 Q176.428 374.292 173.327 374.292 Q171.127 374.292 168.674 375.056 Q166.243 375.82 163.465 377.371 L163.465 372.649 Q166.29 371.514 168.743 370.936 Q171.197 370.357 173.234 370.357 Q178.604 370.357 181.799 373.042 Q184.993 375.727 184.993 380.218 Q184.993 382.348 184.183 384.269 Q183.396 386.167 181.289 388.76 Q180.711 389.431 177.609 392.649 Q174.507 395.843 168.859 401.607 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M195.039 370.982 L213.396 370.982 L213.396 374.917 L199.322 374.917 L199.322 383.389 Q200.34 383.042 201.359 382.88 Q202.377 382.695 203.396 382.695 Q209.183 382.695 212.562 385.866 Q215.942 389.038 215.942 394.454 Q215.942 400.033 212.47 403.135 Q208.998 406.213 202.678 406.213 Q200.502 406.213 198.234 405.843 Q195.988 405.473 193.581 404.732 L193.581 400.033 Q195.664 401.167 197.887 401.723 Q200.109 402.278 202.586 402.278 Q206.59 402.278 208.928 400.172 Q211.266 398.065 211.266 394.454 Q211.266 390.843 208.928 388.737 Q206.59 386.63 202.586 386.63 Q200.711 386.63 198.836 387.047 Q196.984 387.463 195.039 388.343 L195.039 370.982 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M119.415 206.582 L127.054 206.582 L127.054 180.216 L118.743 181.883 L118.743 177.624 L127.007 175.957 L131.683 175.957 L131.683 206.582 L139.322 206.582 L139.322 210.517 L119.415 210.517 L119.415 206.582 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M148.766 204.637 L153.651 204.637 L153.651 210.517 L148.766 210.517 L148.766 204.637 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M163.882 175.957 L182.239 175.957 L182.239 179.892 L168.165 179.892 L168.165 188.364 Q169.183 188.017 170.202 187.855 Q171.22 187.67 172.239 187.67 Q178.026 187.67 181.405 190.841 Q184.785 194.013 184.785 199.429 Q184.785 205.008 181.313 208.11 Q177.84 211.188 171.521 211.188 Q169.345 211.188 167.077 210.818 Q164.831 210.448 162.424 209.707 L162.424 205.008 Q164.507 206.142 166.729 206.698 Q168.952 207.253 171.428 207.253 Q175.433 207.253 177.771 205.147 Q180.109 203.04 180.109 199.429 Q180.109 195.818 177.771 193.712 Q175.433 191.605 171.428 191.605 Q169.553 191.605 167.678 192.022 Q165.827 192.438 163.882 193.318 L163.882 175.957 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M203.998 179.036 Q200.387 179.036 198.558 182.601 Q196.752 186.142 196.752 193.272 Q196.752 200.378 198.558 203.943 Q200.387 207.485 203.998 207.485 Q207.632 207.485 209.437 203.943 Q211.266 200.378 211.266 193.272 Q211.266 186.142 209.437 182.601 Q207.632 179.036 203.998 179.036 M203.998 175.332 Q209.808 175.332 212.863 179.939 Q215.942 184.522 215.942 193.272 Q215.942 201.999 212.863 206.605 Q209.808 211.188 203.998 211.188 Q198.187 211.188 195.109 206.605 Q192.053 201.999 192.053 193.272 Q192.053 184.522 195.109 179.939 Q198.187 175.332 203.998 175.332 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M55.812 719.754 Q49.3508 719.754 45.6905 722.428 Q41.9984 725.069 41.9984 729.716 Q41.9984 734.363 45.6905 737.037 Q49.3508 739.679 55.812 739.679 Q62.2732 739.679 65.9653 737.037 Q69.6256 734.363 69.6256 729.716 Q69.6256 725.069 65.9653 722.428 Q62.2732 719.754 55.812 719.754 M43.3671 739.679 Q40.1842 737.833 38.6564 735.032 Q37.0968 732.199 37.0968 728.284 Q37.0968 721.791 42.2531 717.749 Q47.4093 713.675 55.812 713.675 Q64.2147 713.675 69.371 717.749 Q74.5272 721.791 74.5272 728.284 Q74.5272 732.199 72.9994 735.032 Q71.4398 737.833 68.257 739.679 L73.6042 739.679 L73.6042 745.567 L24.079 745.567 L24.079 739.679 L43.3671 739.679 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M42.0621 690.153 Q42.0621 694.864 45.7542 697.601 Q49.4145 700.339 55.812 700.339 Q62.2095 700.339 65.9017 697.633 Q69.5619 694.896 69.5619 690.153 Q69.5619 685.475 65.8698 682.737 Q62.1777 680 55.812 680 Q49.4781 680 45.786 682.737 Q42.0621 685.475 42.0621 690.153 M37.0968 690.153 Q37.0968 682.515 42.0621 678.154 Q47.0273 673.794 55.812 673.794 Q64.5649 673.794 69.5619 678.154 Q74.5272 682.515 74.5272 690.153 Q74.5272 697.824 69.5619 702.185 Q64.5649 706.513 55.812 706.513 Q47.0273 706.513 42.0621 702.185 Q37.0968 697.824 37.0968 690.153 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M52.0881 634.453 L73.6042 634.453 L73.6042 640.31 L52.279 640.31 Q47.2183 640.31 44.7038 642.283 Q42.1894 644.257 42.1894 648.203 Q42.1894 652.946 45.2131 655.683 Q48.2368 658.42 53.4567 658.42 L73.6042 658.42 L73.6042 664.309 L37.9562 664.309 L37.9562 658.42 L43.4944 658.42 Q40.2797 656.32 38.6883 653.487 Q37.0968 650.622 37.0968 646.898 Q37.0968 640.755 40.9163 637.604 Q44.7038 634.453 52.0881 634.453 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M43.3671 599.315 L24.079 599.315 L24.079 593.458 L73.6042 593.458 L73.6042 599.315 L68.257 599.315 Q71.4398 601.161 72.9994 603.994 Q74.5272 606.794 74.5272 610.741 Q74.5272 617.202 69.371 621.276 Q64.2147 625.319 55.812 625.319 Q47.4093 625.319 42.2531 621.276 Q37.0968 617.202 37.0968 610.741 Q37.0968 606.794 38.6564 603.994 Q40.1842 601.161 43.3671 599.315 M55.812 619.271 Q62.2732 619.271 65.9653 616.629 Q69.6256 613.956 69.6256 609.309 Q69.6256 604.662 65.9653 601.988 Q62.2732 599.315 55.812 599.315 Q49.3508 599.315 45.6905 601.988 Q41.9984 604.662 41.9984 609.309 Q41.9984 613.956 45.6905 616.629 Q49.3508 619.271 55.812 619.271 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M68.257 555.009 L87.1631 555.009 L87.1631 560.898 L37.9562 560.898 L37.9562 555.009 L43.3671 555.009 Q40.1842 553.163 38.6564 550.362 Q37.0968 547.53 37.0968 543.615 Q37.0968 537.122 42.2531 533.08 Q47.4093 529.006 55.812 529.006 Q64.2147 529.006 69.371 533.08 Q74.5272 537.122 74.5272 543.615 Q74.5272 547.53 72.9994 550.362 Q71.4398 553.163 68.257 555.009 M55.812 535.085 Q49.3508 535.085 45.6905 537.758 Q41.9984 540.4 41.9984 545.047 Q41.9984 549.694 45.6905 552.368 Q49.3508 555.009 55.812 555.009 Q62.2732 555.009 65.9653 552.368 Q69.6256 549.694 69.6256 545.047 Q69.6256 540.4 65.9653 537.758 Q62.2732 535.085 55.812 535.085 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M43.4307 498.641 Q42.8578 499.628 42.6032 500.805 Q42.3167 501.951 42.3167 503.352 Q42.3167 508.317 45.5632 510.991 Q48.7779 513.632 54.8253 513.632 L73.6042 513.632 L73.6042 519.521 L37.9562 519.521 L37.9562 513.632 L43.4944 513.632 Q40.2479 511.786 38.6883 508.826 Q37.0968 505.866 37.0968 501.633 Q37.0968 501.028 37.1923 500.296 Q37.256 499.564 37.4151 498.673 L43.4307 498.641 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M37.9562 492.498 L37.9562 486.642 L73.6042 486.642 L73.6042 492.498 L37.9562 492.498 M24.079 492.498 L24.079 486.642 L31.495 486.642 L31.495 492.498 L24.079 492.498 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M39.3248 448.734 L44.7993 448.734 Q43.4307 451.217 42.7623 453.731 Q42.0621 456.214 42.0621 458.76 Q42.0621 464.457 45.6905 467.608 Q49.2872 470.759 55.812 470.759 Q62.3369 470.759 65.9653 467.608 Q69.5619 464.457 69.5619 458.76 Q69.5619 456.214 68.8935 453.731 Q68.1933 451.217 66.8247 448.734 L72.2355 448.734 Q73.3814 451.185 73.9543 453.827 Q74.5272 456.436 74.5272 459.397 Q74.5272 467.449 69.4664 472.192 Q64.4057 476.934 55.812 476.934 Q47.091 476.934 42.0939 472.16 Q37.0968 467.354 37.0968 459.015 Q37.0968 456.309 37.6697 453.731 Q38.2108 451.153 39.3248 448.734 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M54.3161 408.057 L57.1806 408.057 L57.1806 434.984 Q63.2281 434.602 66.4109 431.356 Q69.5619 428.077 69.5619 422.253 Q69.5619 418.879 68.7344 415.728 Q67.9069 412.545 66.2518 409.426 L71.7899 409.426 Q73.1267 412.577 73.827 415.887 Q74.5272 419.197 74.5272 422.603 Q74.5272 431.133 69.5619 436.13 Q64.5967 441.095 56.1303 441.095 Q47.3774 441.095 42.2531 436.384 Q37.0968 431.642 37.0968 423.621 Q37.0968 416.428 41.7438 412.258 Q46.3589 408.057 54.3161 408.057 M52.5973 413.914 Q47.7912 413.977 44.9266 416.619 Q42.0621 419.229 42.0621 423.558 Q42.0621 428.459 44.8312 431.419 Q47.6002 434.347 52.6292 434.793 L52.5973 413.914 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip502)\" style=\"stroke:#ff0000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none\" points=\"\n 290.818,570.309 306.332,570.705 321.845,571.101 337.359,571.497 352.873,571.893 368.387,572.289 383.9,572.684 399.414,573.08 414.928,573.475 430.442,573.869 \n 445.955,574.264 461.469,574.659 476.983,575.053 492.497,575.447 508.011,575.841 523.524,576.234 539.038,576.628 554.552,577.021 570.066,577.414 585.579,577.807 \n 601.093,578.2 616.607,578.592 632.121,578.985 647.634,579.377 663.148,579.769 678.662,580.16 694.176,580.552 709.689,580.943 725.203,581.334 740.717,581.725 \n 756.231,582.116 771.744,582.507 787.258,582.897 802.772,583.287 818.286,583.677 833.799,584.067 849.313,584.456 864.827,584.846 880.341,585.235 895.854,585.624 \n 911.368,586.013 926.882,586.401 942.396,586.79 957.91,587.178 973.423,587.566 988.937,587.954 1004.45,588.341 1019.96,588.729 1035.48,589.116 1050.99,589.503 \n 1066.51,589.89 1082.02,590.276 1097.53,590.663 1113.05,591.049 1128.56,591.435 1144.07,591.821 1159.59,592.207 1175.1,592.592 1190.62,592.978 1206.13,593.363 \n 1221.64,593.748 1237.16,594.132 1252.67,594.517 1268.18,594.901 1283.7,595.285 1299.21,595.669 1314.73,596.053 1330.24,596.437 1345.75,596.82 1361.27,597.203 \n 1376.78,597.586 1392.29,597.969 1407.81,598.352 1423.32,598.734 1438.84,599.116 1454.35,599.498 1469.86,599.88 1485.38,600.262 1500.89,600.643 1516.4,601.025 \n 1531.92,601.406 1547.43,601.787 1562.95,602.167 1578.46,602.548 1593.97,602.928 1609.49,603.308 1625,603.688 1640.51,604.068 1656.03,604.448 1671.54,604.827 \n 1687.06,605.206 1702.57,605.585 1718.08,605.964 1733.6,606.343 1749.11,606.721 1764.63,607.099 1780.14,607.477 1795.65,607.855 1811.17,608.233 1826.68,608.61 \n \n \"/>\n<polyline clip-path=\"url(#clip502)\" style=\"stroke:#0000ff; stroke-linecap:butt; stroke-linejoin:round; stroke-width:8; stroke-opacity:1; fill:none\" stroke-dasharray=\"4, 8\" points=\"\n 290.818,77.2196 306.332,96.5601 321.845,115.61 337.359,134.373 352.873,152.854 368.387,171.057 383.9,188.987 399.414,206.646 414.928,224.041 430.442,241.173 \n 445.955,258.049 461.469,274.67 476.983,291.041 492.497,307.166 508.011,323.049 523.524,338.693 539.038,354.102 554.552,369.279 570.066,384.227 585.579,398.951 \n 601.093,413.454 616.607,427.738 632.121,441.808 647.634,455.666 663.148,469.316 678.662,482.76 694.176,496.002 709.689,509.045 725.203,521.892 740.717,534.546 \n 756.231,547.01 771.744,559.286 787.258,571.377 802.772,583.287 818.286,595.018 833.799,606.572 849.313,617.952 864.827,629.162 880.341,640.202 895.854,651.077 \n 911.368,661.788 926.882,672.339 942.396,682.73 957.91,692.965 973.423,703.047 988.937,712.976 1004.45,722.757 1019.96,732.39 1035.48,741.879 1050.99,751.225 \n 1066.51,760.43 1082.02,769.497 1097.53,778.427 1113.05,787.223 1128.56,795.887 1144.07,804.421 1159.59,812.826 1175.1,821.105 1190.62,829.26 1206.13,837.292 \n 1221.64,845.203 1237.16,852.995 1252.67,860.67 1268.18,868.229 1283.7,875.675 1299.21,883.009 1314.73,890.232 1330.24,897.347 1345.75,904.355 1361.27,911.258 \n 1376.78,918.057 1392.29,924.753 1407.81,931.349 1423.32,937.846 1438.84,944.245 1454.35,950.548 1469.86,956.756 1485.38,962.87 1500.89,968.893 1516.4,974.825 \n 1531.92,980.668 1547.43,986.423 1562.95,992.092 1578.46,997.675 1593.97,1003.17 1609.49,1008.59 1625,1013.93 1640.51,1019.18 1656.03,1024.36 1671.54,1029.46 \n 1687.06,1034.48 1702.57,1039.42 1718.08,1044.29 1733.6,1049.09 1749.11,1053.82 1764.63,1058.47 1780.14,1063.06 1795.65,1067.57 1811.17,1072.02 1826.68,1076.4 \n \n \"/>\n<path clip-path=\"url(#clip500)\" d=\"\nM1524.29 238.069 L1818.49 238.069 L1818.49 82.5486 L1524.29 82.5486 Z\n \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 1524.29,238.069 1818.49,238.069 1818.49,82.5486 1524.29,82.5486 1524.29,238.069 \n \"/>\n<polyline clip-path=\"url(#clip500)\" style=\"stroke:#ff0000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n 1542.38,134.389 1650.91,134.389 \n \"/>\n<path clip-path=\"url(#clip500)\" d=\"M1682.84 154.076 Q1681.04 158.706 1679.33 160.118 Q1677.61 161.53 1674.74 161.53 L1671.34 161.53 L1671.34 157.965 L1673.84 157.965 Q1675.6 157.965 1676.57 157.132 Q1677.54 156.298 1678.72 153.196 L1679.49 151.252 L1669 125.743 L1673.51 125.743 L1681.62 146.021 L1689.72 125.743 L1694.23 125.743 L1682.84 154.076 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1725.78 120.187 Q1722.17 120.187 1720.34 123.752 Q1718.54 127.294 1718.54 134.423 Q1718.54 141.53 1720.34 145.095 Q1722.17 148.636 1725.78 148.636 Q1729.42 148.636 1731.22 145.095 Q1733.05 141.53 1733.05 134.423 Q1733.05 127.294 1731.22 123.752 Q1729.42 120.187 1725.78 120.187 M1725.78 116.484 Q1731.59 116.484 1734.65 121.09 Q1737.73 125.673 1737.73 134.423 Q1737.73 143.15 1734.65 147.757 Q1731.59 152.34 1725.78 152.34 Q1719.97 152.34 1716.89 147.757 Q1713.84 143.15 1713.84 134.423 Q1713.84 125.673 1716.89 121.09 Q1719.97 116.484 1725.78 116.484 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1745.95 145.789 L1750.83 145.789 L1750.83 151.669 L1745.95 151.669 L1745.95 145.789 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1775.18 133.034 Q1778.54 133.752 1780.41 136.021 Q1782.31 138.289 1782.31 141.622 Q1782.31 146.738 1778.79 149.539 Q1775.27 152.34 1768.79 152.34 Q1766.62 152.34 1764.3 151.9 Q1762.01 151.483 1759.56 150.627 L1759.56 146.113 Q1761.5 147.247 1763.82 147.826 Q1766.13 148.405 1768.65 148.405 Q1773.05 148.405 1775.34 146.669 Q1777.66 144.933 1777.66 141.622 Q1777.66 138.567 1775.51 136.854 Q1773.38 135.118 1769.56 135.118 L1765.53 135.118 L1765.53 131.275 L1769.74 131.275 Q1773.19 131.275 1775.02 129.909 Q1776.85 128.521 1776.85 125.928 Q1776.85 123.266 1774.95 121.854 Q1773.07 120.419 1769.56 120.419 Q1767.63 120.419 1765.44 120.835 Q1763.24 121.252 1760.6 122.132 L1760.6 117.965 Q1763.26 117.224 1765.57 116.854 Q1767.91 116.484 1769.97 116.484 Q1775.3 116.484 1778.4 118.914 Q1781.5 121.322 1781.5 125.442 Q1781.5 128.312 1779.86 130.303 Q1778.21 132.271 1775.18 133.034 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip500)\" style=\"stroke:#0000ff; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" stroke-dasharray=\"2, 4\" points=\"\n 1542.38,186.229 1650.91,186.229 \n \"/>\n<path clip-path=\"url(#clip500)\" d=\"M1682.84 205.916 Q1681.04 210.546 1679.33 211.958 Q1677.61 213.37 1674.74 213.37 L1671.34 213.37 L1671.34 209.805 L1673.84 209.805 Q1675.6 209.805 1676.57 208.972 Q1677.54 208.138 1678.72 205.036 L1679.49 203.092 L1669 177.583 L1673.51 177.583 L1681.62 197.861 L1689.72 177.583 L1694.23 177.583 L1682.84 205.916 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1716.59 199.573 L1724.23 199.573 L1724.23 173.208 L1715.92 174.875 L1715.92 170.615 L1724.19 168.949 L1728.86 168.949 L1728.86 199.573 L1736.5 199.573 L1736.5 203.509 L1716.59 203.509 L1716.59 199.573 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip500)\" d=\"M1755.95 172.027 Q1752.33 172.027 1750.51 175.592 Q1748.7 179.134 1748.7 186.263 Q1748.7 193.37 1750.51 196.935 Q1752.33 200.476 1755.95 200.476 Q1759.58 200.476 1761.38 196.935 Q1763.21 193.37 1763.21 186.263 Q1763.21 179.134 1761.38 175.592 Q1759.58 172.027 1755.95 172.027 M1755.95 168.324 Q1761.76 168.324 1764.81 172.93 Q1767.89 177.513 1767.89 186.263 Q1767.89 194.99 1764.81 199.597 Q1761.76 204.18 1755.95 204.18 Q1750.13 204.18 1747.06 199.597 Q1744 194.99 1744 186.263 Q1744 177.513 1747.06 172.93 Q1750.13 168.324 1755.95 168.324 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /></svg>\n"
},
"metadata": {}
},
{
"output_type": "stream",
"name": "stdout",
"text": [
" -0.050\n",
" -0.048\n",
" -0.047\n",
" -0.045\n",
" -0.044\n",
" -0.042\n",
" -0.041\n",
" -0.039\n",
" -0.038\n",
" -0.036\n",
" -0.035\n",
" -0.033\n",
" -0.032\n",
" -0.030\n",
" -0.029\n",
" -0.027\n",
" -0.026\n",
" -0.024\n",
" -0.023\n",
" -0.021\n",
" -0.020\n",
" -0.018\n",
" -0.017\n",
" -0.015\n",
" -0.014\n",
" -0.012\n",
" -0.011\n",
" -0.009\n",
" -0.008\n",
" -0.006\n",
" -0.005\n",
" -0.003\n",
" -0.002\n",
" 0.000\n",
" 0.002\n",
" 0.003\n",
" 0.005\n",
" 0.006\n",
" 0.008\n",
" 0.009\n",
" 0.011\n",
" 0.012\n",
" 0.014\n",
" 0.015\n",
" 0.017\n",
" 0.018\n",
" 0.020\n",
" 0.021\n",
" 0.023\n",
" 0.024\n",
" 0.026\n",
" 0.027\n",
" 0.029\n",
" 0.030\n",
" 0.032\n",
" 0.033\n",
" 0.035\n",
" 0.036\n",
" 0.038\n",
" 0.039\n",
" 0.041\n",
" 0.042\n",
" 0.044\n",
" 0.045\n",
" 0.047\n",
" 0.048\n",
" 0.050\n",
" 0.052\n",
" 0.053\n",
" 0.055\n",
" 0.056\n",
" 0.058\n",
" 0.059\n",
" 0.061\n",
" 0.062\n",
" 0.064\n",
" 0.065\n",
" 0.067\n",
" 0.068\n",
" 0.070\n",
" 0.071\n",
" 0.073\n",
" 0.074\n",
" 0.076\n",
" 0.077\n",
" 0.079\n",
" 0.080\n",
" 0.082\n",
" 0.083\n",
" 0.085\n",
" 0.086\n",
" 0.088\n",
" 0.089\n",
" 0.091\n",
" 0.092\n",
" 0.094\n",
" 0.095\n",
" 0.097\n",
" 0.098\n",
" 0.100\n",
"\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"# Types: Integers, Floats, Bools and Others\n",
"\n",
"Julia has many different types of variables: signed integers (like 2 or -5), floating point numbers (2.0 and -5.1), bools (false/true), bitarrays (similar to bools, but with more efficient use of memory), strings (\"hello\"), Dates (2017-04-23) and many more types."
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Integers and Floats"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 68,
"source": [
"a = 2 #integer, Int (Int64 on most machines)\n",
"b = 2.0 #floating point, (Float64 on most machines)\n",
"A = [1,2]\n",
"B = [1.0,2.0]\n",
"\n",
"println(\"Finding the type of a, b, A and B:\")\n",
"println(typeof(a),\" \",typeof(b),\" \",typeof(A),\" \",typeof(B))"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Finding the type of a, b, A and B:\n",
"Int64 Float64 Vector{Int64} Vector{Float64}\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Bools and BitArrays\n",
"\n",
"Bools are \"true\" or \"false\". BitArrays are (more memory efficient) versions of this."
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 69,
"source": [
"c = 2 > 1.1\n",
"C = A .> 1.5 #A is an array, so C is too\n",
"\n",
"println(\"Finding the type of c and C:\")\n",
"println(typeof(c),\" \",typeof(C))"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Finding the type of c and C:\n",
"Bool BitVector\n"
]
}
],
"metadata": {}
},
{
"cell_type": "markdown",
"source": [
"## Calculations with Mixed Types\n",
"\n",
"A calculation like \"integer\" + \"float\" works and the type of the result will be a float (the more flexible type). Similarly, \"bool\" + \"integer\" will give an integer. These promotion rules make it easy to have mixed types in calculations, and also provide a simple way of converting a variable from one type to another. (There are also an explicit convert() function that might be quicker.)"
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 70,
"source": [
"println(1+2.0) #integer + Float\n",
"println((1>0) + 2) #bool + integer"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"3.0\n",
"3\n"
]
}
],
"metadata": {}
},
{
"cell_type": "code",
"execution_count": null,
"source": [],
"outputs": [],
"metadata": {}
}
],
"metadata": {
"@webio": {
"lastCommId": null,
"lastKernelId": null
},
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Julia 1.7.0-rc1",
"language": "julia",
"name": "julia-1.7"
},
"language_info": {
"file_extension": ".jl",
"name": "julia",
"mimetype": "application/julia",
"version": "1.7.0"
}
},
"nbformat": 4,
"nbformat_minor": 1
}