HSG-MCS-HS21_Julia/Problemsets/Solutions/PS01_Basics_Solution.ipynb

1689 lines
126 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

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",
"metadata": {},
"source": [
"# Basic Julia Tutorial"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "markdown",
"metadata": {},
"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 "
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = 2 #this is a comment\n",
" #run this cell by using the menu, or by Shift+Enter"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"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"
]
},
{
"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",
"\\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",
"---\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",
" ────────────────────────────────────────────────────────────────────────────\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"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"? cos #to get help on the cos() function"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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",
"```"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"printyellow (generic function with 1 method)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"using Printf\n",
"\n",
"include(\"jlFiles/printmat.jl\") #just a function for prettier matrix printing"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"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"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Scalars and Matrices\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create a Scalar and a Matrix"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"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"
]
}
],
"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) #case sensitive (q and Q are different)\n",
" #the \\n adds a line break"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Picking Out Parts of a Matrix"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"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"
]
}
],
"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,:])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 10 10 \n",
" 21 22 \n",
"\n",
" 10 10 \n",
" 1 2 \n",
"\n"
]
}
],
"source": [
"A = [10 10;\n",
" 21 22]\n",
"printmat(A)\n",
"A[2,:] = [1 2]\n",
"printmat(A)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"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"
]
}
],
"source": [
"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)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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$"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" x\n",
" -1.800\n",
" 1.900\n",
"\n",
" A*x q\n",
" 1.000 1.000\n",
" 2.000 2.000\n",
"\n"
]
}
],
"source": [
"\n",
"\n",
"\n",
"q = [1,2]\n",
"x = inv(A)*q\n",
"printmat(x,colNames=[\"x\"])\n",
"\n",
"printmat([A*x q],colNames=[\"A*x\",\"q\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Creating a Sequence and a Vector"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"θ is a sequence: 1:10:21\n",
"\n",
"ρ is a vector: \n",
" 1 \n",
" 11 \n",
" 21 \n",
"\n"
]
}
],
"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(ρ)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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()`)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"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"
]
}
],
"source": [
"α = 0:0.1:1\n",
"#α = range(0,1,length=11)\n",
"printmat(α)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"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"
]
}
],
"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)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Task\n",
"\n",
"Which elements of $\\alpha$ are (weakly) between 0.6 and 0.99?"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" vv[-1.5, -1.0, -0.5, 0.0, 0.5]\n",
" 0 0.000\n",
" 0 0.100\n",
" 0 0.200\n",
" 0 0.300\n",
" 0 0.400\n",
" 0 0.500\n",
" 1 0.600\n",
" 1 0.700\n",
" 1 0.800\n",
" 1 0.900\n",
" 0 1.000\n",
"\n"
]
}
],
"source": [
"vv = 0.6 .<= α .<= 0.99\n",
"printmat(vv,α,colNames=[\"vv\",x])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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)`."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"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"
]
}
],
"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)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.05\n"
]
}
],
"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)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.05\n"
]
}
],
"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)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 70.000 0.467\n",
"\n"
]
}
],
"source": [
"X = 150\n",
"\n",
"if X <= 100\n",
" tax = 0.4*X\n",
"else\n",
" tax = 0.4*100 + 0.6*(X-100)\n",
"end\n",
"\n",
"avgtax = tax/X\n",
"printmat(tax,avgtax)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### A Simple \"for loop\"\n",
"\n",
"The \"for loop\" in the next cell makes 3 iterations and changes a global $x$ variable."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"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"
]
}
],
"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 = 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"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Return\n",
"period 2 0.100\n",
"period 3 0.009\n",
"\n"
]
}
],
"source": [
"P = [100;108;109] #price series, after dividends\n",
"D = [0;2;0] #dividends\n",
"\n",
"R = zeros(length(P)) #where to store the results\n",
"for t = 2:length(P) #P[2] is the 2nd element of P \n",
" R[t] = (P[t] + D[t])/P[t-1] - 1\n",
"end\n",
"R = R[2:end]\n",
"\n",
"printmat(R,colNames=[\"Return\"],rowNames=string.(\"period \",2:3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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. "
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"new x matrix: \n",
"\n",
" 11 12 13 \n",
" 21 22 23 \n",
" 31 32 33 \n",
" 41 42 43 \n",
"\n"
]
}
],
"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)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"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"
]
}
],
"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))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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?"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 1 1.100\n",
" 2 1.210\n",
" 3 1.331\n",
" 4 1.464\n",
" 5 1.611\n",
" 6 1.772\n",
" 7 1.949\n",
" 8 2.144\n"
]
}
],
"source": [
"x = 1\n",
"iter = 0\n",
"while x < 2\n",
" x = x*1.1\n",
" iter = iter + 1 \n",
" printlnPs(iter,x)\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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])`."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"fn1 (generic function with 1 method)"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function fn1(x) #define a new function \n",
" y = (x-1.1)^2 - 0.5\n",
" return y\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"result from fn1(1.5): -0.340\n",
"\n",
"result from fn1.(x): \n",
" -0.490\n",
" -0.340\n",
"\n"
]
}
],
"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)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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$?"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0.950\n"
]
}
],
"source": [
"BondPrice(y,m) = exp(-m*y) #B as fn of y\n",
"\n",
"printlnPs(BondPrice(0.103,0.5))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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*."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"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=\"clip760\">\n",
" <rect x=\"0\" y=\"0\" width=\"1920\" height=\"1280\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip760)\" d=\"\n",
"M0 1280 L1920 1280 L1920 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip761\">\n",
" <rect x=\"384\" y=\"0\" width=\"1345\" height=\"1280\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip760)\" d=\"\n",
"M199.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=\"clip762\">\n",
" <rect x=\"199\" y=\"123\" width=\"1675\" height=\"984\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip762)\" 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(#clip762)\" 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(#clip762)\" 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(#clip762)\" 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(#clip762)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip762)\" 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(#clip762)\" 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(#clip762)\" 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(#clip762)\" 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(#clip762)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip762)\" 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(#clip762)\" 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(#clip760)\" d=\"\n",
"M1522.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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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(#clip760)\" 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": {},
"output_type": "display_data"
}
],
"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"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"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=\"clip800\">\n",
" <rect x=\"0\" y=\"0\" width=\"1920\" height=\"1280\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip800)\" d=\"\n",
"M0 1280 L1920 1280 L1920 0 L0 0 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip801\">\n",
" <rect x=\"384\" y=\"0\" width=\"1345\" height=\"1280\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip800)\" d=\"\n",
"M244.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=\"clip802\">\n",
" <rect x=\"244\" y=\"47\" width=\"1629\" height=\"1060\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip802)\" 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(#clip802)\" 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(#clip802)\" 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(#clip802)\" 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(#clip802)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip802)\" 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(#clip802)\" 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(#clip802)\" 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(#clip802)\" 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(#clip802)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" 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(#clip800)\" d=\"M50.9104 740.57 L68.3206 740.57 L68.3206 730.257 Q68.3206 725.069 66.1881 722.587 Q64.0238 720.072 59.5996 720.072 Q55.1436 720.072 53.0429 722.587 Q50.9104 725.069 50.9104 730.257 L50.9104 740.57 M31.3677 740.57 L45.6905 740.57 L45.6905 731.053 Q45.6905 726.342 43.94 724.051 Q42.1576 721.727 38.5291 721.727 Q34.9325 721.727 33.1501 724.051 Q31.3677 726.342 31.3677 731.053 L31.3677 740.57 M26.0842 746.999 L26.0842 730.576 Q26.0842 723.223 29.1397 719.245 Q32.1952 715.266 37.8289 715.266 Q42.1894 715.266 44.7675 717.303 Q47.3456 719.34 47.9822 723.287 Q49.0007 718.544 52.2472 715.934 Q55.4619 713.293 60.2998 713.293 Q66.6655 713.293 70.1348 717.621 Q73.6042 721.95 73.6042 729.939 L73.6042 746.999 L26.0842 746.999 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip800)\" d=\"M42.0621 688.721 Q42.0621 693.432 45.7542 696.169 Q49.4145 698.906 55.812 698.906 Q62.2095 698.906 65.9017 696.201 Q69.5619 693.464 69.5619 688.721 Q69.5619 684.042 65.8698 681.305 Q62.1777 678.568 55.812 678.568 Q49.4781 678.568 45.786 681.305 Q42.0621 684.042 42.0621 688.721 M37.0968 688.721 Q37.0968 681.082 42.0621 676.722 Q47.0273 672.361 55.812 672.361 Q64.5649 672.361 69.5619 676.722 Q74.5272 681.082 74.5272 688.721 Q74.5272 696.392 69.5619 700.752 Q64.5649 705.081 55.812 705.081 Q47.0273 705.081 42.0621 700.752 Q37.0968 696.392 37.0968 688.721 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip800)\" d=\"M52.0881 633.021 L73.6042 633.021 L73.6042 638.878 L52.279 638.878 Q47.2183 638.878 44.7038 640.851 Q42.1894 642.824 42.1894 646.771 Q42.1894 651.514 45.2131 654.251 Q48.2368 656.988 53.4567 656.988 L73.6042 656.988 L73.6042 662.876 L37.9562 662.876 L37.9562 656.988 L43.4944 656.988 Q40.2797 654.887 38.6883 652.055 Q37.0968 649.19 37.0968 645.466 Q37.0968 639.323 40.9163 636.172 Q44.7038 633.021 52.0881 633.021 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip800)\" d=\"M43.3671 597.882 L24.079 597.882 L24.079 592.026 L73.6042 592.026 L73.6042 597.882 L68.257 597.882 Q71.4398 599.729 72.9994 602.561 Q74.5272 605.362 74.5272 609.309 Q74.5272 615.77 69.371 619.844 Q64.2147 623.886 55.812 623.886 Q47.4093 623.886 42.2531 619.844 Q37.0968 615.77 37.0968 609.309 Q37.0968 605.362 38.6564 602.561 Q40.1842 599.729 43.3671 597.882 M55.812 617.839 Q62.2732 617.839 65.9653 615.197 Q69.6256 612.524 69.6256 607.877 Q69.6256 603.23 65.9653 600.556 Q62.2732 597.882 55.812 597.882 Q49.3508 597.882 45.6905 600.556 Q41.9984 603.23 41.9984 607.877 Q41.9984 612.524 45.6905 615.197 Q49.3508 617.839 55.812 617.839 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip800)\" d=\"M68.257 553.577 L87.1631 553.577 L87.1631 559.465 L37.9562 559.465 L37.9562 553.577 L43.3671 553.577 Q40.1842 551.731 38.6564 548.93 Q37.0968 546.097 37.0968 542.183 Q37.0968 535.69 42.2531 531.647 Q47.4093 527.573 55.812 527.573 Q64.2147 527.573 69.371 531.647 Q74.5272 535.69 74.5272 542.183 Q74.5272 546.097 72.9994 548.93 Q71.4398 551.731 68.257 553.577 M55.812 533.652 Q49.3508 533.652 45.6905 536.326 Q41.9984 538.968 41.9984 543.615 Q41.9984 548.262 45.6905 550.935 Q49.3508 553.577 55.812 553.577 Q62.2732 553.577 65.9653 550.935 Q69.6256 548.262 69.6256 543.615 Q69.6256 538.968 65.9653 536.326 Q62.2732 533.652 55.812 533.652 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip800)\" d=\"M43.4307 497.209 Q42.8578 498.195 42.6032 499.373 Q42.3167 500.519 42.3167 501.919 Q42.3167 506.885 45.5632 509.558 Q48.7779 512.2 54.8253 512.2 L73.6042 512.2 L73.6042 518.088 L37.9562 518.088 L37.9562 512.2 L43.4944 512.2 Q40.2479 510.354 38.6883 507.394 Q37.0968 504.434 37.0968 500.201 Q37.0968 499.596 37.1923 498.864 Q37.256 498.132 37.4151 497.241 L43.4307 497.209 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip800)\" d=\"M37.9562 491.066 L37.9562 485.209 L73.6042 485.209 L73.6042 491.066 L37.9562 491.066 M24.079 491.066 L24.079 485.209 L31.495 485.209 L31.495 491.066 L24.079 491.066 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip800)\" d=\"M39.3248 447.302 L44.7993 447.302 Q43.4307 449.784 42.7623 452.299 Q42.0621 454.781 42.0621 457.328 Q42.0621 463.025 45.6905 466.176 Q49.2872 469.327 55.812 469.327 Q62.3369 469.327 65.9653 466.176 Q69.5619 463.025 69.5619 457.328 Q69.5619 454.781 68.8935 452.299 Q68.1933 449.784 66.8247 447.302 L72.2355 447.302 Q73.3814 449.752 73.9543 452.394 Q74.5272 455.004 74.5272 457.964 Q74.5272 466.017 69.4664 470.759 Q64.4057 475.502 55.812 475.502 Q47.091 475.502 42.0939 470.727 Q37.0968 465.921 37.0968 457.582 Q37.0968 454.877 37.6697 452.299 Q38.2108 449.721 39.3248 447.302 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip800)\" d=\"M54.3161 406.625 L57.1806 406.625 L57.1806 433.552 Q63.2281 433.17 66.4109 429.923 Q69.5619 426.645 69.5619 420.82 Q69.5619 417.447 68.7344 414.295 Q67.9069 411.113 66.2518 407.993 L71.7899 407.993 Q73.1267 411.144 73.827 414.455 Q74.5272 417.765 74.5272 421.17 Q74.5272 429.7 69.5619 434.698 Q64.5967 439.663 56.1303 439.663 Q47.3774 439.663 42.2531 434.952 Q37.0968 430.21 37.0968 422.189 Q37.0968 414.996 41.7438 410.826 Q46.3589 406.625 54.3161 406.625 M52.5973 412.481 Q47.7912 412.545 44.9266 415.187 Q42.0621 417.797 42.0621 422.125 Q42.0621 427.027 44.8312 429.987 Q47.6002 432.915 52.6292 433.361 L52.5973 412.481 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip802)\" style=\"stroke:#009af9; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 290.818,573.475 301.057,573.672 311.296,573.869 321.535,574.067 331.774,574.264 342.013,574.461 352.252,574.659 362.491,574.856 372.731,575.053 382.97,575.25 \n",
" 393.209,575.447 403.448,575.644 413.687,575.841 423.926,576.038 434.165,576.234 444.404,576.431 454.643,576.628 464.882,576.825 475.121,577.021 485.36,577.218 \n",
" 495.6,577.414 505.839,577.611 516.078,577.807 526.317,578.004 536.556,578.2 546.795,578.396 557.034,578.592 567.273,578.789 577.512,578.985 587.751,579.181 \n",
" 597.99,579.377 608.229,579.573 618.468,579.769 628.708,579.965 638.947,580.16 649.186,580.356 659.425,580.552 669.664,580.748 679.903,580.943 690.142,581.139 \n",
" 700.381,581.334 710.62,581.53 720.859,581.725 731.098,581.921 741.337,582.116 751.577,582.311 761.816,582.507 772.055,582.702 782.294,582.897 792.533,583.092 \n",
" 802.772,583.287 813.011,583.482 823.25,583.677 833.489,583.872 843.728,584.067 853.967,584.262 864.206,584.456 874.446,584.651 884.685,584.846 894.924,585.04 \n",
" 905.163,585.235 915.402,585.429 925.641,585.624 935.88,585.818 946.119,586.013 956.358,586.207 966.597,586.401 976.836,586.595 987.075,586.79 997.314,586.984 \n",
" 1007.55,587.178 1017.79,587.372 1028.03,587.566 1038.27,587.76 1048.51,587.954 1058.75,588.147 1068.99,588.341 1079.23,588.535 1089.47,588.729 1099.71,588.922 \n",
" 1109.94,589.116 1120.18,589.309 1130.42,589.503 1140.66,589.696 1150.9,589.89 1161.14,590.083 1171.38,590.276 1181.62,590.47 1191.86,590.663 1202.1,590.856 \n",
" 1212.34,591.049 1222.57,591.242 1232.81,591.435 1243.05,591.628 1253.29,591.821 1263.53,592.014 1273.77,592.207 1284.01,592.4 1294.25,592.592 1304.49,592.785 \n",
" 1314.73,592.978 1324.97,593.17 1335.2,593.363 1345.44,593.555 1355.68,593.748 1365.92,593.94 1376.16,594.132 1386.4,594.325 1396.64,594.517 1406.88,594.709 \n",
" 1417.12,594.901 1427.36,595.093 1437.59,595.285 1447.83,595.477 1458.07,595.669 1468.31,595.861 1478.55,596.053 1488.79,596.245 1499.03,596.437 1509.27,596.628 \n",
" 1519.51,596.82 1529.75,597.012 1539.99,597.203 1550.22,597.395 1560.46,597.586 1570.7,597.778 1580.94,597.969 1591.18,598.16 1601.42,598.352 1611.66,598.543 \n",
" 1621.9,598.734 1632.14,598.925 1642.38,599.116 1652.62,599.307 1662.85,599.498 1673.09,599.689 1683.33,599.88 1693.57,600.071 1703.81,600.262 1714.05,600.453 \n",
" 1724.29,600.643 1734.53,600.834 1744.77,601.025 1755.01,601.215 1765.25,601.406 1775.48,601.596 1785.72,601.787 1795.96,601.977 1806.2,602.167 1816.44,602.358 \n",
" 1826.68,602.548 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip802)\" style=\"stroke:#e26f46; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 290.818,77.2196 301.057,90.0172 311.296,102.687 321.535,115.232 331.774,127.651 342.013,139.947 352.252,152.12 362.491,164.172 372.731,176.105 382.97,187.919 \n",
" 393.209,199.615 403.448,211.194 413.687,222.659 423.926,234.009 434.165,245.247 444.404,256.372 454.643,267.387 464.882,278.293 475.121,289.09 485.36,299.779 \n",
" 495.6,310.362 505.839,320.84 516.078,331.214 526.317,341.484 536.556,351.652 546.795,361.719 557.034,371.686 567.273,381.553 577.512,391.323 587.751,400.995 \n",
" 597.99,410.571 608.229,420.051 618.468,429.438 628.708,438.731 638.947,447.931 649.186,457.04 659.425,466.058 669.664,474.987 679.903,483.827 690.142,492.579 \n",
" 700.381,501.243 710.62,509.822 720.859,518.315 731.098,526.723 741.337,535.048 751.577,543.29 761.816,551.451 772.055,559.529 782.294,567.528 792.533,575.447 \n",
" 802.772,583.287 813.011,591.049 823.25,598.734 833.489,606.343 843.728,613.875 853.967,621.333 864.206,628.717 874.446,636.027 884.685,643.264 894.924,650.429 \n",
" 905.163,657.523 915.402,664.547 925.641,671.5 935.88,678.385 946.119,685.201 956.358,691.949 966.597,698.63 976.836,705.244 987.075,711.793 997.314,718.276 \n",
" 1007.55,724.695 1017.79,731.05 1028.03,737.342 1038.27,743.571 1048.51,749.739 1058.75,755.845 1068.99,761.89 1079.23,767.875 1089.47,773.8 1099.71,779.667 \n",
" 1109.94,785.475 1120.18,791.225 1130.42,796.918 1140.66,802.555 1150.9,808.135 1161.14,813.66 1171.38,819.13 1181.62,824.545 1191.86,829.907 1202.1,835.215 \n",
" 1212.34,840.47 1222.57,845.674 1232.81,850.825 1243.05,855.925 1253.29,860.974 1263.53,865.973 1273.77,870.923 1284.01,875.823 1294.25,880.674 1304.49,885.477 \n",
" 1314.73,890.232 1324.97,894.94 1335.2,899.602 1345.44,904.216 1355.68,908.785 1365.92,913.309 1376.16,917.787 1386.4,922.221 1396.64,926.61 1406.88,930.956 \n",
" 1417.12,935.259 1427.36,939.519 1437.59,943.737 1447.83,947.912 1458.07,952.046 1468.31,956.139 1478.55,960.191 1488.79,964.203 1499.03,968.175 1509.27,972.108 \n",
" 1519.51,976.001 1529.75,979.855 1539.99,983.672 1550.22,987.45 1560.46,991.19 1570.7,994.894 1580.94,998.56 1591.18,1002.19 1601.42,1005.78 1611.66,1009.34 \n",
" 1621.9,1012.87 1632.14,1016.35 1642.38,1019.81 1652.62,1023.23 1662.85,1026.61 1673.09,1029.96 1683.33,1033.28 1693.57,1036.56 1703.81,1039.81 1714.05,1043.03 \n",
" 1724.29,1046.22 1734.53,1049.38 1744.77,1052.5 1755.01,1055.6 1765.25,1058.66 1775.48,1061.69 1785.72,1064.69 1795.96,1067.66 1806.2,1070.61 1816.44,1073.52 \n",
" 1826.68,1076.4 \n",
" \"/>\n",
"<path clip-path=\"url(#clip800)\" d=\"\n",
"M1555.84 238.069 L1818.49 238.069 L1818.49 82.5486 L1555.84 82.5486 Z\n",
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip800)\" style=\"stroke:#000000; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1555.84,238.069 1818.49,238.069 1818.49,82.5486 1555.84,82.5486 1555.84,238.069 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip800)\" style=\"stroke:#009af9; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1573.93,134.389 1682.46,134.389 \n",
" \"/>\n",
"<path clip-path=\"url(#clip800)\" d=\"M1716.18 133.034 Q1719.53 133.752 1721.41 136.021 Q1723.31 138.289 1723.31 141.622 Q1723.31 146.738 1719.79 149.539 Q1716.27 152.34 1709.79 152.34 Q1707.61 152.34 1705.3 151.9 Q1703.01 151.483 1700.55 150.627 L1700.55 146.113 Q1702.5 147.247 1704.81 147.826 Q1707.13 148.405 1709.65 148.405 Q1714.05 148.405 1716.34 146.669 Q1718.65 144.933 1718.65 141.622 Q1718.65 138.567 1716.5 136.854 Q1714.37 135.118 1710.55 135.118 L1706.52 135.118 L1706.52 131.275 L1710.74 131.275 Q1714.19 131.275 1716.01 129.909 Q1717.84 128.521 1717.84 125.928 Q1717.84 123.266 1715.95 121.854 Q1714.07 120.419 1710.55 120.419 Q1708.63 120.419 1706.43 120.835 Q1704.23 121.252 1701.59 122.132 L1701.59 117.965 Q1704.26 117.224 1706.57 116.854 Q1708.91 116.484 1710.97 116.484 Q1716.29 116.484 1719.39 118.914 Q1722.5 121.322 1722.5 125.442 Q1722.5 128.312 1720.85 130.303 Q1719.21 132.271 1716.18 133.034 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip800)\" d=\"M1751.76 130.72 Q1753.35 127.849 1755.57 126.484 Q1757.8 125.118 1760.81 125.118 Q1764.86 125.118 1767.06 127.965 Q1769.26 130.789 1769.26 136.021 L1769.26 151.669 L1764.97 151.669 L1764.97 136.159 Q1764.97 132.433 1763.65 130.627 Q1762.33 128.822 1759.63 128.822 Q1756.32 128.822 1754.39 131.021 Q1752.47 133.22 1752.47 137.016 L1752.47 151.669 L1748.19 151.669 L1748.19 136.159 Q1748.19 132.409 1746.87 130.627 Q1745.55 128.822 1742.8 128.822 Q1739.53 128.822 1737.61 131.044 Q1735.69 133.243 1735.69 137.016 L1735.69 151.669 L1731.41 151.669 L1731.41 125.743 L1735.69 125.743 L1735.69 129.771 Q1737.15 127.386 1739.19 126.252 Q1741.22 125.118 1744.02 125.118 Q1746.85 125.118 1748.82 126.553 Q1750.81 127.988 1751.76 130.72 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><polyline clip-path=\"url(#clip800)\" style=\"stroke:#e26f46; stroke-linecap:butt; stroke-linejoin:round; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1573.93,186.229 1682.46,186.229 \n",
" \"/>\n",
"<path clip-path=\"url(#clip800)\" d=\"M1701.22 199.573 L1708.86 199.573 L1708.86 173.208 L1700.55 174.875 L1700.55 170.615 L1708.82 168.949 L1713.49 168.949 L1713.49 199.573 L1721.13 199.573 L1721.13 203.509 L1701.22 203.509 L1701.22 199.573 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip800)\" d=\"M1740.57 172.027 Q1736.96 172.027 1735.14 175.592 Q1733.33 179.134 1733.33 186.263 Q1733.33 193.37 1735.14 196.935 Q1736.96 200.476 1740.57 200.476 Q1744.21 200.476 1746.01 196.935 Q1747.84 193.37 1747.84 186.263 Q1747.84 179.134 1746.01 175.592 Q1744.21 172.027 1740.57 172.027 M1740.57 168.324 Q1746.38 168.324 1749.44 172.93 Q1752.52 177.513 1752.52 186.263 Q1752.52 194.99 1749.44 199.597 Q1746.38 204.18 1740.57 204.18 Q1734.76 204.18 1731.69 199.597 Q1728.63 194.99 1728.63 186.263 Q1728.63 177.513 1731.69 172.93 Q1734.76 168.324 1740.57 168.324 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /><path clip-path=\"url(#clip800)\" d=\"M1770.92 205.916 Q1769.12 210.546 1767.4 211.958 Q1765.69 213.37 1762.82 213.37 L1759.42 213.37 L1759.42 209.805 L1761.92 209.805 Q1763.68 209.805 1764.65 208.972 Q1765.62 208.138 1766.8 205.036 L1767.57 203.092 L1757.08 177.583 L1761.59 177.583 L1769.7 197.861 L1777.8 177.583 L1782.31 177.583 L1770.92 205.916 Z\" fill=\"#000000\" fill-rule=\"evenodd\" fill-opacity=\"1\" /></svg>\n"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = -0.05:0.001:0.10\n",
"\n",
"B3m = BondPrice.(y,3/12)\n",
"B10y = BondPrice.(y,10)\n",
"\n",
"plot([y y],[B3m B10y],label = [\"3m\" \"10y\"],xlabel=\"interest rate\",ylabel=\"Bond price\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Integers and Floats"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Finding the type of a, b, A and B:\n",
"Int64 Float64 Vector{Int64} Vector{Float64}\n"
]
}
],
"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))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Bools and BitArrays\n",
"\n",
"Bools are \"true\" or \"false\". BitArrays are (more memory efficient) versions of this."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Finding the type of c and C:\n",
"Bool BitVector\n"
]
}
],
"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))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"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.)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.0\n",
"3\n"
]
}
],
"source": [
"println(1+2.0) #integer + Float\n",
"println((1>0) + 2) #bool + integer"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"@webio": {
"lastCommId": null,
"lastKernelId": null
},
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Julia 1.6.3",
"language": "julia",
"name": "julia-1.6"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}