From 625b3636ed4bb8600f4793dd8c99090ff7af472e Mon Sep 17 00:00:00 2001 From: BartN Date: Thu, 18 Feb 2021 01:06:06 +0100 Subject: [PATCH] Plik z calkowaniem numerycznym. --- 5. Jupyter - całkowanie numeryczne.ipynb | 1745 +++++++++++++++++++++ 1 file changed, 1745 insertions(+) create mode 100644 5. Jupyter - całkowanie numeryczne.ipynb diff --git a/5. Jupyter - całkowanie numeryczne.ipynb b/5. Jupyter - całkowanie numeryczne.ipynb new file mode 100644 index 0000000..bccda2e --- /dev/null +++ b/5. Jupyter - całkowanie numeryczne.ipynb @@ -0,0 +1,1745 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Pola figur: całkowanie analityczne i metodą Monte Carlo\n", + "\n", + "W jaki sposób można obliczyć pole figury o zadanym kształcie, który jest trudny do analitycznego opisu?\n", + "W tym pliku przedyskutujemy sposób obliczania pól figur oparty na metodach losowych z wykorzystaniem prostych spacerów losowych. Porównamy wyniki z obliczeniami analitycznymi na konkretnym przykładzie.\n", + "\n", + "
\n", + "Aby wzbogacić nasz repertuar matematyczny wykorzystamy w tym pliku funkcjonalność SageMath - obszernej biblioteki, która rozwija metody symboliczne Pythona. Do uruchomienia tego pliku będziesz potrzebować jądra \"SageMath\" w wersji co najmniej 8.9. Bez instalacji ten plik można rekompilować np. w przeglądarkowej wersji SageMath pod adresem cocalc.com.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Problem

\n", + "
\n", + "Oblicz z dokładnością $0.01$ pole wewnątrz następującej figury.
" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAegAAAEFCAYAAAAoinRQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi40LCBodHRwOi8vbWF0cGxvdGxpYi5vcmcv7US4rQAAIABJREFUeJzt3Xlc1NX+P/DXsCOy5AaiuOae1xVxX7Ioy7VMy3IrK3O5l8xK85aaa1leK7FvesvlambXLdOuRaVokeUC7qgpCi5IqIG4DALn98f7NxACyjLD+czM6/l4zGOYYZh5f5iZz/tzzuec9zEppRSIiIjIUFx0B0BEREQFMUETEREZEBM0ERGRATFBExERGRATNBERkQExQRMRERkQEzQREZEBMUETEREZEBM0ERGRATFBExERGRATNBERkQG56Q6gtHJycnD+/Hn4+vrCZDLpDoeIiKhQSilcvXoVwcHBcHEpQbtYaRIdHa169+6tqlevrgCoDRs2lOjvk5KSFABeeOGFF154sYtLUlJSifKcthb0tWvX0KJFC4wcORKPP/54if/e19cXAJCUlAQ/Pz9rh0dERGQV6enpCAkJyc1bxaUtQffq1Qu9evUq9d9burX9/PyYoImIyPBKejrWbs5Bm81mmM3m3Nvp6ekaoyEiIrItuxnFPWfOHPj7++deQkJCdIdERERkM3aToCdPnoy0tLTcS1JSku6QiIiIbMZuurg9PT3h6empOwwiIqJyYTctaCIiImeirQWdkZGB33//Pfd2QkIC4uLiUKlSJdSqVUtXWERERIagLUHv2bMHPXr0yL09YcIEAMDw4cOxbNkyTVEREREZg7YE3b17dyildL08ERGRofEcNBERkQExQRMRERkQEzQREZEBMUETEREZkN0l6MjISDRt2hShoaG6QyEiIrIZk7LTodTp6enw9/dHWloaV7MiIiLDKm2+srsWNBERkTNggiYiIjIgJmgiIiIDYoImIiIyICZoIiIiA2KCJiIiMiAmaCIiIgNigiYiIjIgu0vQrCRGRETOgJXEiIiIbIiVxIiIiBwIEzQREZEBMUETEREZEBM0ERGRATFBExERGRATNBERkQExQRMRERkQEzQREZEB2V2CZiUxIiJyBqwkRkREZEOsJEZERORAmKCJiIgMiAmaiIjIgJigiYiI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B4xms3yWr1yR88YXLwKJicCZM/LZLkyjRnJgef/9soQpF7QwPi0J+tSpU6hfvz727duHVq1a5d7fr18/BAQEYPny5YX+3bRp0zBv3jz4+/vD09MTYWFhmD17NurVq1fka5nNZpjN5tzb6enpCAkJYYK2M7duSYtg9265HDokrYS0NOu9houLnIOztGpatZKWTr16LGNI1pGRAcTFScv20CH5TB89at3Psckkn9kmTYDWreWAMjSUg73sUWkTtFtZXtRyzjjwtk9MYGAgzpw5U+TfhYWFYcWKFWjYsCEuXryImTNnomPHjjh8+DAqV65c6N/MmTOnwHlrsj/u7nIur2VL4Pnn5T5Lt/SZM3K5eFFaxJcvSyvCbJalBJWS82ouLjI6tWJFaZ1UrSqX4GCgbl1phXt46N1OcmwVK8q56M6d8+5TSlrCp07J5zglRS7p6VKjPSNDWs3Z2dL69vCQniFvb+ktqlRJPse1asmlTh3jDa6k8lWiFvSqVavydVtv2bIF3bt3x/nz51H9Lyfwnn/+eSQlJWHr1q3Fet5r166hfv36eO211zBhwoRCH8MWNBER2aNyaUH37dsXYWFhubctCTM5OTlfgk5JSSnQqr4THx8fNG/eHCf+WhXiNp6envC09woCRERExVSiyS6+vr649957cy9NmzZFUFAQoqKich+TmZmJ6OhodOzYsdjPazabcfTo0XxJnoiIyJmVaTaqyWRCREQEZs+ejQ0bNuDQoUMYMWIEKlSogCFDhuQ+rmfPnlhoWREcwMSJExEdHY2EhAT8+uuvGDhwINLT0zF8+PCyhENEROQwyjRIDABee+013LhxA2PGjMktVPLdd9/lmwN98uRJpKam5t4+e/YsnnrqKaSmpqJq1apo3749du3ahdpc3Z6IiAgAS30SERHZVGnzVTkXXCQiIqLiYIImIiIyICZoIiIiA7K7BB0ZGYmmTZsiNDRUdyhEREQ2w0FiRERENsRBYkRERA6ECZqIiMiAmKCJiIgMiAmaiIjIgJigiYiIDIgJmoiIyICYoImIiAyICZqIiMiA7C5Bs5IYERE5A1YSIyIisiFWEiMiInIgTNBEREQGxARNRERkQEzQREREBsQETUREZEBM0ERERAbEBE1ERGRATNBEREQGxARNRERkQHaXoFnqk4iInAFLfRIREdkQS30SERE5ECZoIiIi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\n", + "text/plain": [ + "Graphics object consisting of 1 graphics primitive" + ] + }, + "execution_count": 129, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x,y=var('x,y')\n", + "implicit_plot((x**2+y**2)**2-2*(x**2-y**2),(x,-2,2),(y,-2,2),figsize=[5,5],ymax=1,ymin=-1,xmin=-2,xmax=2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Obliczenia analityczne\n", + "\n", + "W naszym pierwszym podejściu obliczymy pole wewnątrz \"ósemki\" w sposób dokładny (analityczny). W tym celu musimy rozwiazać uwikłane równanie opisujące krzywą." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Rozwiązanie równania\n", + "Najpierw \"rozwiązujemy\" nasze równanie uwikłane.\n", + "\n", + "$$(x^2+y^2)^2=2(x^2-y^2)$$" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "solv=solve((x**2+y**2)**2-2*(x**2-y**2)==0,(x,y))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "[[x == r1, y == sqrt(-r1^2 - sqrt(4*r1^2 + 1) - 1)], [x == r2, y == -sqrt(-r2^2 - sqrt(4*r2^2 + 1) - 1)], [x == r3, y == sqrt(-r3^2 + sqrt(4*r3^2 + 1) - 1)], [x == r4, y == -sqrt(-r4^2 + sqrt(4*r4^2 + 1) - 1)]]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pretty_print(solv)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

Powyższy obiekt przechowuje wszystke \"lokalne\" rozwiązania naszego równania. Wykorzystamy je do napisania równań funkcji, które kawałkami opisują kształt naszej \"ósemki\" (precyzyjnie: lemniskaty Bernoulliego).

\n", + "\n", + "

UWAGA: dwie spośród podanych wyżej funkcji rozwiązań nie opisują rzeczywistych części wykresu - ignorujemy je.

" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "y1=solv[2][1].rhs() #wybieramy prawą stronę trzeciego równania\n", + "r=y1.variables()[0] #odnosimy się do jego wewnętrznej zmiennej symbolicznej\n", + "f=y1.subs({r:x}) #i podstawiamy ustaloną przez nas od początku zmienną x\n", + "\n", + "#sprawdzamy równość podstawienia\n", + "assert bool(f==sqrt(-x^2 + sqrt(4*x^2 + 1) - 1))\n", + "\n", + "#to będzie nasza \"rozwiązana\" funkcja\n", + "funkcja=sqrt(-x^2 + sqrt(4*x^2 + 1) - 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### W jakim prostokącie mieści się wykres lemniskaty?\n", + "\n", + "Obliczmy teraz formalnie liczby $a$ i $b$ takie, że zbiór punktów\n", + "\n", + "$$L=\\{(x,y)\\in\\mathbb{R}^2: (x^2+y^2)^2=2(x^2-y^2)\\}$$\n", + "spełnia\n", + "\n", + "$$\\max_{(x,y)\\in L} x = - \\min_{(x,y)\\in L} x = a$$\n", + "\n", + "oraz \n", + "\n", + "$$\\max_{(x,y)\\in L} y = - \\min_{(x,y)\\in L} y = b$$\n", + "\n", + "Wartość parametru $a$ przy nam się przy obliczaniu pola (całki) metodą analityczną. Parametr $b$ będzie nam potrzebny również przy obliczaniu pola numerycznie metodą Monte Carlo." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Liczbę $a$ wyznaczamy określając dziedzinę funkcji $f(x) = \\sqrt{\\sqrt{4x^2+1}-x^2-1}$" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(x^2 + 1)^2 - 4*x^2 - 1 == 0" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#UWAGA: w SageMath można używać zarówno ** jak i ^ jako symbolu potęgowania (w zwykłym Python symbol ^ oznacza\n", + "#operację XOR; w SageMath ta operacja jest oznaczona jako ^^)\n", + "eq1=0==-x^2 + sqrt(4*x^2 + 1) - 1 #formułujemy zerowanie argumenty pod zewnętrznym pierwiastkiem\n", + "\n", + "#wykonujemy przekształcenia na równaniu eq1, aby doprowadzić je do wygodnej wielomianowej postaci\n", + "eq1=eq1.add_to_both_sides(x^2+1)\n", + "eq1=eq1*eq1 #podniesienie obu stron do kwadratu\n", + "eq1=eq1.add_to_both_sides(-(4*x^2+1))\n", + "eq1" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[x == -sqrt(2), x == sqrt(2), x == 0]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solve(eq1,x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zatem nasz parametr $a$ wynosi $\\sqrt{2}$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Liczbę $b$ obliczymy wyznaczając maksimum osiągane przez funkcję $f(x)$ na przedziale $(0,\\sqrt{2})$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Obliczamy pochodną funkcji $f$ i zauważamy, że mianownik jest dodatni. Do określenia przebiegu funkcji użyjemy informacji o znaku licznika.
" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "pochodnaf=funkcja.derivative(x).factor()\n", + "licznik=pochodnaf.numerator()\n", + "mianownik=pochodnaf.denominator()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "-x*(sqrt(4*x^2 + 1) - 2)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#licznik\n", + "pretty_print(licznik)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "sqrt(4*x^2 + 1)*sqrt(-x^2 + sqrt(4*x^2 + 1) - 1)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#mianownik\n", + "pretty_print(mianownik)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "Graphics object consisting of 1 graphics primitive" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#wykres licznika pochodnej\n", + "plot(licznik,(x,0,sqrt(2)),figsize=[3,3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Z postaci funkcji $-x(\\sqrt{4x^2+1}-2)$ wynika, że jest dodatnia dla $xc$, gdzie $c$ jest jedynym miejscem zerowym tej funkcji. Obliczmy zatem $c$.
" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + "x == 1/2*sqrt(3)\n", + "]\n" + ] + } + ], + "source": [ + "with assuming(x>0):\n", + " print(solve(licznik==0,x))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Czyli funkcja $f(x)$ jest rosnąca na przedziale $\\left(0,\\frac{\\sqrt{3}}{2}\\right)$ i malejąca na przedziale $\\left(\\frac{\\sqrt{3}}{2},\\sqrt{2}\\right)$. \n", + "\n", + "
\n", + "W punkcie $x=\\frac{\\sqrt{3}}{2}$ funkcja $f(x)$ osiąga maksimum równe $b=1/2$.
" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1/2" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "funkcja.subs({x:sqrt(3)/2})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wizualizacja pudełka ograniczającego kształt lemniskaty" + ] + }, + { + "cell_type": "code", + "execution_count": 231, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "Graphics object consisting of 12 graphics primitives" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#rysowanie lemniskaty ze zmodyfikowaną skalą\n", + "pup=plot(f,(x,-sqrt(2),sqrt(2)),xmin=-sqrt(2)-0.2,xmax=sqrt(2)+0.2,ticks=[[-sqrt(2),-sqrt(2)/2,0,sqrt(2)/2,sqrt(2)],[-1/2,0,1/2]],tick_formatter=[sqrt(2)/2,1/2])\n", + "pdown=plot(-f,(x,-sqrt(2),sqrt(2)),ticks=[[-sqrt(3)/2,0,sqrt(3)/2],[-1/2,0,1/2]])\n", + "lemniskata=pdown+pup\n", + "\n", + "#pudełko dookoła lemniskaty\n", + "pudelko=plot(1/2,(x,-sqrt(2),sqrt(2)),color='red',fill='axis',fillcolor='green',fillalpha=0.1)+line([(-sqrt(2),-1/2),(-sqrt(2),1/2)],color='red')\n", + "pudelko+=plot(-1/2,(x,-sqrt(2),sqrt(2)),color='red')+line([(sqrt(2),-1/2),(sqrt(2),1/2)],color='red')\n", + "\n", + "#linie maksimów (przerywane, zielone)\n", + "linie=line([(sqrt(3)/2,0),(sqrt(3)/2,1/2)],linestyle=\"--\",color=\"green\")\n", + "linie+=line([(-sqrt(3)/2,0),(-sqrt(3)/2,1/2)],linestyle=\"--\",color=\"green\")\n", + "\n", + "#dodatkowe etykiety\n", + "teksty=text(\"$\\\\frac{\\\\sqrt{3}}{2}$\",(sqrt(3)/2+0.05,-0.05),color='green')\n", + "teksty+=text(\"$\\\\frac{-\\\\sqrt{3}}{2}$\",(-sqrt(3)/2-0.05,-0.05),color='green')\n", + "\n", + "#końcowy wykres\n", + "show(pudelko+lemniskata+teksty+linie,figsize=[6,6],aspect_ratio=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Teraz możemy obliczyć wartość pola wewnątrz figury jako sumę czterech całek (każda odpowiada jednej ćwiartce figury)." + ] + }, + { + "cell_type": "code", + "execution_count": 227, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "Graphics object consisting of 8 graphics primitives" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plg=plot(f,(x,-sqrt(2),0),fill='min',fillcolor='blue', fillalpha=.2)\n", + "pld=plot(-f,(x,-sqrt(2),0),fill='max',fillcolor='red', fillalpha=.2)\n", + "ppg=plot(f,(x,0,sqrt(2)),fill='min',fillcolor='green', fillalpha=.2)\n", + "ppd=plot(-f,(x,0,sqrt(2)),fill='max',fillcolor='yellow', fillalpha=.2)\n", + "show(plg+pld+ppg+ppd,figsize=[4,4],aspect_ratio=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.0000000070692856" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Pole wewnątrz lemniskaty\n", + "2*integrate(funkcja,(x,-sqrt(2),sqrt(2))).n()" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2.0000000070692856, 1.4825283125400555e-06)" + ] + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#szybsza metoda numerycznego całkowania z kontrolą błędu (wartość całki, błąd)\n", + "integral_numerical(2*funkcja,-sqrt(2),sqrt(2),max_points=100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hmm, być może wartość pola wynosi $2$, więc wartość całki z $f(x)$ wynosi $1$ w przedziale $(-\\sqrt{2},\\sqrt{2})$. Sprawdźmy to !" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Hipoteza

\n", + "
\n", + "\n", + "$$P=\\int_{0}^{\\sqrt{2}}\\sqrt{\\sqrt{4x^2 + 1}-x^2 - 1}\\: dx = \\frac{1}{2}$$
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wyznaczymy najpierw parametryzację promieniem i kątem $(r,t)$ dla naszego równania krzywej Bernoulliego.\n", + "\n", + "Korzystamy ze standardowej zamiany zmiennych\n", + "\n", + "$$x=r\\cos(t),\\quad y=r\\sin(t)$$" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(r^2 + 4*sin(t)^2 - 2)*r^2" + ] + }, + "execution_count": 131, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "r,t=var('r,t')\n", + "((x**2+y**2)**2-2*(x**2-y**2)).subs({x:r*cos(t),y:r*sin(t)}).simplify_full().factor()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Zatem równanie uwikłane lemniskaty we współrzędnych biegunowych $(r,t)$ jest postaci\n", + "\n", + "$$r^2+4\\sin(t)^2-2=0$$
" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[r == -sqrt(-4*sin(t)^2 + 2), r == sqrt(-4*sin(t)^2 + 2)]" + ] + }, + "execution_count": 132, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solve(r^2 + 4*sin(t)^2 - 2==0,r)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zatem możemy sparametryzować naszą krzywą następującymi równaniami\n", + "\n", + "$x=r \\cos(t), \\quad y=r \\sin(t)$, gdzie\n", + "\n", + "$r=\\pm \\sqrt{2-4 \\sin(t)^2}=\\pm \\sqrt{2\\cos(t)}=\\pm \\sqrt{4\\cos(t)^2-2}$" + ] + }, + { + "cell_type": "code", + "execution_count": 225, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "Graphics object consisting of 1 graphics primitive" + ] + }, + "execution_count": 225, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "parametric_plot((sqrt(2*cos(2*t))*cos(t),sqrt(2*cos(2*t))*sin(t)),(t,0,pi/4) ,figsize=[3,3])" + ] + }, + { + "cell_type": "code", + "execution_count": 224, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "Graphics object consisting of 1 graphics primitive" + ] + }, + "execution_count": 224, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "parametric_plot((-sqrt(2*cos(2*t))*cos(t),-sqrt(2*cos(2*t))*sin(t)),(t,-pi/4,pi/4),figsize=[3,3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Świetnie, zatem możemy naszą całkę $P$ przetransformować do postaci, gdzie będzie zależała wyłącznie od zmiennej $t$." + ] + }, + { + "cell_type": "code", + "execution_count": 276, + "metadata": {}, + "outputs": [], + "source": [ + "f1=funkcja.subs({x:sqrt(4*cos(t)**2-2)*cos(t)})\n", + "d1=x.subs({x:sqrt(4*cos(t)**2-2)*cos(t)}).derivative(t)" + ] + }, + { + "cell_type": "code", + "execution_count": 263, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "sqrt(-4*cos(t)^4 + 2*cos(t)^2 + sqrt(16*cos(t)^4 - 8*cos(t)^2 + 1) - 1)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "f1=f1.simplify_full()\n", + "pretty_print(f1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zauważmy, że \n", + "\n", + "$$16\\cos(t)^4 - 8\\cos(t)^2 + 1 = (4\\cos(t)^2 - 1)^2$$\n", + "\n", + "oraz\n", + "\n", + "$4\\cos(t)^2 - 1\\geq 0$ skoro $t\\in(0,\\frac{\\pi}{4})$" + ] + }, + { + "cell_type": "code", + "execution_count": 285, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "sqrt(-4*sin(t)^4 + 2*sin(t)^2)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "f1=sqrt(-4*cos(t)**4+2*cos(t)**2+(4*cos(t)**2-1)-1)\n", + "pretty_print(f1.simplify_full())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To wyrażenie uprościmy dalej\n", + "\n", + "$$\\sqrt{-4\\sin(t)^4+2\\sin(t)^2} = \\sin(t)\\sqrt{2(1-2\\sin(t)^2)}=\\sin(t)\\sqrt{4\\cos(t)^2-2}$$ na mocy naszych założeń o $t$." + ] + }, + { + "cell_type": "code", + "execution_count": 300, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "-2*(4*cos(t)^2 - 1)*sin(t)^2" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "f1=(sin(t)*sqrt(4*cos(t)**2-2))\n", + "d1=d1.factor()\n", + "pretty_print((f1*d1).simplify().expand().simplify_full())" + ] + }, + { + "cell_type": "code", + "execution_count": 301, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "-2*(4*cos(t)^2 - 1)*sin(t)^2" + ] + }, + "execution_count": 301, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(f1*d1).simplify().expand().simplify_full()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Zatem metodą dokładną pole wewnątrz lemniskaty jest czterokrotnym polem jednego parametryzowanego kawałka $P$. Parametryzacja jest zgodna z orientacją osi, gdy $t$ maleje od $\\frac{\\pi}{4}$ do $0$. Czyli\n", + "\n", + "$P = \\int_{x=0}^{x=\\sqrt{2}} \\sqrt{\\sqrt{4x^2 + 1}-x^2-1}\\: dx=\\int_{t=\\pi/4}^{t=0}-2(4\\cos(t)^2-1)\\cdot \\sin(t)^2 dt$
" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1/2" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "integrate(-2*(4*cos(t)^2 - 1)*sin(t)^2,(t,pi/4,0))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Problem

\n", + "Czy możemy obliczyć przybliżenie pola lemniskaty za pomocą metody nieanalitycznej?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Metoda numeryczna 1:

\n", + "
\n", + "Wygenerujemy zbiór punktów na płaszczyźnie w obszarze, w którym mieści się cała lemniskata.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nasza lemniskata styka się z bokami prostokąta $A=[-\\sqrt{2},\\sqrt{2}]\\times [-1/2,1/2]$.\n", + "\n", + "Pole tego prostokąta wynosi $2\\sqrt{2}$. Wylosujemy punkty w obu przedziałach (jednostajnie) i zobaczymy ile ich potrzeba, aby uzyskać rozsądne przybliżenie." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "UWAGA: W tym rozwiązaniu zastosujemy generator liczb pseudolosowych, który produkuje dla nas liczby z przedziału $[0,1]$ z rozkładem jednostajnym." + ] + }, + { + "cell_type": "code", + "execution_count": 222, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "Graphics object consisting of 1 graphics primitive" + ] + }, + "execution_count": 222, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "r=random() #zmienna o rozkładzie jednostajnym i wartościac w przedziale [0,1]\n", + "list_plot([random() for i in range(0,100)],figsize=[3,3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generujemy losowy punkt w prostokącie $A$" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": {}, + "outputs": [], + "source": [ + "def LosowyPunkt():\n", + " x=sqrt(2).n()*(2*random()-1)\n", + " y=random()-1/2\n", + " return (x,y)" + ] + }, + { + "cell_type": "code", + "execution_count": 221, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "Graphics object consisting of 100 graphics primitives" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "li=[point(LosowyPunkt()) for _ in range(0,100)]\n", + "show(sum(li),figsize=[3,3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Teraz potrzebujemy funkcji, która wskaże czy zadany punkt znajduje się we wnętrzu lemniskaty lub nie." + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": {}, + "outputs": [], + "source": [ + "def CzyWewnatrzLemniskaty(punkt):\n", + " x,y=punkt\n", + " f=sqrt(-x^2 + sqrt(4*x^2 + 1) - 1)\n", + " if abs(y)<=f:\n", + " return True\n", + " else:\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 146, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "CzyWewnatrzLemniskaty((1/4,1/8))" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "CzyWewnatrzLemniskaty((0,1))" + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEACAYAAABRQBpkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi40LCBodHRwOi8vbWF0cGxvdGxpYi5vcmcv7US4rQAAIABJREFUeJzt3Xd4FOXax/HvbDa9hxA6hBoIRSJNmnTpIEVQCE306IFjQXwV5OgRG3rEAqIcBAQp0gQpgiAtAqL0Ii2EEkogCSGQXnef94+RppQEdjOb5P5cV66YZDJzM2b3N/PMUzSllEIIIUSxZjK6ACGEEMaTMBBCCIHZ6ALEzbKBXKOLEKKAmQEXo4so9iQMHEY2cAiQRziiuNGAOkggGEuaiRxGLhIEonhSyB2x8SQMhBBCSBgIIYSQMBBCCIGEgRBCCCQMhBBCIGEgirjDh91YtsyP118vR1KSbf/c87Jvex4/P+xdh6P8O8X9k/9rokhbutSfBg3Sad48lVWr/Ap83/Y8fn7Yuw5H+XeK+ydhIAqtjAztntu89dZFKlXKJjbWmUqVsm16/Lzs257Hv9m9zoW96yiof6ewHwmDQiI4uA6HDrkV+HHr1691zzcaTWtAamr+/5TefrsM2dn3fkO/nVOnXFi/3idP26almUhJMdGyZep9HSuv+46KcmXFCl+7HP+rr0oyfXog4eHBxMbeOnFAXs+FPc/DX/d/p3MhHJeEgbir/fuP4u5un5HR48eXva8wUApmzQqkR4+kPG2/bp0Po0bFc+KE6x23OX/eOd91/HXf1atnERfnzJEjbnfc5n6sWeNDixapPPtsAn36XOXZZytd/1l+zsWD1pGf/d/pXAjHJWFQyO3a5UHbttVp2LAmDz9ci6VLb7TXaloDJkwoTePGNalSpQ4bNngzdmxZwsJqUbt2KIcPu13f7qOPStGkSU0qV67DrFklbtlHaqqJjAyN/v0rExoaykMP1eKxx6r/rRal4PXXy9GzZ1XS0/U3+fDwYBo2rEm9erXo1q0q8fH6Ve3zz1cEoFmzEOrXr0V8vPmO2/7V6tW+NGyYlqfzM316IJ9+WorHHqvOqVN3nvtmxozAPO3vXvseNOgyn38elO/j301UlBvTpun11aiRyZkzN/aT13Nhizryu/+/ngvh2DRZ3MZRpANH7/jT4OA6/PjjCerUybz+vatXnWjbtgarV0dRpkwuCQlONGhQix07jlG6dC6a1oApU84ycuQllizxY+jQYBYvPkXXrsn897+l2L/fg+++O42mNeDzz8/x0kvxHD3qRuPGNblyZT9msx4GKSn7WL/eh6lTS/Lzz1EAJCY6ERBgAfRtLl3az8iRFQkKymXSpHOY/rzMSEhwIjBQ3+7DD0tx/rwLU6acu/57KSn78PKy3nPbm/3jHxX5739j8POzXP/e0qV+ZGVpHDvmRvXqWfz6qxf/+9/ZPJ/9t98uw9tvX7ztz6KiXNm2zYtz51x4662LzJkTgNmsGDDgym2379OnCosXn8LJKc+Hv6ucHEhNdcLf38L06YFERroycWIM8Pdz8aDn4W7yex4gP+eiFuBhkzrF/ZFZSwux7ds9OXXKhc6db1ylK6URGelG6dJ6u3D//okAPPxwOiYTdO2aDECDBuksW3bjLmLgwMsA1KqVidmsiI11pnz5nOs/f+ihdI4dc2PEiAq0apVKly63Nkt06lSdPn2uMnZs7C3fnz+/BHPnBpCVpd9dlC595wnJ8rrt+fMutwTBoUNutGyZiouL4uuvSzJ6dBzlyuXc9nfvx4ULzpQqlXO9eeWnn3wZN+72wQFQpkwOMTHOVKx49xpOnXJh5crb97xxcVGMGHEJAGdn8Pe3kJxsYvVqX+bOPX19u5vPhaOdB8j7uRDGkzAoxJSCevUy2LLl+B23cXPTb/ycnMDV9cZNoJOTIjdX+9t217a9+WcAVapkc+TIYTZt8mbDBh9ee60c+/cfxd9ffyNq1y6Fn3/24V//isfbW7/S37bNkylTSrJ9eyQlS+aycqUv77xT5rZ15mfbzMxba7t2t7RqlS8dOiTj62ulbduUO54T0N+Ily3zv/719u1eTJxYCgCTSfHCC/E4//kYoVWrVAYPDr4edJGRbtSunfm3fV7j52fhwgWXe74BVqmSzcsvx991m2usVvjww9LMmBF9/fzCrefifs4DgMUCkycHYbH8/flNaGgGXbroFxD5PQ+Q93MhjCdhUIg1a5ZGVJQbmzZ5X3/R79/vTmhoJi4utm39O3/eGX9/Cz16JNGpUzLLl/tx7pwL/v4ZALz55kWmTw+kQ4fq/PTTCfz9LVy5YsbHx0JAQC7Z2RrTppW8ZZ/e3haSkpzw8rLec9ub/bXJ4cABd7y8LKxf70Pv3lewWOCXX7zv+kZYpUo2r74ad/3r1FTTLV//1ZkzLtSqlfnnw9FMtLs8905JMeHjY7nzBn86edLljn3yb74zAP2ZxosvxhMYaGHpUj/69LkK3Hou7uc8XNvHqFF5C6X8nAfI+7kQxpMwKETat6+B2XzjTf7334+xatUJ/u//yjNqVHlycjQqVsxm+fKTNj/2H3+4M2ZMOZQCq1Vj0KDL1KuXccs2o0bF4+VlpW3bGqxdG0XnzknMmxdAzZq1KV8+h2bNUlm37kYXyNGj42jbtgbu7lZ+/jmKatWy7rjtzapVyyIuzkypUnoz0tq1Pri7WwkOzmLPHg/OnnWhb987t2Pfj9atU/juO39++MGf9u2T77ptfLwzlStn3XOfVavm7c7ghx/8eOWV8rzxRjkAunZNuh4GN58LRzsPkPdzIYwnD5Adxt0fIIsbNmzwJi7OmYEDE222z7s9QF6xwpe4OGeeeSaBHj2qsmDB6Vuaam5mscDTTwfz7bfRNqvtbuxxLu4kP+cB8nsu5AGy0aRrqSh02rdP4cABd2x5GTNy5KU7/qxEiVx8fCxMnhzEhAkxd30DXLTIn5Ej89bkYgv2OBd3kp/zAAV/LsSDkTsDhyF3BvkRH28mIsKbfv1s2wzyIC5ccGbzZu8CuUq/WdE4F3JnYDQJA4chYVDYpadreHjIywnu51xIGBhNmomEsBEJghvkXBQ+EgZCCCEkDIQQQkgYCCGEQMJACCEEEgZCCCGQMHAgZuD+Vv0SonDTkJlxjCfjDBxKNnDnKZ6FfaSmpvLoo4+yZcsWvLy8jC6nGDIDtl9wR+SPhIEo9pKTk/H19SUpKQkfn7ytqyxEUSPNREIIISQMhBBCSBgIIYRAwkAIIQQSBkIIIZAwEEIIgYSBEEIIJAyEEEIgYSCEEAIJAyGEEEgYCCGEQMJACCEEEgZCCCGQMBBCCIGEgRBCCCQMhBBCIGEghBACCQNRzE2YAG3b6v+dlGRsLUIYScJAFFvz58Mbb8CePfrXr71mbD1CGEnCQBRbhw/f+vWxY8bUIYQjkDAQxVaXLuDkdOPrTp2Mq0UIo2lKKWV0EUIYZcsWWLYsmUmTfElKSsLHx8fokoQwhISBKPaSk5Px9ZUwEMWbNBMJIYSQMBBCCCFhIES+XL4MQUEQHW2/Y/zxB5QvD2lp9juGEH8lYSBEPkyYAN27Q3Cw/vXZs/rXnp4QGAgvvgjZ2Xffx/vvQ7Nm4OEBfn5//3ndutC4MXz2mc3LF+KOJAyEyKOMDJg5E555Rv/aYoGuXfUr+G3bYOFCWLoURo+++36ys+GJJ+Cf/7zzNsOGwdSp+jGEKAhmowsQorD46Scwm6FpU/3rn3+GI0fg3DkoW1b/3iefwNCh+tX/nTomjR+vf549+87H6thRb5L65Zcb02UIYU9yZyBEHm3ZAg0b3vj6t9+gTp0bQQD6m3hW1o0pLu6Xiws89BBs3fpg+xEiryQMhMij6Ohb3/hjY6FUqVu38ffX38hjYx/8eOXK2fdBtRA3kzAQIo8yMsDN7dbvadrft1Pq9t/PL3d3SE9/8P0IkRcSBkLkUWAgXLly4+vSpf9+B3DlCuTk/P2O4X4kJkLJkg++HyHyQsJAiDwKC9MfGF/TtCkcOgQXL9743s8/g6srNGjw4Mc7dEg/phAFQcJAiDzq2FGf9vra3cFjj0FoKAwaBPv2wcaN8Oqr8Oyzd+5JBPrYhP379c8Wi/7f+/dDauqNbaKjISYG2re36z9JiOskDITIo7p19d5EixfrXzs5werV+nOE5s2hXz94/HGYOPHG70RH688PIiJufO+tt/Qr/v/8Rw+AsDD9Y/fuG9ssWKCHTaVKBfEvE0JmLRUiX7OWrlmjX/0fOgSmPFxKRURAr15w6pTe0ygvsrKgenU9EJo3z9vvCPGgZNCZEPnQpQtERelNOBUq3Hv7tWv1pTXzGgQAZ87AuHESBKJgyZ2BKPZkPQMh5JmBEEIIJAyEEEIgYSCEEAIJAyGEEEgYCCGEQMJACCEEEgZCCCGQMBBCCIGEgRBCCCQMhBBCIGEghBACCQMhhBBIGAghhEDCQAghBBIGQgghkDAQQgiBhIEQQggkDIQQQiBhIIQQAgkDIYQQSBgIIYRAwkAIIQQSBkIIIZAwEEIIgYSBEEIIJAyEEEIgYSCEEAIJAyGEEEgYCCGEQMJACCEEEgZCCCGQMBBCCIGEgRBCCCQMhBBCIGEghBACCQMhhBBIGAghhEDCQAghBBIGQgghkDAQQggBmI0uoKhRCnJyIDNT/+zion84O4NJoleIfLFYICMDcnP1/9Y0cHPTP+T1ZFsSBnlksUB0NBw/DpGRcO4cxMZCbKwiLk4RHw/p6RoZGWC1arfdh9ms8PODkiUVgYEQGKhRsqRGpUpQpcqNjxIl9D96IYqqjAw4cUJ/LZ09CxcuQEwMXLigiI9XJCdDcrJGauqdXwguLgoPDwgKUpQqBaVKaZQqpVG2LNSoASEhUK0auLsX4D+sENOUUsroIhxNTg7s3Qu7dsHu3bBnj5XjxzWys/U/TDc3KxUr5lCmTDalSuVQunQOQUG5eHpacXe34uZmxd1dYTYrcnL038vO1sjKMnH1qhOXLplJSNA/4uJcOHPGhcREp+vHDwhQ1KsH9epp1KsHTZpAaKhcCdlLcnIyvr6+JCUl4ePjY3Q5RYpScP487Nmjf+zdqzh8WHH2rIZS+uvJ09NKuXI5lC2bTbly2QQF5eLra8Hb24KPjwVPTytms8LJSd9fVpZGRoaJzEwTqakm4uOdiYszExfnTFycM+fOuXD1qv560jRFpUqKsDCNRo00GjWCRo3A19fIs+KYJAzQ/8D27YONG2HzZsXWrZCaquHiYqVevUwaNEijTp0MQkIyqVEjiwoVsm3+xnz1qhOnT7tw6pQrR4+6cfCgOwcPehAV5YrVquHrq3jkEWjWTKN5c2jeXL9VFg9OwsB2lIJjx2DzZoiIUGzZAnFx+pt+qVK5t7yWrr2eAgNzbXonrBRcvuxEZKQbx4+7ceSIG3v2eLJnjwfJyU6YTIpGjRTt25to3x6aNgVXV9sdv7AqtmGQmwtbt8IPP8Dy5VbOnTPh4WGlRYtU2rRJpk2bFMLCMnBxMfb0pKWZ2LXLg+3bva5/XLnihLu7olUr6NhRo2NHqFlTmpbul4TBg0lMhNWrYc0aRUSEIjbWhNmsaNw4jdatU2jcOI0GDdIpVy7H0L9RqxWiolzZutWLjRt92LDBh4QEMx4eik6doG9fja5dobj+CRS7MNi/H2bPhvnzFQkJGuXK5dCr1xV69bpKixaphr/534vVCocPu/Hzzz6sW+fLli1eZGWZqFbNSp8+Jnr31m+DJRjyTsIg/6KjYcUKWLFCv/q3WDQaNUqjXbtkWrdOpXnzVLy8rEaXeVdWKxw86M7atT4sW+bPrl2euLoquneH4cM1OnQAJ6d776eoKBZhkJUFCxfC5MmKvXs1goJyCQ+/TP/+iTRsmF6o2+LT0zU2b/Zm+XI/li/3JyHBTKVKikGDNIYM0R+gibuTMMibhARYtAjmzlXs2KE3o7Zrl0LPnlfp0eMqZcrkGl3iAzlzxoXvv/dj1qxADh92p0IFxdChGs8/D2XLGl2d/RXpMIiPh6++gqlTFfHxGp07J/HPf16iU6cknJ2Nrs72cnNh2zYvvvsugEWLAkhOdqJZM8WQIRr9+oGfn9EVOiYJgzvLyYFVq+DbbxVr1ujt8Z06JRMefpmuXZPw9nbsq//7oRTs3OnBzJmBLFhQgqwsjYEDYfRojTp1jK7OfopkGFy6BB9/DF9+qdA0xdChCbzwQjwhIVlGl1ZgMjI0li/349tvS7B+vQ8uLtC/P7z0kkZYmNHVORYJg7+Lj4fp0/ULqZgYjQYN0hk8OIEnn7xCUFDhvgPIj6tXnZg+PZBJk0oRE+NMjx6K998vmqFQpMIgJQU+/BAmTVKYTFZeeimeUaPiCAiwGF2aoS5ccGbOnAC++iqIc+dcePRRxUsvafTsWbzaRO9EwuCGnTvhiy8UixeDyaQYODCRkSPjCQvLMLo0Q2VnayxY4M/48WWJjnZh0CAYP14jONjoymynSISB1Qrz5sHrryuSkhQvvRTHq6/GUaJE8Q6Bv8rNheXL/Zg0qRTbtnlRqZLixRc1nnsOPD2Nrs44xT0MrFb9YfBHH+nPAipXzmbEiHiefjqh2F9I/VV2tsb06YG8+24ZEhPNjBypMX580eiBVOjDYN8+GDFC8fvvGv37J/Lf/56nYsUco8tyeHv3ujNpUim++y4APz949VWNkSPBy8voygpecQ0Di0XvWPHee4pjxzRatUph9Og4unRJkjvGe0hNNfH550FMmFAGPz+NSZM0+vQp3L34Cm0/mpwcGD8eGjdWpKVlEhERycKFpyUI8ujhhzP49ttoTpw4RN++Cbz5piI4WPHBB5CcbHR1wp6UgqVLoV49K+HhUK1aMtu3HyMi4jjdu0sQ5IWXl5V//zuWI0cO06BBEk88Ad27K86fN7qy+1cow+DwYWja1Mq77yreeOMiu3cfpVWrVKPLKpQqVcpm6tSznDz5B/37X2L8eCvBwYqPP9bnjxFFh1KwZg00aKDo2xfKlUtlx46jrFp1gqZN04wur1CqVCmbFStO8sMPJ9i3L5e6dRULFhhd1f0pVGGgFEyZAg8/rEhPz+b3348xfvxFhx8oVhhUqJDDl1+e49SpQzz55CXGjlWEhChmz9abE0Th9ttv0KKFomtX8PRMIyIikp9/jqJx43SjSyv0NA0efzyJP/44TMeOVxgwAIYMUaQXslNbaMIgPV0/wS+8AM8/H8/evUdo2LCQne1CoFy5HL766hxHjhymSZOrDBsGjRopfv3V6MrE/Th3DgYMUDRrBunpmaxdG8WWLZFyJ20HAQEWFi48zZw5p1myRNGsmeLUKaOryrtCEQanT0Pz5orvv1fMn3+KSZPO4+YmdwP2VKNGFkuWnGL79mM4OWXQogUMHKiIiTG6MpEX6enw9tsQEqLYtCmXmTOj2b37CB07Jhfqh5yFwaBBifz++zFSU7Np0EAfrFcYOHwYbN8ODRsqkpP1ZqEBA64YXVKx0rRpGjt2HGXGjGjWr7cQEqKYMAGys42uTNzJ2rVQp45iwgTFSy/FEhV1iKefviwPhgtQvXoZ7N59lBYtkunWTfHFF0ZXdG8OHQYrV0K7doo6dVLZteso9erJE00jmEwwfPhljh8/xD/+Ec+bbyoefljx++9GVyZudvEiPPmkonNnqFIllUOHDjNhwoUiOWVEYeDnZ2HFihO88kocL74I48bpzz0dlcOGwezZ0KuXomvXq6xbFyWDXxyAn5+FTz89z549R3Fzy6BZM8VLL0GqND8bymqF//0PatVSbNpkYd6806xff5zq1YvP9CuOymSCiRNjmDjxHB98AMOHK3IddDYPhwyDWbPg6acVzzyTwKJFp+T5gIN56KEMfv/9KBMnnmf6dCu1ayt++snoqoqnkyehVSvFP/8JTzyRwLFjhxg4MFGeCziY0aPjmTv3NHPmwLBhyiF76DlcGMyapafnc88lMHXqWWnndFBmM7zySjyHDh0mJCSFLl30P3IZsFYwlIKpU6FePcWFC9lEREQyffpZuYN2YOHhiXz33Wm++w6ee05hdbDWO4cKgxUr9CD4xz8S+PLLs4V6nYHiokqVbNati2LmzGi+/95K/fqK7duNrqpoO38eOnVSjBgBgwcncODAEekqWkj063eFb7+N5ptv4IUXHOsZgsO83e7cCU89pejT5ypffSVBUJhoGjz99GX27z9C6dJptGypeOstfcoQYTtK6RMy1qmjOHQol7Vro5g69azDrygmbhUensj06Wf46iv44AOjq7nBId5yT52Cbt0UYWFpzJlzWoKgkKpaNZstWyJ5++0LfPCBokULRVSU0VUVDSkpEB6uGDQIunVL5NChw3TsKG1yhdXw4ZcZP/4C//43LF5sdDU6w2ctvXoVHnlEYbVms337UQIDpc2zKNixw4Pw8CpcuODCpEkaw4c77oyOjj5r6d690L+/IjbWyrRpZ2SsTRGhFISHB7NsWQARERpNmhhbj6HX4FYrDB6siI+3smZNlARBEdKkSTr79h1hwIAEnn1Wn0okTeZCyxel4IsvoGlThY9PBvv2HZUgKEI0DWbOPENYWBq9eysuXTK2HkPD4OOPYdUqjblzT1GtmvSJLmq8vKxMn36WefNOs2yZonFjK0eOGF1V4ZCcDH36KF58EUaMiGf79mPyGimC3NwUS5acIjvbwpAhxvYwMiwM9u6Ff/9b8frrsXTtKm2fRdnAgYns2nUUTcuiUSPF/PlGV+TYjhzRJwfctMnKihUn+Oyz87i6OlC3E2FT5crlMGfOaX76SePTT42rw5AwyMjQH4bVqZPBO+9cMKIEUcBq1cpkx45j9O2bSHg4jBqFw47ENNLSpdCkicLFJZPdu4/So0eS0SWJAtC5czKvvRbL2LGKgweNqcGQMBg3Dk6dUsybd1rWIihGPD2tzJ4dzRdfnOWLLxQdOyoSEoyuyjHk5sLrr0PfvtC16xV++02ahYqbd965QEhIJk8/bcyUFQUeBnv3wqRJivfeu0Dt2pkFfXhhME2Df/3rEhs2HOfgQQuNGlk5cMDoqoyVmAidOys++UTxySfnWLDgtIwdKIZcXRUzZ0azbx+GNBcVaNdSq1VflyA1NZO9e4/g7FxQRxaO6MwZF3r1qkpkpDuzZmn062dMHUZ2LT1+XB9jk5hoYcmSk7RpIyOJi7vRo8vz1VdBREZqVKxYcMct0DuD2bPh9981vvzyrASBoFKlbLZtO0bPnlfo319fjMWRhufb26ZN+vMBszmLnTuPShAIAN5++wK+vrmMHVuwL4YCC4PUVBg7VjFw4GUefVT+6IXOw0Mxf/5p3n8/hvHj9XEnWcWgqXzGDOjYUdGoUQrbtx+jShVZLUjovL2tvPdeDN99p7FjR8Edt8DCYPJkuHpV8f770ntI3ErT4I03Ylm48BRLlig6dFBcvmx0VfZhscCrr8Kzz8Kzz15izZoo/PxksKW41bBhl6lXL4PRo1WB3S0XSBhcuQIff6xPS12pklwBidvr3/8KmzYd5+hRC02bWjlxwuiKbCs1VV+w6bPPFJMnn+XLL89hNhtdlXBETk7w0Ufn+fVXjY0bC+aYBRIGU6ZAVpbijTcuFsThRCHWrFkav/9+FJMpm0ceUWzbZnRFthEXB61bKzZvVqxadYIXXrjksHM1CcfQsWMyDRqk8957BXNrYPcwyMyEKVMUQ4cmULq0jDIS91a1aja//XaMunVTaddOsXSp0RU9mJMn9V50MTG5bN16jC5dZMS9uDdNg3HjLvLLLxq//mr/49k9DBYsgPh4jZdfjrf3oUQR4u9vYd26KHr3vsITTyimTTO6ovuzZw80a6Zwcspm+/Zj1K+fYXRJohDp2fMqtWpl8umn9r87sGsYKAWffabo1i2JGjWKQRcRYVMuLnpPo3/96xLPPw/vvFO4up7+/LO+PnHlyun8+utRKleW52Uif0wmGDkynhUrICbGzsey58537oQ//tB44YU4ex5GFGEmE0yadI733ovhP/+BF15wzMXE/2rePOjaVdGqVTIbNx4v8OnZL192IiioHtHRLgV6XHv54w83ypevS1pa8Vv5Kjz88p+jk+17HLue2blzoWzZHNq1S7HnYUQRp7edxvL112eYOhUGDHDssQiffgqDBsHgwZdZseIEnp4FP7XEhAml6d49ieBg/W7kpZfK06BBTVxdw6hfv9Ydfy8iwosyZer97Q5swoTSaFoDXn65/F2Pe/iwG336VCE4uA6a1oDPPw+647ZDh1ZizJhyABw/7krPnlUJDHwIH5/6NG8ewubNXte3rVs3k8aN0/jsszvvr6jy9bUyYMBlvvnGvt1M7RYG2dmwYIEiPPwyTk72OoooTp59NoGlS0+yYoWia1dFioNdYyilj6IePRrGjr3IjBlnDOk6mpGhMXNmIM88c2MWQKU0nn76Mv37331xnJUr/ejR4+otPZ127fLg668DqVcv/Z7HTk83UaVKFh9+GEPp0ndeBNtqhdWrfenZ8yoAXbtWIzdXY9Om4+zZc5T69dPp1q0asbE3TuCwYZeZOrVkobgztLWBAxM5c0Zj5077HcNuYbB2LSQmagwaVERHDwlDPP54EuvWRbFrl5W2bR1ncJpS+mCy8eNhwoTzfPDBBcO6jv70ky9ms6Jp0xtLy02efI6RIy9Rpcrdb6lWrvSlR4+r179OTTUxcGBlpk8/g7//vd+FGzVK5+OPY3jyySu4ut75jujXX70wmaBJkzQSEpw4ccKNMWNiqVcvg+rV9TBJT3fi8GH367/TsWMyly+b+eUX73vWUdS0bJlKqVI5dl0v2W5hsHw5hIZmUqeOzEwqbKtVq1R++SWS6GgLrVsrYmONrcdigeeeU3z6KUyZcpYxY+79jCwzE77+Gt59F3bvtm09W7Z40bDhva/i/+rwYTdiY51vadYdObIiXbsm0b69bW/DVq70pXv3JEwmKFHCQq1aGcyZE0BamoncXJg2rSSlSuXQoMGNf4eLi+KhhzLYutXrLnsumpycoG/fKyxZYrXbamh2CQOl4KefrHTpcvXeGwtxH+rXz2DLlkguX86lVSvFuXPG1JGTA4MG6Q/3Zs8+zciReVvI9t3JlP91AAAcHklEQVR3Ydo0/aJp5EiIjLRdTdHRrpQte+cmmjtZscKPjh2TcXPTG6YXLvRn714PJkywfTeWlSv9rjcRaRqsXx/Fvn0eeHvXx83tYT77LIi1a/8+VUe5ctlF5qF4fvXte4Vz50zs3Wuf/dslDPbvh9hYE126yCpNwn5q1cpk69ZjZGXl0LKl4uTJgj1+Zib07av4/ntYvPgUQ4Yk5vl3b74byM3Fpms6ZGRouLnl//JxxQq/601E584589JLFZg37/T1cLCVo0fdOH/emfbt9cF3SsGIERUJCspl69ZIdu48Ss+eV+nWrRoXL9760MXd3Up6evHrUQT66HxPT6vdpqewy1ldu1ZfDL1587R7byzEA6haNZutW4/h4pLNo48qjh4tmOOmpurrEPz8s2LlyhP06ZO/u+DQ0Bv/bTJBzZq2qy0wMJcrV/L35Do21szevR507apfwO3Z40F8vDMNGtTCbH4Ys/lhfvnFm8mTgzCbH36gh7grV/rSoUMK7u56yGza5M2PP/qycOEpmjdP4+GHM/jqq3O4u1v59tsSt/xuYqKZkiWL50wGLi6KRx9NYeNG+3QpsksY/PqrolmzVFnSUhSIChVy2LLlGAEBmbRqpey+ctrVq/r00zt3Wlm3LopOnfI/vcQ77+hLXLZsCRMmQL16tqsvLCyDI0fc8vU7K1f60bRp6vXxEO3apfDHH4fZv//I9Y+GDdMYODCR/fuPPFAPwZvvQIDrV/qmv7wbmUxgtd76FP7QIXfCwvL/PKSoaNcumW3bsEvXapt3fFMKfvsNXnxR1iwQBad06VwiIiLp2LEGrVu7s3atRpMmtj9OYiJ06KA4fdrKxo3HadTo/t6YvL1h7FgbF/enjh2TGDu2HFeuOF3vAXTihCupqSZiY53JyDCxf7/eSyc0NBMXF8XKlTe6eer1Wf/W+cPT00qJErl37RSSna1dD6LsbI2YGGf273fHy8tKtWpZxMeb2bXLk+XLb7TpNW2air+/hSFDgnnrrYu4u1uZPj2Q06ddrt+pAERHuxAT42zzh9mFScuWqWRkaBw8CI0a2XbfNr8ziIrSu5Q2bSphIApWiRIWNm6MpHbtNDp0UDaf3OvyZWjXTnH2rIWIiMj7DgJ7q1s3k4YN01i82P/69555phJhYaFMm1aS48fdCAsLJSwslAsXnElLM7Fxow89euT/Gd/QoZVo3brG9a8vXHC+vu+LF12YOLE0YWGhPPNMJQBWrfKlSZM0goJuNPUEBlpYuzaK1FQTbdvWoGHDWmzb5sWKFSd56KEbczktWBDAY48lF+tp8OvWzcDJSbFvn+33bfM7gz/+0D+HhcmEXKLg+fpaWbs2iu7dq9GxoxerV2u0avXg+01IgPbtFRcuWNi8OdLhu0y/+eZFXn21PM8+m4DJBBERx++47bJlflSunEX16ndve7jdPqKjXWnd+saVenBwNkrtueM+/tpEdE3DhumsW3fnBSyysjSmTi3JggWn7lpjUefurqhVK5O9e93vvXE+2fzO4PBh/QFWcX3II4zn5WVl9eooHnkklc6dFZs2Pdj+Ll2Ctm0VFy8WjiAA6NIlmeeeSyAm5t6LjXt5Wfjoo/x3H01JMXHypCuvvpr3ucdatEjlqafy3uvqmjNnXBg37qJ0SgHCwtLZv9/2z2M1pWw728WTT0JsbMpdr0SEKAgZGRq9elXll198WLFC47HHbr9dcnIyvr6+JCUl4ePjc8vP4uOhbVsrCQkWNm8+Tq1ajh8Eomh7//3SfP55WS5dsu0Qd5vfGZw6pT8oEsJo7u6K5ctP0q5dMj16KNasyd/vx8VBmzZWEhP1ZwQSBMIRBAdnk5CgkWrjx7I2D4OYGH2UoBCOwM1NsXTpSTp2TKJXL8WqVXn7vYsX9WUqr17Vg6BmTbnAEY4hOFj/W4yOtu1+bRoGubkQG6tRvnz+h8ILYS+uroolS07RrdtVevdW/PDD3be/cEEPgpQUvbuqLMwkHMm1acnPnLHtfm0aBpcu6YNE7jZ1rRBGcHFRLFx4il69rvLEE4olS26/XUyMHgTp6TlERETes4eNEAUtMFDvnGPrGXttGgZpfz7o9/YuhhOOC4fn7AzffXeK/v2v8NRTigULbv25HgRWsrJy+OWXSHn2JRySq6vC3d1KYv47Zd2VTccZpP85BsfDo+BXdhIiL8xmmDPnNGazIjw8AItFo0cP/WdduiiU0puGZL1i4ch8fKwkJ9v2ka9dwsDdXcJAOC4nJ/jmm2jMZsXgwSX4z3/071utOfzyy9nrbbJCOCpXVys5Nm6Nv68wUEqRcps1B7ds0T/HxWVQqZJjDtUX4ppPPjlCampF3n5bfxksWnSAgABnkvM/75wQBerSpTQ2b86869+qt7c3Wj6W27uvQWfXBukIIYRwTLcbRHk39xUGd7oz2LsX2rSBLVuO3TLBlBCO5swZF7p1q46mOTN3bgqPPloBJ6ezzJ2bQNeucmsgHFutWnUYNMiZN9648zb5vTO4r2YiTdNumzilSumfTSYffHweYMJzIewoOtqF7t1DMJud2bxZw89Pf8F06+bD4MHlWbxY74IqhKPKyfHFx8dMPi7878mmj6M9PPTPaWnFc1k64fhOnXKhVSs9CCIiNCpWvPGzmTM1eveGfv2qsGyZn3FFCnEXSvHnWhW23a9N37W9vPTPKSlyVyAcz8mTLrRuHYKLix4EFSrc+nNnZ5g/X6NvXz0Qvv9eAkE4nqQkJ3JzNQIDbbtfm4aBv78+0vPChXtPmytEQTpxwpXWrWvi5qYHQfnyt9/ObIa5czX69YMnn6zCkiUSCMKxJCTorfslS9p2vzYdZ2AyQfnyivPnXWy5WyEeSFSUK23ahODpaWbzZo2yZe++vT4wTcNkUjz1VBWs1tP073+lYIoV4h6urVFRurRt92vzlc4qVNA4d07CQDiG48f1IPD21oOgTJm8/Z7ZDN9+qwfCgAGVsVrhqackEITxTpxwRdMUlSvbdj0Dm4dB1aoaBw+62Xq3QuRbZKQeBL6+ehDk90rKyQlmzdLQNEV4eGWUggEDJBCEsU6ccKViRYWrq4OHQZ06sGCBGxaL/mISwgiHDrnRvn0NSpQws2mTdr3bc37pU1fodwiDBlXGatUID7fxDGFC5ENkpBvVqtk2CMBOYZCRYeL0aVeZ9VEYYt8+dzp0qEG5ck6sX68RFPRg+3Ny0rudmkwweHAwOTkaw4bZeP5gIfJozx5PnniiEIRBvXr653373CUMRIHbscODTp1qUK2aiXXrNAICbLNfkwmmTwdnZ42nnw4mPd3EyJGXbLNzIfIoPt7M2bMuNG5s+33bfHRYqVJQpYqVbdu8bL1rIe5q61Yv2revQWioiQ0bbBcE15hMMHUqjBoF//pXRf773/tsexLiPu3apY/sbdTI9vu2+Z0BQMuWJrZu9bbHroW4rQ0bvOnZsxpNmmisXKldHwBpa5oGn3yiD7B8/fXypKaaGD/+IvmYAkaI+/b7714EBiqCgwtBMxFAy5Ywd647SUkmfH1lbQNhX6tX+9CnT1XatNFYtkzD3d2+x9M0eOcd8PSEMWPKkpbmxMSJ5yUQhN1t2OBDmzbY5W/NLpMItWmjr4W8YYMNZ1ES4jaWLfOjV69qdOqksXy5/YPgZq+/Dl98AZ9+Wop//rMiVrnuEXZ05YoTO3d68Nhj9rnqsEsYVKkCtWtbWbVK1jwQ9jNvXgD9+lWhd29YskTD1bXga/jXv+Cbb2D69ECGDg0mN7fgaxDFw/r1PlitGh062Gf/dptetHt3E6tX+2Gx2OsIojibPLkkgwZVZvBgjfnzNZwNnA5r2DD47juNBQsCePLJKmRnS3uRsL3vv/fj4YcVlSrZZ/92C4NevfQJlTZvlgfJwnaUgrffLsNLL1Xk1Vdh5kzHGNzYvz8sXaqxapUfPXpUIzVVpnEXtpOWZuLHH/3o189+Fxp2+4tt1AhCQqzMnl3CXocQxYzVCi+9VIHx48syYQL897/2eZB2v3r0gDVrNLZv96Zt2xpcumSX/hmiGPrxR18yMkw88YT9jmG3MNA0GDrUxLJl/iQny1WSeDDZ2RpDhgQzZUpJ/vc/GDPGsYLgmnbt4JdfNM6e9aB585qcPi2TNooHN3NmIE2bKqpUsd8x7PouHR4OmZkaixfbeEkeUawkJ5vo1q0aixYFsGCBxnPPGV3R3YWFwfbtGlarC82a1eTAgQLs4iSKnKgoV9av9+H55+179WPXMChfHjp3hilTSqGUPY8kiqoLF5xp1SqEnTu9WbdOo39/oyvKmypV9EAoV86JRx8NYfNmGZEv7s+0aYEEBCj69bPvcezefjN6tMaBA+5s3CgPkkX+HDniRtOmNUlIcGPrVo02bYyuKH+CgmDzZhNNmpjo1Km6rJom8i0tzcSsWYEMHarhZueVAeweBm3aQP36iokTZR4XkXdbt3rRvHlNfH2d+e03E3XrGl3R/fH2hh9/1OjbV6N//ypMmWLjtQpFkTZtWiDJyU68+KL9j2X3MNA0ePVVjXXrfNm928PehxNFwJIlfrRvX52wMBNbt955veLCwsVFX1d51CiNF16oyKhR5WX8jbinzEyNiRNLEx6O3cYW3KxAuvn07w81ayrGjStXEIcThZRSMHFiKfr3r8ITT2isXavhW0QGsZtM+gR3X34JX3wRRM+e1UhJkV524s6+/jqQuDgzY8YUTLe5AvlrNJvh/fc1fv7Zh4gIeZAm/i4rS2P48Er83/+VZ8wYjTlzNFyKYK/MESNg9WqNrVt9aN68JmfOFMF/pHhgyckm3n23LEOHaoSEFMwxNaUKpp+PUtCkiUKpDH7//ahDjBoVjuHSJTO9e1dl1y5PZszQCA8v2OMnJyfj6+tLUlISPj4FM7nikSPQrZsiLc3CihUneOSRtAI5rigcxo4ty+eflyYqquCaSQvsPlXT4PPPNXbv9mDmzMCCOqxwcH/84UajRrWIivIkIqLgg8AooaGwY4dG9epOtG5dg4ULZSyO0B054sYnn5Tm9dcL9nlZgTZaNmsGw4Ypxo4tR0KC3BoUd6tW+dKsWS38/JzZuVPjkUeMrqhglSwJGzdqPPGExlNPVeGNN8rKg+ViTin45z8rEhysGDOmYI9d4E+wPvxQQyknXnyxYkEfWjgIiwXeeqsMPXpUo0MHjW3bNCoW0z8HV1eYM0fjo4/go49K07VrNRIT5UKpuJo9uwRbtngzdarJ7uMK/qrAwyAoCKZM0af7lUE4xc/ly0506VKd998vwwcfwPff22+JysJC0+C112DtWo1du3xo2DBUprAohs6edeaVVyowcKCiXbuCP36BPUC+mVLQr59i82YLhw4dpnRpWRGkONi924M+faqSnu7MggUa7dsbXZHOiAfId3L6NPTurYiMVHz99RnCwxMNrUcUDIsF2rQJITrakwMHNPwNeIRkSEdnTYOvvtIwm50YOLCKtJMWAzNmlKB58xBKl3Zm717HCQJHU7ky/PqrRr9+GoMGVWb48Eqkpzvg9KzCpiZMKM2vv3oyf74xQQAGhQHoD88WLtSIiPDirbfKGlWGsLPkZBPh4ZV59tlgnn7axJYtGhUqGF2VY/PwgNmzNWbNgoULS9CoUSiHDxdwA7IoMBERXrz9dlnGjdNo2dK4OgwdAtm6tT4Y7YMPyrB8eREZaiqu27HDg7CwUFau9GfePJg6FUPWKS6shg6FXbs0NM2FRo1q8c03JWT23yLm9GkX+vatSps28NZbxtZi+Hj4116DPn0UAwZUYccOmbuoKLBY9NveFi1qEhjowv79GgMHGl1V4RQaCjt3mhg4UGP48GAGDapMUpLhL1thAykpJnr0qIafnxOLFmmYDV4Yz/C/KpNJn8QrLEyje/fqnDwpw/MLs5gYZzp0qMG4cWX5v//Tu43ac3Wm4sDDA6ZP15g3D1au9KdevdoyrUshl5Wl0adPVc6ccWPlSo2AAKMrcoAwAHB3hxUrNPz8THTqVEMGpBVCSsG8eQHUqVObyEgvNmzQ+OADcHY2urKiY+BAOHhQIzjYmTZtQhg9ujyZmfJwubCxWGDQoMps2eLNihUaoaFGV6RziDAACAyEtWtNJCe70KFDCJcvSyAUFnFxZnr1qsqgQZXp0sXEwYMabdsaXVXRFBwMmzdrTJwIU6YE0aBBKLt2SfNqYXFthPGyZX4sWuRYCzY5TBiAvlTgxo0a58+70b59DQkEB6cULFjgT+3atdm+3ZelS2H+fI0SJYyurGgzmWD0aNizR8PV1ZVHHqnJqFHlSU11qJez+AuLBZ5/viLTp5dk5kyNnj2NruhWDvfXU6eOfuUTE+NO27YhXLgg7QyO6MQJVzp1qs6AAVVo29aJw4c1evc2uqripU4d2LlT46OPNKZNC6J27dqsXm3soDlxe7m5MGRIMDNmBDJrFgwZYnRFf+dwYQA3AiExUV8DV/pYO46sLI133y1NnTqhREZ6s2oVLF6sUVJWczSE2QyvvgqHD2vUquVMt27V6d+/MrGxBndNEdelppro06cqixYFsGCBxtChRld0ew4ZBgC1a8Nvv2n4+TnTvHlN6T3hADZv9uKhh0J5552yvPyyicOHNbp1M7oqAfrI5Z9+0pg/HzZv9qdWrTpMmxYoo/sNdu6cMy1a1GTTJl9WrNDo18/oiu7MYcMAoHx52LJFo2FDE489VoOpUwNl0I0BoqNdeOqpyrRtG0JgoCv79ml8+CF4ehpdmbiZpsGAAXD0qEavXk48/3wlHn44lE2bvI0urVjaudODxo1rcfWqG9u3a3TpYnRFd+fQYQDg6wtr1mj84x8aI0ZUIjw8WB6UFZCkJBNjxpSjZs3aRET48803ejjXqWN0ZeJuSpSAb76BHTvAy8uNdu1q8PjjVYmKkuHfBUEpff3iRx8NoXJlMzt3atSta3RV91Yo3lVdXGDKFFi4EFauDKBx41ocOSLPEewlJwemTg2kWrW6TJ5citdfNxEVpTFsmN6TRRQOjRvDtm0aCxfCvn2+1K5dm1deKU98vDxPsJerV50YMKAyzz1XiWHDTGzapBEUZHRVeVOoXtr9++tztZhMrjRoUIuPPy4lbaI2lJurL64RElKXkSMr0rWrE8ePa4wfT7Ffc6Cw0jT9dXPsmMZ//qMxc2YQlSvXZcwYWW3Q1n76yYc6dWqzerU/Cxboc3EV9AI1D6JQhQFAzZp6d7qRI/UmjGbNaspdwgOyWGD+/ABCQ+swbFgw9es7s3+/xuzZBbsGq7Afd3cYNw5On9YYNcrEl1+WonLlurz5ZlmuXJFQeBBXrzoxfHglunSpTu3aZg4d0njySaOryr9CFwagz9UycaI+73tysj4z5r//XVaeJeRTRobG118HEhpah/DwytSs6cKePbBsmUa9ekZXJ+whIADee08PhREjnPjkk9IEB+uhEBcnzUf5YbXCnDkBhIbW5vvvSzBjhr5aXWFdwtWQlc5sKTMTPvgAPv5YERCQy0cfnWfAgERp276LhAQnpk4tyRdflCIhwYneveH11zUaNTK6MmM40kpnBS0uDj76CL7+WpGbqxgy5DKvvBJHSEiW0aU5tO3bPXn55Qrs2uVJv36KiRML/zodhT4MromOhtdeUyxZovHQQxm8804M3bsnock8Xtft3+/O118HMnt2IKAxbJjGqFFQrZrRlRmrOIfBNYmJMG0aTJ6siI3V6Nw5ieeeu0TXrkmGT63sSA4edOfdd8vw/ff+hIUpJk0ydkEaWyoyYXDNtm3w5puKiAiNhg3TeeONi/TocRWnYtosmpxsYsGCAGbMKMnu3R6UKaN4/nmNESP0yQGFhMHNsrLgu+9g6lTFrl0aZcvmMHz4JZ55JoGKFXOMLs8w+/e78847ZfnhBz+CgxVvvaUxeDBF6n2lyIXBNZs3w9tvK7Zs0ahSJYuXX45j2LDLeHlZjS7N7qxW/Tb2m28CWbQogMxMfcDLs8/qn+VK71YSBre3bx98/TXMn69ITYXOnZMZPPgy3bol4elZ9F9HFgv8+KMvkyeXYtMmb6pWVYwbpxEeXjSnZi+yYXDNzp3w2WeKJUvA3V3Rr18iw4Yl0Lx5WpFqQrJaYc8eDxYv9mfRogDOnXMhOFgxfLg+PqBcOaMrdFwSBneXmqqP8ZkxQ7Fjh4aHh5UePa7y5JOJdOqUjKtr0XoLOX3ahblzSzB7diCnT7vwyCOKF1/UeOKJon0hVeTD4JqzZ2HWLJg920p0tIlq1bIYNOgyjz9+lbp1MwplMKSlmdiwwZsff/Rl9Wo/Ll50JihI0bevRv/+0KKFDBLLCwmDvDt1ChYtgoULrRw8aMLLy0q7dsl06ZJE585JVKhQOJuSLl40s2qVH/PnB7BlizdeXvrraMQIik3HimITBtdYrfDLL3ow/PCDIjVVIzg4m549r9C9exLNm6fi5uaYpyQnB/bs8WTzZm82b/ZmyxYvsrJMhIRY6dbNRLduegAU5asXe5AwuD9HjsCKFbBmjeK338Bi0ahTJ4POnZNo1SqFZs3S8Pd3zFGhVqv+MHjVKl9WrfJj1y5PTCZFu3YwZIjG448Xv7m3il0Y3CwrS3+2sHIlrFypiInRcHW18sgjabRqlULDhumEhaVTrlxOgd85KAUnT7qya5cHu3Z5smuXJ3v3epCebsLLS9GyJXTooM8aWr16wdZW1EgYPLgrV2D9elizBtat03skAdSunUmLFik0aZJGWFg6oaGZuLgU/FtOaqqJAwfc2bHDky1bvNm2zYvLl814eys6dYIePTQ6d6ZYL8xUrMPgZkrBwYMQEQEREYqtW+HyZf0POjAwl/r106lfP51q1bKoVCmb4GD9s7v7/Z++3FyIjXUmJsaZM2dciYx0JTLSjchIdyIjXUlJ0bsqVK5spVEjjUaN9G5sDRrI1b8tSRjYllJ6c9K2bfDrr/Drr1aOHtVQSsPZWRESkkWNGhnUqJFJjRpZVKuWRdmy2ZQunftAD6YzMzUuXTJz4YIzUVFuHD/uyvHjbhw44EFkpCtKabi5KR55BB59VKNVK/1O2sXFhv/4QkzC4A6UgvPn9R4V+ofiwAHFuXMaFsuN24QSJXLx97fg769/9vGx4OSkMJnAZFLX2+zT0kwkJzuRkuJEcrITV66YiY93wmq9eV+KmjUhJEQjJATq1YOGDaULqL1JGNhfaiocOKC/lo4ehePHFceP668npW68Bjw9rZQunUNQUC5eXhY8PKx4eFhxdbWSm6vd9AE5OdqfryNn4uPNJCff2s+zTBkr1atr1K2r8fDDEBamr5Mib/63J2GQT7m5EBOjD3KLjoYLF/Rb5GsfKSkKqxWs1mufNZTS2x99fDS8vcHHR5+au2xZ/aNcOahQoXjfohpJwsA4GRlw+jTExt74iIuD+HhIS4O0NEV6ut6k6+wMZrPCbNYwm8Fs1vDzg6AgKFVK/xwUBKVLQ9Wq4C3LOOSLhIEo9iQMhCikE9UJIYSwLQkDIYQQEgZCCCEkDIQQQiAPkIVAKUVKSgre3t5ohXFeEiFsQMJACCGENBMJIYSQMBBCCIGEgRBCCCQMhBBCIGEghBACCQMhhBBIGAghhEDCQAghBBIGQgghkDAQQggB/D8MXd9BixZsaQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "Graphics object consisting of 9 graphics primitives" + ] + }, + "execution_count": 198, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lem=plot(f,(x,-sqrt(2),sqrt(2)),fill='min',fillcolor='yellow', fillalpha=.2,figsize=[4,4],aspect_ratio=1,ticks=[[],[]])\n", + "lem+=plot(-f,(x,-sqrt(2),sqrt(2)),fill='max',fillcolor='yellow', fillalpha=.2)\n", + "pt=point((1/4,1/8))+point((0,1))\n", + "teksty=text(\"(1/4,1/8)\",(1/4+0.4,1/8))+text(\"(0,1)\",(+0.2,1-0.1))\n", + "teksty+=text(\"Lemniskata $(x^2+y^2)^2=2(x^2-y^2)$\", (0.0,1.3), background_color=(1,1,0.8),fontsize=8)\n", + "\n", + "lem+pt+teksty" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Obliczanie pola polega na wygenerowaniu zestawu próbek punktów, dla których sprawdzamy czy należą do wnętrza lemniskaty." + ] + }, + { + "cell_type": "code", + "execution_count": 199, + "metadata": {}, + "outputs": [], + "source": [ + "def PoleLemniskaty(proba):\n", + " traf=0\n", + " for _ in range(0,proba):\n", + " if CzyWewnatrzLemniskaty(LosowyPunkt()):\n", + " traf+=1\n", + " return traf/proba*(2*sqrt(2).n()) #skalujemy ze względu na rozmiar prostokąta A" + ] + }, + { + "cell_type": "code", + "execution_count": 223, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "Graphics object consisting of 1 graphics primitive" + ] + }, + "execution_count": 223, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list_plot([PoleLemniskaty(1000*k) for k in range(1,10)],figsize=[3,3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Przy wyborze niewielkiej liczby punktów próbkujących dokładność jest niezadowalająca. Jedną z przyczyn kłopotów z dobrym przybliżeniem jest też jakość próbek losowych pochodzących z funkcji `random`." + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.82842712474619" + ] + }, + "execution_count": 209, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "PoleLemniskaty(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 214, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2.00818325856980" + ] + }, + "execution_count": 214, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "PoleLemniskaty(500)" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.00224356160783" + ] + }, + "execution_count": 207, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "PoleLemniskaty(50000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "

Metoda numeryczna 2

\n", + "

Całkowanie z wykorzystaniem spacerów losowych

\n", + "\n", + "
\n", + "W ostatniej części postawimy sobie ambitniejsze zadanie. Zakładamy na początek, że mamy do dyspozycji tylko prosty generator bitowy `genbit` (który zwraca wartości $0$ i $1$ z prawdopodobieństwem bliskim $50\\%$).\n", + "\n", + "Skonstruujemy na bazie generatora bitowego zmienną losową `step`, która z prawdopodobieństwem $1/4$ zwraca wartość $-1$, z prawdopodobieństwem $1/2$ zwraca wartość $0$ i z prawdopodobieństwem $1/4$ zwraca wartość $1$.\n", + "\n", + "Zmienna $K$ może posłużyć do konstrukcji spaceru losowego po prostej, w którym połowę czasu spędzamy stojąc w miejscu.
\n" + ] + }, + { + "cell_type": "code", + "execution_count": 233, + "metadata": {}, + "outputs": [], + "source": [ + "def genbit():\n", + " return choice([0,1])" + ] + }, + { + "cell_type": "code", + "execution_count": 239, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Częstość zer = 0.501960000000000\n", + "Częstość jedynek = 0.498040000000000\n" + ] + } + ], + "source": [ + "proba=100000\n", + "probka=[genbit() for _ in range(0,proba)]\n", + "\n", + "print(\"Częstość zer = \"+str(probka.count(0)/proba*1.0))\n", + "print(\"Częstość jedynek = \"+str(probka.count(1)/proba*1.0))" + ] + }, + { + "cell_type": "code", + "execution_count": 240, + "metadata": {}, + "outputs": [], + "source": [ + "def step():\n", + " go=genbit()\n", + " if go==1:\n", + " left=genbit()\n", + " if left==1:\n", + " return -1\n", + " else:\n", + " return 1\n", + " else:\n", + " return 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zbadajmy numerycznie rozkłąd zmiennej losowej `step`" + ] + }, + { + "cell_type": "code", + "execution_count": 246, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "P(step=-1)=0.240000000000000\n", + "P(step=0)=0.508000000000000\n", + "P(step=1)=0.252000000000000\n", + "\n" + ] + } + ], + "source": [ + "proba=1000\n", + "li=[step() for i in range(0,proba)]\n", + "le=li.count(-1)\n", + "st=li.count(0)\n", + "ri=li.count(1)\n", + "ll=len(li)\n", + "print(''.join([\"P(step={})={}\\n\".format(x[0],x[1]*1.0/ll) for x in [(-1,le),(0,st),(1,ri)]]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dla ustalonej pozycji początkowej $\\{-1,0,1\\}$ konstruujemy dodatkową funkcję, która zwróci nam losową pozycję (stan) po zastosowaniu zmiennej `step`." + ] + }, + { + "cell_type": "code", + "execution_count": 247, + "metadata": {}, + "outputs": [], + "source": [ + "states=[-1,0,1]\n", + "def RandomStep(init):\n", + " s=step()\n", + " if s==0:\n", + " return init\n", + " else:\n", + " return states[(init+s+1)%3]" + ] + }, + { + "cell_type": "code", + "execution_count": 248, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "P(step=-1)=0.253000000000000\n", + "P(step=0)=0.255000000000000\n", + "P(step=1)=0.492000000000000\n", + "\n" + ] + } + ], + "source": [ + "proba=1000\n", + "li=[RandomStep(1) for i in range(0,proba)]\n", + "le=li.count(-1)\n", + "st=li.count(0)\n", + "ri=li.count(1)\n", + "ll=len(li)\n", + "print(''.join([\"P(step={})={}\\n\".format(x[0],x[1]*1.0/ll) for x in [(-1,le),(0,st),(1,ri)]]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Teraz naszym celem jest skonstruowanie zmiennej losowej, która przyjmuje jeden ze stanów $\\{-1,0,1\\}$ z prawdopodobieństwem $1/3$. Nie możemy bezpośrednio do tego celu wykorzystać naszej poprzedniej zmiennej, ale korzystając z niej możemy skonstruować łańcuch Markowa, który będzie miał tę cechę, że jego rozkład graniczny będzie jednostajny.
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nasz łańcuch Markowa jest aperiodyczny i nierozkładalny, zatem posiada jedyny stan stacjonarny, do którego zbiega każdy stan początkowy. Stan stacjonarny odpowiada wektorowi własnemu (znormalizowanemu) podporządkowanemu wartości własnej $1$." + ] + }, + { + "cell_type": "code", + "execution_count": 250, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 1/4, 1/4]" + ] + }, + "execution_count": 250, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m=matrix([[1/2,1/4,1/4],[1/4,1/2,1/4],[1/4,1/4,1/2]])\n", + "m.eigenvalues()" + ] + }, + { + "cell_type": "code", + "execution_count": 254, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "Looped digraph on 3 vertices" + ] + }, + "execution_count": 254, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#graf łańcucha Markowa\n", + "g = DiGraph({-1: [-1,0,1], 0: [-1,0,1],1: [-1,0,1]}); g" + ] + }, + { + "cell_type": "code", + "execution_count": 266, + "metadata": {}, + "outputs": [], + "source": [ + "pi_vec=m.eigenvectors_right()[0][1][0]*1/3" + ] + }, + { + "cell_type": "code", + "execution_count": 267, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 267, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m*pi_vec==pi_vec" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Tempo zbieżności do rozkładu stacjonarnego jest dość duże w tym przypadku" + ] + }, + { + "cell_type": "code", + "execution_count": 269, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.333333969116211 0.333333015441895 0.333333015441895]\n", + "[0.333333015441895 0.333333969116211 0.333333015441895]\n", + "[0.333333015441895 0.333333015441895 0.333333969116211]" + ] + }, + "execution_count": 269, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m^10*1.0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Poniżej konstruujemy funkcję, która przy zadanym stanie początkowym i odpowiednim czasie mieszania `mixing` generuje wartości zgodne z łańcuchem Markowa opisanym powyżej. Wykorzystanie `yield` pozwala nam utworzyć jeden proces, który będzie można wykorzystywać we wszystkich funkcjach.
" + ] + }, + { + "cell_type": "code", + "execution_count": 271, + "metadata": {}, + "outputs": [], + "source": [ + "def MarkovChain(seed,mixing):\n", + " state=seed\n", + " #mieszanie początkowe dochodzące do stanu jednostajnego rozkładu\n", + " for _ in range(0,mixing):\n", + " state=RandomStep(state)\n", + " while true:\n", + " state=RandomStep(state)\n", + " yield state" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sprawdzimy numerycznie własności naszego łańcucha Markowa" + ] + }, + { + "cell_type": "code", + "execution_count": 274, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.336800000000000, 0.330300000000000, 0.332900000000000]" + ] + }, + "execution_count": 274, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "m1=MarkovChain(-1,500) #start w stanie -1 i \"wygrzewanie\" łańcucha w 500 krokach startowych \n", + " #(aby zgubić początkowy rozkład)\n", + "le=0 #zliczanie wartości -1\n", + "st=0 #zliczanie wartości 0\n", + "ri=0 #zliczanie wartości 1\n", + "samp=50000 #rozmiar próby\n", + "for _ in range(0,samp):\n", + " v=next(m1)\n", + " if v==-1:\n", + " le+=1\n", + " else:\n", + " if v==0:\n", + " st+=1\n", + " else:\n", + " ri+=1\n", + "[x*1.0/samp for x in [le,st,ri]]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Na bazie łańcucha Markowa `MarkovChain` możemy utworzyć spacer losowy po grafie odwzorowującym punkty o współrzędnych całkowitych na płaszczyźnie. Taki spacer posłuży nam do generowania próbek losowych punktów na płaszczyźnie (po normalizacji).
" + ] + }, + { + "cell_type": "code", + "execution_count": 275, + "metadata": {}, + "outputs": [], + "source": [ + "def RandomWalk(point):\n", + " x,y=point\n", + " mx=MarkovChain(0,500)\n", + " my=MarkovChain(0,500)\n", + " lipt=[(x,y)]\n", + " while true:\n", + " x+=next(mx) #modyfikacja zmiennej x za pomocą łańcucha mx\n", + " y+=next(my) #modyfikacja zmiennej y za pomocą łańcucha my\n", + " yield (x,y) #dodanie kolejnego punktu w spacerze " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zobaczmy jak \"wędruje\" punkt po płaszczyźnie w spacerze losowym zadanym powyżej." + ] + }, + { + "cell_type": "code", + "execution_count": 286, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEKCAYAAADw2zkCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi40LCBodHRwOi8vbWF0cGxvdGxpYi5vcmcv7US4rQAAIABJREFUeJzsnXeYFEX6x7+7wC55leCyCKIiEgSRJIYTQZSgBAFPEAOeyhnQ01PUQxREwYA/MBx4xhMUFE5AFFBUBBQBFRAUFRBhkSVL2F3SJvb9/fFa29U91T3dPdMzs7v1eZ5+JnRNd01PT3+6wluVREQEjUaj0ZRrkuOdAY1Go9HEHy0DjUaj0WgZaDQajUbLQKPRaDTQMtBoNBoNtAw0Go1GAy0DjUaj0UDLQKPRaDTQMtBoNBoNtAw0Go1GAy0DjUaj0UDLQKMpExARcnNzoYca0/hFy0CjKQMcPnwYaWlpOHz4cLyzoimlaBloNAHz1VdfoXfv3qhfvz6SkpIwd+5c0/qbb74ZSUlJpuWCCy6IU2415RUtA40mYI4ePYrWrVtj0qRJtml69OiB3bt3lywff/xxDHOo0QAV450BjSbRIAI++QTo3BmoWjXy7fXs2RM9e/Z0TJOamop69eq53mZ+fj7y8/NLXufm5vrOn0YD6JKBRmOCCLj/fuCqq4DPP4/dfpcuXYpTTjkFZ599NoYOHYp9+/Y5pn/66aeRlpZWsjRs2DBGOdWUVbQMNJo/ESJ44QV+XVQUm/327NkT06dPx+LFizFhwgSsWrUKl112menO38qIESOQk5NTsmRlZcUms5oyi64m0mhgFsG4ccDIkbHb98CBA0uet2zZEu3bt0ejRo2wYMEC9O/fX/mZ1NRUpKamxiqLmnKALhloyj2yCCZPBu66K775ycjIQKNGjbB58+b4ZkRTrtAy0JRrEk0EAHDgwAFkZWUhIyMj3lnRlCN0NZGm3BIrERw5cgS//fZbyevMzEysW7cOtWrVQq1atfD4449jwIAByMjIwLZt2/DII4+gTp066NevXzAZ0mgUaBloyiWxLBGsXr0aXbp0KXl9//33AwCGDBmC//znP1i/fj3efvttZGdnIyMjA126dMHMmTNRo0aN4DKl0VjQMtCUO2JdNdS5c2fHMYM+/fTTYDOg0bhAtxloyhVEQEaGOxEUF0e2r++/By6/nPep0SQ6WgaacoMoEezdy69r1VKnq14dOOMM7l66a5e/fa1aBbRrB3zxhb/Pu2Xy5Mlo0aIFOnToEOyONGWeJNJj3mrKAXLV0IMPAs89x+/PmAFI3fxL2LqVh6OoXBlYuhSoX9/9vlatAs4/n59//jmXDoImNzcXaWlpyMnJQc2aNYPfoabMoUsGmjKPtY1g/Hhg0yZeN2gQMHNm6GfOPJMlkJfHUnBbQoiHCDSaaKBloCnT2DUWn3129IWgRaApzWgZaMos4XoNRVMIWgSa0o6WgaZM4rb7aDSEoEWgKQtoGWjKHF7jCCIRghaBpqygZaApU/gNKPMjhA8/1CLQlB1011JNmaJhQ2DHDmcRjBsH/PCDet2vv9qvsyMRRKC7lmoiRZcMNGWKHTv4cd48+zTffw+8/z6wciWQnW1eCgu977NFC395jQY66EwTLXTJQFOmaNMGWLeOn/fowXMZWzl+HLj6amDZMmDBAkCMIbdzJ9CggZFu1ixgwAD7fUUSmBZtdMlAEym6ZKApUyQnA0OH8vOFCwHVPPRVqgBz5wKXXMJzHS9ZYhbB2LHu9uU3ME2jSUS0DDRljooVjeoeN0K47DJDBJMmAcOGud+XFoKmrKBloCmTuBXCyy8brwcM8CYCgRaCpiygZaAps4QTws6dwFlnGa8//pirjPyghaAp7WgZaMo0dkKQ2wgmTQKOHTO3IfhBC0FTmtEy0JR5rEJo0ya0jUBuQ+jf3/++tBA0pRXdtVRTaujZky/mbmjfPvS9oiKj2ymgbiw+fhw45xwgMxN46ilgxAh/eY11t1PdtVQTKbpkoCk1XHKJ+7SrV/NMY/LSvLmxfvhwdWPxTz+xCACgd2//eY1VCUEHnWmihS4ZaEo9hYU8ntC8ecDs2Rxh/PjjPOzEI49wmtxcLln8/DPw2WfGmEIyQQw6F6sSgi4ZaCKlYrwzoNFEglUEvXsbd/QjR/Lj3XfHRwSAUULo3JmXeEcqazR26JKBptSiEoHMmDFcQgCAtLTYi0Am6BKCLhloIkW3GWhKJeFEAAD//KfxvEuX+IkA0L2MNImPloGm1OFGBKKNIC2NYwfmzuXeQTKxnphGC0GTyGgZaEoVXkQg2gjmz+fqopEjDSHEa4YyLQRNoqIbkDWlBj8iEBf80aP5ceRIYMMGYNo0fh2PiWl0o7ImEdENyFHi9deBv/+dL1gVbRQ7ezZwxx1AcbF6fUEBcOQIP69VK7L8JCXxIGzXXhvZdmLF9OnAvffytJUqjh3ju2mB3fHJz+fjb9dY3Ls3lxSAyESweDHn98UXedRTP2zdCrRty/EPK1f624ZANyBrIkWXDKLE7Nn8eOwYYPdf/PlnvqA9+mjouoICYNQo4/VDD0WWn6ee4v2VFtq25cfsbA4Iky/2x44BTzxhTn/zzcApp6i31asXRxFbWbXKEMFVV0Umgl69gJQUfpw/358QZswAcnKAPn385QPgoLPJkyfjxIkT/jei0QAAaaJC9+5EAFFOjn2aMWOIMjJC38/P588CRP36RSc/DRoQjRoVnW3Fih9+IKpdm6htW6IDB/i9o0eNYzN0KFG7dsbrvXvdb/u774zPAUTjx/vL4xdfEFWpwr/3oUP8WKUKv++FceM4H2PG+MuHlZycHAJAOU4noEbjgG5AjjMFBUBqKj/v1w+YMye++Ykn557Ld92//w5ccQWPLFqtGq8bOhR47TVjmAkASE8H9u0Lv11rY/FJJ/nLnygRdOrEvZNOOokfO3Xi9xcvdredp57itosxY8ylQY0mnmgZxBEtglCEEDZuNEYWFSIQeBFCtHoNWUVQuTK/X7myNyFoEWgSFS2DOKFFYM9ZZ3E7geCZZ0LTuBFC0CIQuBWCFoEmkdEyiANaBPYcO2ZUDV1wAVC7NlcZHTwYmtZJCLESgcBJCF999RWaNXv7z7GSRuHcc+eaPktEePzxx1G/fn1UqVIFnTt3xs+lqfVfUybQMogxhYVaBHbIIhg6lLtbym0IboUQaxEI7ITw3/+mY9OmmzBw4C8Angz53Pjx4zFx4kRMmjQJq1atQr169XDFFVfg8OHD/jKu0fhAdy2NISdOAPv38/NYiCA/n4OwIqFSJZ4FLFK2bjXHCVjJyzMu6q1aAbfcAnzzDb9+6ing9tu5lLB2LVCnjvmzc+fyZDZ797IQBG+9BTRrBuzYYU6fnc3vWd+XWb0aGDzYvQgEQghXX81CuO46YOrUpn9WDbXAzJnm9ESEF154ASNHjkT/P6dYmzp1KtLT0/Huu+/i9ttvd7djTUJQXAwkl9Zb7Hh3ZwoagOi224LdR3Ex0Ukn8b4OH7ZP16wZp2nfPtj8EBE1bmzuSul3qViR6NVX/eejuDg6+YjHUrs20fHj/r738eNGd2O5+ygA+uCDD0peb9myhQDQ999/b/p8nz596KabbrLdfl5eHuXk5JQsWVlZumtpnNmzh6hmTaI33oh3TvxRLkoGy5YFt20ibgzMzubXlSrZp503D2jShLtMbtoENG0aXL7mzOF9RMpnn/FdOcAR1l4gAu6/P/I8qGjbFmjc2Hi9cyewYgU/T01VB3L99BMPRQEAPXoANWqEplm8GDhwgJ9v3eq+RGClcmXgww+5JHPBBfbp9uzZAwBIl4s0f77+/fffbT/39NNPY8yYMf4ypwmEgwe5JH7bbfz61lvjmx/PxNtGQQMQNW0azLaLi4kefZT3ce65/JiX5/yZPXuIWrTg4LONG4PJVzQpLia65x7+bl5KCMXFRPfdx5+bPJlo+3bjjltsJzvbeE8VjGdlwADznftvv/H7O3YQNWlC1LAh0ZYt6s+uX09Uty7ReecR7d+vTiMHlPktEYQDlpLB8uXLCQDt2rXLlO62226j7t27225HlwwSj19+4fPyoov4sbSVELQMfCKLYPx4onfecScDorIvBKsIBLIQnnvOmwiIWAbduxvHGiD66qvSIwKi6FUTWdERyPFHyGDZMqI77yx9QtAy8IFVBETeZEBUdoVgJwKBLAQvIiAyZEBkFgJQOkRAFCqD4uJiqlevHj377LMl7+Xn51NaWhq98sorrrerZRB/hAy+/pr/B6VNCOWizSCaiDaCsWOB8eOBBx/0t530dK6fvuwynoVryZJg2xAiJSmJR+gE7NsQRBvBCy8AkycDd90Vuh3rIH5iWkqvdOkSum8rP/3Ex/fUU4FFi7g3khWv3Uf9cOTIEfz2228lrzMzM7Fu3TrUqlULp512Gu677z489dRTaNKkCZo0aYKnnnoKVatWxeDBg6OfGU1MSEri/wBQitoQ4m2joIlmyUBVIhB4LRkIykoJIVyJgMjcRiAvbtsiRMlAbiN44onQNgSixCoRLFmyhACELEOGDCEiLh2MHj2a6tWrR6mpqdSpUydav369p33okkH8kUsGgtJUQtAycImTCIj8y4Co9AvBqwhE1ZCqUdmJAQP44m5tI5CrjH77LbFEECu0DOKPSgZEpUcIuprIBdGqGrIjXlVGf/zBAVxJSd4+Z60yEtVGHTsCVasCU6aY0x87Bgwbxs8zMoypHhs2BLZvB047jbexbx9X2dixYgWwezc/f+wx4KuveAGArl2BL77gcY0E770HZGXxIrN8OXD33XzcH3+cB8WzkpPDVUdej42m7LJzJ/9n7BDdlq2UmiqjeNsoaMQdY36+v8+HKxEIPviA08yc6W8/RLEtIcyezQFl119PVFTkbxsnTngP5FJhbVROlKVVK/6OpQFdMgiW998nqlDB3XnTowdfN6wUF/OcHMnJPBdGolFuSgaDBvHMUikp7j/jpUTQqxcPXzB4MIejX3ON9zzGqoQwZw4wcCBw4YV8TIiAt98GKlRwvw0i4IEHjNcjRxpDTgsKC4F//MN4nZICfPwxcOWV5nQNGxpTSK5aZb/PHj04IOw//7FPs3Urj2N08smh6xYvBh5+mGdI+/BD9fSk06dzAzgArF/P05S+8kriDjGgZzoLnlmz+Ppx7bXOQZSZmZxm4UKec3vMGHPJMimJhyl5/XXg+HH/82oERrxtFDSpqWzqlBSeRcxtCcFtiUCmsJBo8GC+g3j/ff95DrKEIEoEAwdyfsUdz+DB7ksIchtBnz78mJVlTlNQQNS/P1GlSkQ9e3Kaq6/m32HBgtBtPvgg0dlnO+9X7lrqFTdtBO+8w3dt/ftzfvv1I0pK4ru5RC8h6JJBMMj/j8JC57SizaBvX3587LHQEsKCBbzOEmOYEJQLGfz730Tz57sXgh8RCBJZCFYRCLwIwdpYvHBhqAxkEXz0EdHLL/N+8/PthRCkDLyI4JZbeMpNgGjWLKIpU0qHELQMoo8XERCZG5DHj1cLQcsgjggZELkTQiQiECSiEOxEIHAjBFWvIasMrCIgMmRAZC+EoGTgVQQnTnB9rpABUekQgpZBdPEqAqLQ3kQqIWgZxBFZBkTOQoiGCASJJIRwIhA4CcGu+6gsA5UIiMwyIFILIQgZ+BEBUagMiBJfCFoG0cOPCIjUXUutQtAyiCNWGRCphRBNEQgSQQhuRSBQCcEpjkDIYOtWtQiIQmVAFCqEaMvArwiI1DIgSmwhaBlEB78iILKPM5CFMH++lkHcUMmAKFQI0RaBIJ5C8CoCgfUP4RRQJmRwySVqERCpZUBkFsI550RPBpGIgMheBkSJKwQtg8iJRARE9jIgMoTQrl3iyqDcdC21ctVV3MWyf3+eWevXX4MJKKtYEZg6lZ+L7q2x6HY6dy53Hx0wAJg2Td2N8ptvjAAwmeRkzuv06cC77/J7dmMNyduaPRvo3dv9d0pJAWbO5HzO/XNaYKfZ32bP5scbbrBP8+WXPINZ9+72Yw1NmwYMGQLcfDN387PrNjpnTmjQWY0aPEvd66/zUlioPraxZvv2eOegdDN7Np/zAwfy/zXav6m4rjz0UHS2d+AAz5oY1a7n8bZRkLzxBlt4xgz7NPPnE1WvzkMqB0msSwiNG3OXTrs7nBdfdB98NXy4/X7WrOHjpyoRCN5/n7djN+REfn70A8b8lAgEw4d725ffoL1oMGnSJDr99AGUlLSdANDKlbpk4IfTTye66ip/JQLB7t38/77hBvU5IZ/n27b5309WFtFZZ/FwK9GkzMpAiODOO9XRgDKRnABeiKUQGjQgGjVKvU6I4KGHuBulddm/n+imm9xXm4U7fsXFRHff7SwE8SdJTiZ6+211vi691Eg3YwbR5s2hS1oa0R13qPfhRgRjxxr7eO210Dzs25dYQli9mqdcbdeOq4lq184hj2PcaYj/S/L0pH6ZMYPPsRtvNJ8TokpUnC9+q4mECACi5s0jz69MmZSBFxHEmlgJwU4GsgjsQubDDTrnh3BCEH8S0YYwf35omgEDiC68kKhjR74Arl4dmqZtW/7drXgRwT//qW4zKCoy8nnZZfxely7xE4IQwQUXEG3fzjJo2TKH6tYlLQSPREsGRKFCkNvG7rrLvwyECBo14s4aWgZhSGQRCGIhBJUM4iUCeft2QhAXVPmPYxWCaEDOzrYXgkoGXkQwZoy6AVklAkE8hCCLIDvbaEDOzMyh1q1JC8Ej0ZQBkSGEQYOIevc2zme/XUtlEWRmEt1/v5aBI6VBBIKghWCVQbxFIO9HJQRxMSWyF4Lcm8hOCFYZeBUBUagMnEQgiKUQrCIgMvcm2r+ftBA8Em0ZEHF1pzgnRJuaHxlYRUCkZeBIaRKBIEghyDJIFBHI+7MKQZYBkVoI1q6lKiHIMvAjAiKzDNyIQBALIahEQBTatVQLwRvRloG1jUBUGXmVgUoERFoGtpRGEQiCEoKQQaKJQN6vLASrDIhChaCKM7AKQcjArwiIDBnMnOleBIIghWAnAiJ1nIEWgnuiKQPreSu3IXz0kXsZ2ImASMtASWkWgSAIIQB84UhEEcj7F0JQyYDI/MeqXFkddCYLASCqUcO/CIgMGXgVgSAIITiJgMg+6EwLwR3RkoFdFacQQu3a7mTgJAKiYGSQAOEy/pk6lWcOuvNODoryMyvViRM8Xnnv3jxLVzyQA9P++lce21+Mqa9i+XKgVi2geXPz+3Jg2u7dQHY2z1FQty4wcWLodh55BCgoANq14/HVJ0zwl/86dYCbbvI3Y9pLL/HzSZPUaayBaZ9+qs5nt27At9/y88OHgVtusQ8oGzcOePRRHm9+1KjQ9cXFxvPLLuMZ1Kzk5fEcEIcPh6676ioOCgT4tx0/PrL5EAoLgWefBZo147Hy09Lcf7Z2bc5/164cXDl3LtC3r/+8lFWIIt9GQQGfpx9/zAGLV11lrBs4kB8HDeLHV14Bata0z8urr/LvvnQpcPrpweRXsdHSS9++PATCunX+Pl9UxEU3gIdViDeFhcYd5cCB6jRiiIk/51JXsmeP+c62Zs3QpUaN8GncLFWqRNZvmohLCCIfbgLT7PIif5/vvlNvx6lEQMQliZtv5jRdu6rTHD/OAX3Jye7yAnBgnt9jXLMm0RVXqEsEkyZNoubNm9PZZ5+tLBkInnrKHKOhMZgwgY/LtGn+t+HUC04gzwNeubLz733uueoSARHRDz8Q1alD1KuX//yqKNUyOHCAqE0bPjA//ODts7IIAPWEK/HghhvshSBEAHA6JypV4nROgWkbNxLVq8dVS3v3+suvaj4DP7gJTHMzNpE4dqpup25EMHQojz00ZYo6jRBB5cpEn3+uTnPgALdd1KlD9MADsRnLyGlsItEmc801WghWhAhGjPBfzexWBBdcYB8f4xYhgrZt+TyLJqVaBkT+hCBEkJxM9PzziSWDm28mat8+VAjyoHMXXRReBg0aEN1+e/hI5UiFEC0ZEIUXghcZWHsZxUME4nyMxeB2djIQIrjnHj6+mzZpIQi0CMyUehkQeROCLIIZM7h6I9FkcPHFRHl5xp82JcU8+minTu5kMGqUu6ErIhFCNGVA5CwELzKQG5XFNJbxEIEgaCGoZGAVgUALQYtARZmQAZE7IVhFQJS4MiAyCwEwxgDyIgOiYIUQbRkQ2QvBiwyIzHW0ffuq08dCBIIghWCVgZ0IBOVZCFoEasqMDIichaASAVFiy2D2bLMMRJWRVxkQBSeEIGRApBaCVxnIg86p/pCxFIEgKCHIMggnAkF5FIIWgT1lSgZEaiHYiYAocWUgtxEcPWoWgh8ZEAUjhKBkQBQqBC8ykNsIVJHK8RCBIAghCBm88EKOKxEIypMQtAicKXMyIDILYe1aexEQJaYMatUKnaHMWmXkRwZE0RdCkDIgCg1McysDaxuBLITvvoufCATRFoKQAZDjWgSC8iAELYLwlOqgMztq1QIWLQIuvxxo355P83ffNQI/vHL0KAcoHT1qn2bLFuD773mWrZQUf/sRHDzIeZVnKEtN5UAnMXPXtGnOQSs7dgCrV4euczNjWtOmHOzSubOR5pRTnPNcVOTlG7rHGpj26afAsGHhP2cNKEtL48927w5ceCEHlr31Fs94ZiUvj2fAW7IEmDePzyMrBw8CV1zBM4x98QVw7rnevpfY79/+xo+vvBJZYNrMmfx4++3Aiy96CwA8+2xg0yb+3UVQlN//SiIycSLwwAPAiBEccKg6Nn378nLLLeptOAWUCQ4e5CA/gP977dqFpjl0CBg7ls8xO4iA998HTjsN+Pxzvp7FhNg4Jz4cOMBVC05DPLgpGezZYwx1IGYYkpdq1Yw7qyuv5DsIv7z9Nt8J200YI5cQrPk47zweekC+O1bNxyq+UzRKCNu2cUBVly5ER454/75ukUeAVH3v884zf+9hw9Tbyc7mEtf06er1QZcIrERaQhBBZ1WrfkIAKDvb/0xnZbGE4LZEIL73xImh69yWCNLSjO3s26dOJwaqO+cc+/P4vPN4f7EqEQjKtAzc4LaaaNUq9dgwv/5KVL++EQwGEPXrF5kQ/CKPNfTcczwzWPXqwQth2bJghfDOO3zB/Nvfwo819PDD4YVgR6xFIIhGlVHXrvZBZ14oS0LwUjUkR+3LQvBSNSQ+X7EiUcuWaiH4nc8gFmgZeGgzsApBiKBZM774Atzwm5ISeyGoBp07cqT0C8GLCEQbwZEj3oUQLxEIIhVCtGRAVDaE4KeNwCoEr20E77zDn33jDaL0dLUQtAwSGK8NyEIItWvzxa9ZM54IW5wIeXl84sRSCE6jj5ZmIfgRgcCLEOItAkEkQoimDIhKtxAiaSy2juvlpbH4l1+MqtkNG9RC0DJIYPz0JnrvPeNk2bSJ35NlQBQ7IbgZhro0CiESEQjcCCFRRCDwK4Roy4CodAohGr2GsrKM7203WKGq15AsAyK1ELQMEhivMhBVQ+JkEVVGVhkQBS8EL/MRlCYhREMEAichJIoIRo8e/We3ULHcRMAJT0IIQgZEpUsI0ew+KpcOrI3Kdt1HrTIgChWClkEC40UGchvB7t3mNoRJk0JlQBScEPxMTFMahBBNEQhUQkgUERCxDM455xzavXt3yfLSSzmeSghByYCodAghiDgCVaOyUxyBSgZEZiFMmaJlkLC4lYFVBAIhBHHSWGVAFH0hRDJDWSILIQgRCGQh3Hpr4oiAiGXQunXrkPe9VBkFKQOixBZCkAFlshBGj3YOKLOTAZEhBNENXcsgAREymDnTPs2BA2oRCFatMk6YrVvV2xBCuOmmyPIbjakqZSFs2KBOIwth/351mmgKwY0IXnnFnwgEshAAnvOhZ8/QpXt3I03QIiBiGVStWpUyMjLo9NNPp4EDB9KWLVuIyBDCww+bP5OXl0c5OTkly6WXHghUBkRmIaxdG9huPDF1KufnX/8KLrLY2qh8yinq8+aSS+xlQGQIIVFlEEHMY9nglFM4UnDYMODHH9VpkpOBSpU4ylYVadu+vREBeuaZQFZWaJqrrgL++U+OKPQLEXD//Twl5uTJwF13+dvOiRM8pV6FCkaEs5X0dGD6dJ4+8+ef1WlEpPLBgxypvG9faJq//AX45BNg1SqeWlQVxT1tGk+befPNwBtv2Efifv45cMkl6qkq3VCtGnDkCD+vXZvzU6VK6CLy2Lev98hiP3Ts2BFvv/02Pv30U7z++uvYs2cPLrroIhw4cABDhvCxsZ43Tz/9NNLS0kqWL79cEng+8/ON53bnTawR0f5OEb1OuIksTk8H9uzh52ecwee06rypWxe48UbgnHPU+2rWjP8v990XPqI/LsTbRomAm+GvMzN5cuqzzrIfh0fcuQJE27eHrh8zhu+0/RCtyetzcnhynLQ0+6khBeJO8MsvndNFUkJwUyIQuBmoLhpkZvL3vu664Pel4siRI5Senk4TJkwgIqI77+QqK5lYlwx+/NE4tz/6KJBd+GbyZM7Xffd5Kx24iSMoT5T7kgFgjGXUsCFPHK4qIZx+Olu9sJDvgnfsCE1z++08xgzA44qoSgh+iFaJIDcX6NmT7/Q//xzo0CE6+fNbQnBbIihvVKtWDa1atcLmzZtt06SmpqJmzZolS8UAb9XXrzdKSB99xL9fInHXXfy/eOEF/p8Qhf+MmxJBeUP//f4kUYWQ6CIQeBVC9epcpNYiCCU/Px8bNmxARkZGvLOS8CIQeBGCFoEa/ReUSDQhlBYRCNwK4frrjdcvvqhFMHz4cHz55ZfIzMzEt99+i2uuuQa5ubkYohpSNYaUFhEI3AhBi8Cecv43DCVRhFDaRCAIJ4Rp04DXXuNhk6tW5UZap6HBywM7duzAddddh6ZNm6J///5ISUnBN998g0aNGsUtT6VNBAInIWgRhCHejRaJShCNyrfd5q4BOR6NxSrcNiCrUDUqWxuLvcYhlJcGZCuqBmQr0YwzSOTGYrdYG5V1Y3F4tAwcCEII4fSbKCIgikwGRGYhTJig7jXkRQhaBvZESwZlQQQCIYRhw4j69tUiCIeWQRgOHOCJKOrUIcrNVacRQmjePHzAVDgZvPBCYoiAKHIZELEQZBGGW5y31D+wAAAgAElEQVSEECsZbN/OeQk3tWgsKC7mO9p27ZzTRUsGZUUEAvF/ArQIwqHbDMKwcSNPbdiiBddxqzj9dJ5mccMGbkdQIQJ2WrZ03t+6dcAFF5SeNoJwNG0KXHON+/R2gWmxpGFD4KKLgGefjW8+iICRI4G5c4Fbb1WnmTx5Mlq0aIGVK1dEZZ9XXcXTg5aWNgInCgq4/UqwaJG7bqfllnjbKJFZvpyoRg2iTp2IDh92TqsatVTw4ou87sEHwwfF3Hwz0cUX+8tvtEoEgmiUDIiIXn6Zt6MKTKtalddVrBi+yihWJYNEoLiYx9oBuIotHEGPTVTasLYR+A1MK08kSFB54rFiBdCjB9CmDbBgAfeL98NLLwH33gs8+CDfaXqZqNwLiVYisFKxIt+lde7MvYyWLOHQ/mPHeJ0oUX3yCX+P3r15Mvpq1eKZ6/ggSgRPPw1MmMC9YjTuceo1NGwYP06cGNx/sbSiq4kUaBEEg9ztND09VASAu7GMyjJaBJHhJAI/kcrlCV0ysKBFECxNmxqDfgHAzp2haYQQylsJQYsgMtzEEYi2OF1CCEWXDCS0CIJHvqjXqxfZaKdlCS2CyPASUKZLCGq0DP5EiyB4qlUzqoaIojP8dVlAiyAy/EQWayEoiHcLdiLgpdeQHaI3kdteQ3a46U0U7V5DdkS7N5HoNSTjZfhrgOgvf4ksL4mG115DdpTX3kSRRhbrXkYG5V4GR4/yRdVJBFu3Ep1+uv0UiURE99xjnkErJcX7kpRkDsCyS1ehQvAiICL64APOx/Ll9mmWLPEWVKbCGpim+s5ujotYJk0K5HAEwuzZ7r7XkCHO2ymvMhBdk90sdsdWrJ82Ld7fJr6U+wbknBxeHnrIvmpo1y5g2zajMfPyy0PTPPww8O9/8/NbbvE+Q1ZhIc+AJPP440Bamjp9167cGBsUixcDgwcD3bs7V0G1b8/HY/du+zTZ2dxQnJEBbNoUmu+mTbmYL2aLGzFCPROUaPR7/vnQdQcPcuDfSSdxtVNpoVMnHtDwxInQdUVFwLhxwIEDPKCfismTJ2Py5Mn4/feJwWY0QZkyBbj2Wn7esCFQs2ZoGjFTn+q8ESQnq//X5Yp42yjeiDmQFyywT/P115ymVatgJlEvKCDq359LFLVrEzVowJNuX3ABUXa2t+8TDb74gqhKFQ7wOn48OtuU51TeuDF0/YMP8nd3qjKyK124GUOqtFFYSDR4MJcC338/fPryWjIg4hJyWhpXnaq+/sUXhy9ZafRwFJ6YOpXvOnv35tB2K7VqcWPuaafZD39tpbAQGDSISxyzZ/O2GzXi7WzcyI3aOTnR/y52LF4M9OrFd6xz5wKVK0dnu+npvO2TT+ZjuGlTaJratcM3Kls5eJDv6LKygC++iM2cxUFTVAQMGcIlpRkzvA3nUR7p0IH/Lz//zJ0qcnPjnaPSiZaBBypX5t4K0RKCSgSC9u1jL4SgRCBwIwQ3E+QItAg0Ai2EyNEy8Ei0hOAkAkEshRC0CATREoIWgcaKFkJkaBn4IFIhuBGBIBZCiJUIBJEKQYtAY4cWgn+0DHziVwheRCAIUgixFoHAjxAEWgQaJ7QQ/FHuu5ZGghBC//58UZ81KzT6UQjhiiv4gnvKKdxN1U4ExcXcDdM6Zk9GBneju/pqoFkz3ubJJ0eW/2XLuBuskwjy84HU1Mj2Y4cQwmWX8Ty7QOj3rl4dmD6dZSoobyIoLnbuugsAeXnB5C+eEPH39hMdXL8+/18GDeJz+Kyzop69ske8uzPFmwMHuLviQw/ZpxFdS3/5Rb3++HGj26NqPgMi7iop0owbZ78vLwFc0VgqVbLvPvrOO7x+/Xr7/EaDPXu85XnEiGDzE0vefJODDZ26jz72mJvjUva6lr70UnTP9TJ0aAKh3JcMatXiwJ6RI3nsnFGjvH2eiIOkBKo76cJC4M47jdfPP89VM6o72yVLjCqR0aOBjh2Ndbt2AXffbb4LfO89+8A0Ox57DFizhp/v26cuEUybxnesxcVcTRMk6enA5s1Akyb8+vnn1QF1V17Jj08/zcdu0KBg8xULDhzg38+pamj/fqBxYyOoUWbevHmYP38+iosLlCPAlmb27+fuxu+8E9l2Vq3i/1LPnjzWlSowTQNdMhCMHct3D2PGhK6zKxnIk9fb3X3IAWUffeQuME0e4uGbb/i9nTuJmjQhatiQg9KaNfMXmPboo8a2Dx1Sp3nnHaLkZKLLL+d0kY5N5JZwgWkDBpiP9XvvxSZfQTJ+PP+OTtx5J58zTuTklL2SwahRfK5Hg2+/dQ5M0+igsxJGjgTGjuU7iCeeCJ+eiEc7fOEFHv2we/fQNKrGYjfdTjt35hICwPMhf/ABv5eXxw2qZ57pr1H5scf4OwLAoUM8dIMVUSK4+Wb1nWiQuGlU7t7dmA/4uuu4nl2jCcf55wOffaYblZ3QMpBwKwSrCFST1zv1GvIqhP79uRpFiEDgRQheRfD66zxeS6xxI4Q33tBC0HhHC8EZLQML4YQQqQgEboRw9tnm13/8EZrGjRBKiwgEWgiaoNBCsEfLQIGdEKIlAoGTEHbt4tJBw4bAm2/yexdcAHz7beh2nIRQ2kQg0ELQBIUWgg3xbrRIZESjcu/e/Ni9Oz9OnhyaVqzr1s1oLHaLtVFZbizesoXTyI3KqalEN9wQup1Vq8yNyl4ai2+5hejECfO6aE1uEwlyo3Lbtnycrdx6a+ltVNYNyPZEswFZhW5UNlPmu5auW8fdFKtU8f7ZkSP58dFH+fHTT+1LBGI8+s8+4wAqN5HFAjkwrXVrfq9hQ3MbgWhD6NKFu686lRCuuMJcArArEfzzn1zKueWWxCkRWJED077/Xt1Q/8Yb/Pjmm1xC+OUXoFs3+20mJ/OxSkmJLG/vvw9s2eKcpkULoE8f5zRFRcDXX9uv//prYP165zSxnBI0M5NH1g36fPn9d2DHjuC2L0oI3brpbqcAyn7JQNytR8Jf/8rbGT5cvb6gwNzl0S/r1xvbmDtXnUYuIcyapU6zapWRZtu28Hm2C5QbM4bXr1vn+atEHVFCGDjQPs1tt7kPQOrcmejIEf/52bDB/b6ef95+O6+9Fq2gqtiUDCZM4P0NHRpakow2kf6f3PL887yf118Pfl+JTLmQQdOmkW3DKQJZxBFUqGCcvF27et+HqBqqXp2rDZziEN56K7wQvvqKi8B2cQhy1HS/fjyXrIxT3EW8yMsjOnbMOc3KlZzvChX4GGzcGLrMn8/HOVIhrFlD9OGH9stddxnH+NVX1dsoLibavFmdT7FcdhlRtWrOaS64IHgZCBH06sVR00ELIRYy+PxznrCqZ8/oTeRUWtEycIGdDKwBZYWF/oRgbSNwE5jmRgjWNgQZWQYpKWYhJKIIvLBxo/OMaUREy5ZFRwhOzJrFx/GGG5yFEA43bQZBz3QmRDBiBAtsypTghRC0DLQIzGgZuEAlA6sIBF6FoGosJgpeCEIGl15KNG+eIYTRo0u3CASJIAQhg4MHie6+278Q4i0DqwgEQQshSBloEYSiZeACqwzsRCBwKwQ7EQiCFIIsAyIWgtjOo4/a57k0EW8hCBkcOsQXUb9CiKcM7EQgCFIIQclAi0CNloELZBmEE4EgnBDCiUAQlBCsMhBVQ3ZtCKWVeApBlgGRfyHESwbhRCAISghByECLwB4tAxcIGfzwgzsRCOyE4FYEgiCEIIaNvvRScxuBXGWkhRAZVhkQ+RNCPGTgVgSCIIQQbRloETijZeACIYPmzb0HlFmF4FUEgmgL4bzzzF0T5TYCLYToCEElAyLvQoi1DLyKQBBtIURTBloE4UkiIvIRm4DDhw9HM9whMNLSeEiDbdv8b2PZMp5/AOAhD3r29Pb5oiIel13mX/8CTj/d23YOHQIef5znXViwgAOarEyfbgTFzZzJw1NY+f57fj8/n1+PGMH5kVm4ELjhBg7IefttoGIZCE/cvJnnRDj5ZD5+deuGplm5EhgwAGjThmeuswtWLCjgoKUGDeyDr77/Hjh8mIOnrEF/RMBDDwGvvcaP8gCEVu6/n/d34IDxXn5+PvLFDwhg0KAiLF9+BrKyslDTJnJq3Tpgwwb7/QC8/sUXeZ+jRgFJSc7prbz7Ls/dMWQIb8fu8wUFHDh5ySX22xLzdEQ6zeuXXwJ//Svva/r02E3tGm9q1KiBJA8/oC8Z5ObmIs3rjCoajUajiRk5OTm2NwYqol4yyM3NRcOGDR3vUACgQ4cOWLVqleN+opFGdtaiRTxZtts8HzvGcw/zduZg+/b+Eee3ffuLsGLFCsc0F13knObw4Vyceab6GM+cCdx+OzB4MPDdd+dj9ervlNvIy+OhHqpUWY09e9or0/z2G9CuHdCw4VD89NPrtvkJ970T7ZzYvBk4//z9aNKkjqmEQMQDE06cCDz2WB6efDI9JM9FRcAdd/BQFAAfm2++MR+bY8d4sMIffwTq1XM+dgDQvv2FWLFipTKfffrwjF8VKuzFwYPpJeusJYPt23fj4ovPxy+//IJTTz1VuZ+2bYGDB6fj11+vt81LUhJw0UX+jnFBAQ92+NlnQN2692HDhhdsP8/nRBUAlVC1qnmO5507eS7xzEx+Ha5kEO737tYN2LBhHrKynMeIidV5HKvz3GvJIOptBm4HzGrevHnYbUUjTWoqUXJyTkn948qVoWlUeT561KizHDo0dvl1k8buGItB5/72N66zddqO6E1Uteq3tmnEQHWNGilGxYtCfr1uJ5ppzjyzp6kNobiY68gBrjNX5bmwkGjwYI5uFmlPP72/abtHjnCbQ/Xq3AbhN78bN/LgfC1acKeFypV/ctxGVlYWAaCsrCzbNGefTVSr1hu+8hMuTX4+0dVXc1vT/Pnuz4mKFYsJ4Ahr/h5EjRsTNWpEdNNNRBUr7oo4vxdfTJSWNifi7UTrPI7lee6FuA1NNmzYsJilGTBgXcmgcxdeCHzzjXP6Y8e4Xh4Ahg7let1Y5tdNGitiGOohQ3jgtuRkd9upX199FynTr18/x/V+8ut3O9FKc//9V2HpUp7fuUsX/p2ffhqYMIHry60UFfGxnTmT243EnMUDB15bkuboUW5bWr2aBz37y1/85XfTJs7TySfzIH3p6UBdVQOHD9q2beM5P+HSFBQAAwcCH38MzJnDd/Vuz4kDBw6jYkU+dklJPCBjUREP0nj66UD16tWjkt9mzZpFZTtuCLedeF4nHImqWijxhtJNTSX697/5+ciRpCwhyHm2lggSEesxtpYI3GCNM1ARrSGsE+2ckNm40fi9H37YeF/Os1wieP99Xr9mDX9mzRp+bS0RRJIfUSLYs4ffc9ObyG3J4MEH/edNhbVE4BbrOSH3bMvM5DTRGsL64ouJhgyJfDuJfB5Hg6iXDFJTUzF69GikpqZGe9MRM3YslCUEkecTJ1JDSgSJiHyMVSWCRCNRzwkiYOpU4/W8ecC+ffxc5LlChVRliUBGVSLwg6pE4BZxbGN5jFUlArfI58SOHUDjxsa6li2jn9dokKjncdSIt42CRi4ZCFQlhNJQIrDip0QgiGXJIBGxthGo4hBUJQKBKBl89VVwJQJBtCa3iWbJwG+JwIrcRpCZSVSxIpW0ISRayaCsk4D3kcFjLSEsWRLaRpDolIYSQaJCxL+/3EbQtClMbQi7dqnbCKzEu0QQDyIpEcjs2BHaRlBYiJI2BNUc5JrgKAOhRPYQcWDVnj2h68S8wOPG8SxagL0I8vO5i9/Chd6DcLwyezYHyDghdwZu2BB48snQNAsW8PuqmcEAoLg4fF7y8vgxO9s+zaFDPEva8ePhtxeODh04KMyOFSt4Jrdw9O0LnHeeep1KBAIhhM6dAdE7s2NHniv355/N2/n0U37MzeWgRJUI9u0D/vtfI7hPxaZNwHvvcQChkwh27QLGjLHfjvitnPj1V+Cnn8Knc4KIZ5OLVAQ//MC/UaNGhggEhYVApUosiR07nL/344+bH1UsX84BblOm+MtruSHeRZOgKC4muu8+YxgJFdYZyn79VZ1u4kRe72UYCr906WLOU7jl1FPVi1ivGrrixAmuWgKI/v53dT6OH+fitdjO9u2hacQQGZUr2+fDzVK1qjFAnh3z53OVRO3azts6+WSusvn669BtWKuGVBQVEfXp43x8U1LMv4Fq6AoxM1vVquF/IyC0akjmjTfst3HSSYcJKKBwM52JISa8DpJnZefOyLeRlWXkZdMm+3ThznM3/wV5vcaZMnmIZBHYjU0kjz46eLCzEJ59ltfNnh183t1w/vmcn8qViRYtUqcR38c6ltGJE9wmIta/9VboZ48f5zFcKlcmuvFGtRDcjJXkBqcJeARCBFdfHX6spCNHuB3EKgS3IrBrIxDs2xd6EbKOZSREkJHBbQEqPvrI+PyPPzp/Jyfef5/z+9e/2stAiECeFtTvxVxcyBcu9P/5xo2NfDiNEzRqlJFu7Fjzug4djHX9+3Pb2TvvmNN07apl4IUyd4hkEUyerJaBahjq996zF0KiyaBTJ6JrrjEu2CohiO/Spo1xwRYiSEoievNNtQxkEXz+Ob/3yitmISSqCARWIQQhgrPO4schQ8yD28VDBIMHEx04oJaBddC57dsjE0IkMpAbi884w50MGjQw5uIWQpBFsHevUdKVhWAVgZZBeCI6RAUFBfTQQw9Ry5YtqWrVqpSRkUE33ngj7dy505SuUaNGBMC0PCx36o4SVhEQmWVQUFBADzzwL6pZ8zMC8unkk28y5VcWQp8+D1DNmjWpZs2a1KbNe3GTwezZs6lbt25Uu3ZtAkBr166lTp14KkVx4U5OziPgMssx5u9x4AALoVYtvugmJRFNnWqMpirLQCUCgSyEU05xFoEqz1aWL8+n1NSjVLHid1SlSj3q3bt3SB95PyIQyELo1MmbCIYMGRJyvrZt273k+z/zDE+eDvCjGO20RQu+0MVaBIWF6t5EdqOPRiIEvzIQIkhLO0RAIwK++DMPqZSenq78jNybSAhBXuTRZ2UhyGmKirzJ4Msvv6RevXpRRkYGAaAPPvjAtL64uJhGjx5NGRkZVLlyZbr00kvpp5+co8NLCxHJIDs7my6//HKaOXMmbdy4kVauXEkdO3akdu3amdI1atSInnjiCdq9e3fJcvjw4YgybkUlAiKzDP74I5vq1v2KKlQoopdfzlLmVxbCzJnf04oVKyg9fULcZPD222/TmDFj6PXXXw+RARFfwGvVWkkVKuTT//53oOT4yn+AP/4wvtPw4fyeVQZOIhA8/bSxnQULvOVZZtUqopSUo1Sp0mqaO3cxff/999SlSxdq3bo1FRUVEVFkIhAcOWLkd8AAdRpViWDIkCHUo0ePkmO5fv0ekwiIzDIg4nNDpPn+e/W+ghIBUagMwg1D7VcIfmQglwjuvfd5Ouecc+jii/MIIMrM3E379u1Tfs7atdROBIITJ0JFIH/ODR9//DGNHDmSZs+erZTBM888QzVq1KDZs2fT+vXraeDAgZSRkUG5ubnudpDARL3w9N133xEA+v3330vea9SoET3//PPR3lUJdiIgMmRgN0OZNb+//PILAQNNVUbDhm0jgOill3YE9h3CkZmZqZQBEdEll1xBjRr9bKoyEvm3thGIO3pZBm5EIKqG5D+bqlHZLs+CVauI0tKKKSlpJf33v4Zdd+7cScnJybRw4cKoiECuGgLUjcp2VUNDhgyhvn37EpG5akiIgMgsA1E1JNKp5kMIUgREZhm4nY/AjxC8ysAaRzB69Ghq3bp1SUcJN9VEROaqIbnKSMZaNSSqjPxWE1llUFxcTPXq1aNnpBMhLy+P0tLS6JVXXvG+gwQj6jL4/PPPKSkpyVRcbdSoEdWrV49q1apFrVu3prFjx1J+lGZNcRIBEb9/5pn2M5RZ8/vmm29SWlqaqYQgGt6GDfsiKnn2g5MMLr30Uqpd+1SqVOkzSko6Ttdc85+SvIs2gqlTjSqjOnWMoKn//Me9CIRIrG0IbvJMZLQRNG+eTUBNOnjwoCn9ueeeS4MGvRNVEUyYoG5UdmojGDJkCKWlpVHt2s1Kvuejj5pLskIGY8ea2whUE+QELQIiQwbjxuW4EoHAqxC8yMAqAiKWQdWqVSklZRkBRNdccwNtsZnlScjA2kZgbUMgMougoMDchhAtGWzZsoUA0PeWol+fPn3opptu8r6DBCOqMjh+/Di1a9eOrr/+etP7EydOpKVLl9IPP/xAr7/+OtWpU4duvfXWiPcXTgRExomgEoEqv+PGjaMmTZoQkbnKCCAaPNhm+rAY4CSD1157jT7//HNavfonOu+8nZSUdLwkz0IEAiGEk04yvpcXEQjcCEHOs9xY/Prr/6OUlJSQ9OedN5KSkwuiKgKBLIQvv3RuLJ4xYwZNn/5ZyffLyOCqjby8vJI0Qga83txGIAthxozgRUBkyADI8TxDmRchuJWBSgREXA0za9Ys6tDhMAFcqk1PT6f9+/eHbEPuTWStGpKFIItAVA2p2hC8YpXB8uXLCUBIm+jQoUOpW7du3neQYHg6RNOmTaNq1aqVLF999VXJuoKCAurbty+1adMm7EBOY8cuJmAKDRx4nG66iZSLfLEKt9iJYMqU6SVpUlOvcZXfcePG0dlnn13y2tyo/KmXw+WZadOmUWrqtZSSMizk+MoXVrfHJZrLeeeF/kby+uTktVSx4jTq3n1Pyfr+/Q8TMIV69Tpg6jU0ffr0EBn06uUuH07DChQXG+lUjcVCCIAhArtzWmznmWeIdu3aRZUqVaLZUqPRSy8ZaVSNxcuWmfPdpo36PHezXHedswg4PyyD++/P8SQCgSwEN4tTrUh2tloEMqKaaP/+I5Senk4TFD+YGJrCKgKBtVFZiEAgx9NEUwa7dpmH1b7tttuoe/fu3neQYHiKQO7Tpw86duxY8lpMolFYWIhrr70WmZmZWLx4cdjZdX77rQOA87FxYwFq1FDPQecU9Wpl3brQ9woLgTlzjFDed9+diPbt64TNb7169bB3796S14MGAX/8AfzjH8BHH3XD5s1Akybu8+aFY8f6o7BwMIqLk3DnnWPQvn3VYHbkg+rVga1b7dcXF5+HGjVa4fBhHkoAAPLyKgI4Ezt3puDKK4GXX+bJhurVq4eCggIcOnQIJ598MhYsAObPd5ePqVPVkaRE5iE5VMNQi+lC772Xh5G4+mrg8OHQc1pEZz/3HDB8OABkoFGjRti8eXNJuoICY7snnxy6r0OHjOdpabxvp+MXjnvvBZ59NnT60cmTJ2Py5MnYt28IAOC00/xFyTdsCGzfzp93w5Ej9uvy8/n/e9ppgN2lYPhwHgamVq1qaNWqlenYAjwRVVERP//rX4E6dUK3MWoUMHo0Py8qAipUMK9PTuahWt56i19Pm8ZTufqlXr16AIA9e/YgQ8x6BWDfvn1IT/QxRNwQqU0KCgro6quvpnPOOce2V4CVXr22ErDW1MhspbiY6N572egvv6xO06iRYX15cDm5sVisT0sj+u678PnlBmTQt98ak7588803ZG1UjjZi0LlbbiF68knezxNPGOvlkoE1ctrK+vXrCdhOKSknQuIQ9u5V3+ldeaWRxtpYrBqobskS9XbkXnaqBmQi7oVWqVIlmjlzZkljcY8exwlYV7Id1cB7dt9XLhFEfkaHsn//fkpNTaWpUn2bXE0kD25HFL02Ai9kZxvVRJFEB4fDbTXRDz9wtHjbtnw+2ZGXl0ennnoqjRkzpuQ9efL6V1/lqs6hQ9XnxI03ctdhJ4zSa2hgmvPn1A3Izz77bMl7+fn5ugGZiKiwsJD69OlDDRo0oHXr1pm6jooG4hUrVtDEiRNp7dq1tHXrVpo5cyZVq/Ym1aypbjSSCSeE5s2J7rjDLARrr6HUVKJx44guvJB7sVxyyf2O+SUi6tGjB5177rm0cuVKWrlyJbVq1Yp69erlGJgWCbIIxAk/dizvZ8SIo7R27VpasGABAaAZM2bQ2rVrafv23aYL4KpVqygzM5MWLFhAzZo1o0qVdtPw4SdMgWmyCETQlFUIQgS1a3M1ikoGsggef5wfe/Y03lu+PFuZ5927d5ds44477qDatW+iSpVOUJcuh6hz527UunVratu22FYIqot9tEVw+PBheuCBB2jFihWUmZlJS5YsoQsvvJBOPfVUU/dBIYPhw82jncZDBERGm8Hf/84NyEEJwUsDskoIDzzwAC1dupS2bt1K33zzDfXq1Ytq1KhB27ZtIyKzCERPoylT7IXgRQbWwDQVhw8fprVr1/5ZHYuSa5e4cX3mmWcoLS2N5syZQ+vXr6frrrtOdy0lMu78VMuSJUuIiGjNmjXUsWNHSktLo8qVK1PTpk2pQ4dvqFUrd2MuOwmheXOi++83Dz8NmBuLxRDWOTlEbdseJ+AQAe1t80tEdODAAbr++uupRo0aVKNGDbr++uvp0KFDROQcqewHlQgEQgjAoyH5HT16dEgJISUlhRo3bkz/+Mc/qH79Iho1yug2Kqdr357o0CHj9cKF5vW1a/MfWTWEtSyClSuNz2ZlmbuwAi2UeRbMmZNPyckFVKnSfKpcuSb16tWLtv/ZEi2XSuRjYr3gB1EiOHbsGHXr1o3q1q1LlSpVotNOO42GDBlSkjeB3LVUDH8t5yWWIiAyZJCdnUN3302BCcFr11KrEES//EqVKlH9+vWpf//+9PPPPxORWgQCOyF4kYEqUtnKkiVLlNezIX82Vomgs3r16lFqaip16tSJ1q9f7+5gJDgBFKrDc/fdRK1bu09vJwQhAyJutBI/ekaGkUaezyAnR5QQuMrIL9ESgpMIBEIIcpWRjF2VUYMG3BuDiOj330PTyDKwfifRt9sqA6sIiMwyIDILwS4w000cgUoIcn6DrhoKhzXo7LnnjLzYjRcVJHKcQXExBSYEP0FnbqqMnEQgUAnBiwyI3AmhvFIqZECkFoKQgagaki8Oog3BOogYwoQAAB+ISURBVLlNogjBjQgEfoQgZGBtIxBVRrIMVAFlV15ploFKBEShMiByFoKXgDKrEMTzeIuAyCwDuWoICG1DiAXWCOSghOB3OAonIbgRgcAqBK8yINJCsKPUyIAoVAjNmxPdc4+5jcA6Y5lqprN4C8GLCARehdCggbk9pX17c6TxrFnGOtFG8MMP5ioj0a4gd+GTRUCklgGRWgh+IoutkrIu8ULIQB7u+scf1TOmxQLV2ERBCCGSgepUQvAiAoEshOuv9y4DIi0EFaVKBkRmIYjFGlBmbUOwyoAofkLwIwKBVyHIIhCo2hCECATWNgQ7EchpVfOwy0IYP97/EBN2Qogncm8iIQJBPIRgN+1ltIUQ6RDWshD+9z/vIhAIIQBEf/mLc1q780ULwUwSEVGgfVcV3HMPzw6lig9wAxHwz38CL77Irz/6COjd25zm2DFjKsuWLYH160O3k5sL9OgB/PILz6DVoYO//MyYwbM/AcD+/UDt2up0ixbxzGM338yzg/mZqnLcOODRR4FXXwX+/vfQ9YWFQEqK8bp9e2DVKnOavDygTRtg40bv+3fikktC31u2LPJtqLZjl84Nycl8/vTtq15/4gRw/fU8u5gdcn5OOglo1cq8fudOjis491xg7drgpyXNzc1FWloacnJyQuJ8iDhOZtIk+/PGLTt2cEzCjBk89aUffvwRaN2an19wAccbVFaHGzkydSr/lwD+jnaIuAtVmuJi4NZbgbff5tnrLr/cez7KCqVy2sukJOD551kG554bKgLAHPQjpjC0UrMmT2XZowdwxRX+hXDKKcbzyy/ni75KCCtWALVq+RcBwFM2zpvHFyPVn/rECSMPAAc8WTl2zBw0FS3WrgX69ze/51UGZ5wR+h5R6HYaNfJ/DDMzgQED7Oc2Tk5mqS9bxhctceESzJtnft2sWWi+zziDp8KsXz/YqVJF0NmJEyds0yQlAS+9xM9vv50f/QohI4PnDb/jDuCss4B27bxv448/jOe5uXw++pHB0KHeP2OloADYvRtITWWpl2viURyJpJpIRu5NJLNjR/hqIplIqoy++IKoShWi7t15ILY6dXjoBsVQKzRmjLmnk1+sYxMJ5DYB+ft37WqkEY3F1arxuksvdd7X5s3GdqZNM95fvdoYa+j554008jDfdvX8ci9NeYyjP4eEMmEdfVRevFazCQoLw09kYzdjmrWxGODf1Gn6xlhgV00kE60qo+xsoo4d+fdfvdrbZxctMqqGvvvOXWCaCjmgNNxVzC7N8eP8v61Shf/H5Z0yJwNZBJMmqRuQVfgRgiwCUee5fr29EIKUgXUYausFq2tXc0DZt9+6kwFRqBBkEYgZysTMaUII8r7T0/nROrideH3PPRy8JQ0JRUShg87JDd7xEIIsgilT+PHjj41RS+MpBDcyIIqvEGQRiP+L20hlGSECMXe2HxloEYRSpmRgFQGRexkQeROCSgQCOyEEJQPVfATiOIh5C6yNxcePu5cBkVkIgHqqSlkIYtm7l6hVK+PPKAtBiKC4mOjBB80yUI0+Kv+pYy0Ea2OxGAJ8zRrzVJfxEoJbGRDFRwgqEQi8CEEWAZE/GWgRqCkzMlCJgMibDIjcCcFJBAKVEIKQgd3ENPIfQJ6gpW5d43NeZEBENHOmsR278aLki6YYrkWWAZH5Qi6qjGQZ2A1Dbf1Tx0oIco+x//yH35NlQBR/IXiRAVFsheAkAoEbIVhFQORdBloE9pQJGdiJgMi7DIicheBGBAKrEKItA6cZysTxEFVD8pDgXbt6l4GoGqpTx1xlpNqnvMyerS4ZpKaahSBk4DR5veqPH7QQ5KqhWrWMKiOrDIjiKwSvMiCKjRDciEDgJASVCIi8yUCLwJlSL4OBA+1FQORPBkRqIXgRgUAWwj/+ET0ZXHON8wxlcv26qBqSq4wuvti9DKxtBKpGZWvVkKrKSG4jKC42VxkNGsQNyHYikPdhJSghWAedk9sQxHwGsgyI4icEPzIgClYIXkQgUAnBTgRE3mSgReBMqZZBzZrOIiDyLwMisxCefda7CARCCElJ0ZNBUpLzDGXiuFgDyqxtCOFkoGosJgptQ5BFIFAJQYhAYG1DsBOB/J1URFsI8uQ9ckCZEIIIeLLKgCg+QvArA6JghPDii/4DymQhiN9AJQIibzLQInAm5jKQx5U5fDh8eidUFyO7xS85OebteD2xBevXG9tQdTv1wqWXOouAyNiXLAKBVQilbbGjYUMjTUYG0amnhi7ydlTrRc8nt8tDD6nzIoRQtap6P6r8RHIORyIDougLAfAnAsEPP7j77uHWi+pQQIsgHDENOiMyz0B11VU881T16v6217gxsGVL+HRipiM/PPec+fV//wvcdZf37Xz4ofHcKTDNDWPGAFWqAOef75xu4EAOyrOyYwcHD+3e7W//icgffwBZWcbr3buBxx4zB6YtWsSRwYLDhzkSWWbePECa6C4s48dz0ONf/mJ+Pz2dI2vffJNn/lIxcaL7/YgZvay4CTpzQ7QC09LSOJJ35kzgppv8BZMBwNy55tdbtvD/3cr//gfs2aPeRl4ez2YHAC+8AFx2mb+8lBtiZR158voKFfixRg2u8oi0hGDlu++MuwGnu+dwPPqosZ2ffjKe2825bIcYU2jMGOc4hGgiD2Etk5nJM8TJs8QB5sC0V19V35l26GCkuesudRq5UbldO/NdmXj+zTe8Xi4limGzrRQVGVU3AFfTWZF7Sz3zjDk/ospIFXsBEE2caGzHy8Q0ogH5jDO4DWHZMuf0VkTchNfJ6+2ItGQgCHL4a7fIk91Pm2b8Jr/95n4burHYOzGRgSyCl1822gyWL4++EIIQwZ/z2ph6LbkVgiwCQSyEoJKBEEHjxvwcMA+41rWrWQSLFvGjmPFMCEElgr59zUKQRSAuyIsXm4XgRQTvv080YECoDKwiEMh5++wz47mYd6BOHaJ//csQgtcZyoQMvvqKqHNnb0KItgiIoicDovgKQRaBwKsQtAj8EbgMrCIgMjcgR1MIQYpA4EUIKhEIghaCVQayCLKyjHaDt95StyFs326ez0A1d/KRI8bzBx5QNypbG3NlIXgRAVGoDOxEILDm5bnnjPfr1uVzUwjBiwiIzF1LjxxxL4QgREAUXRkQxUcIKhEI3ApBi8A/gcpAJQKi0N5E0RBCLEQgcCMEJxEIghSCLAOrCIjMMiDi30d8p6ZN+T3rTGfXXGOkOeccfk+WARH3vBLvqYYFtk5MI6qMZFQiIDLLIJwIiEKrhuQZ00TwnVwi+NvfHA6oBWucgRshBCUCoujLgCi2QnASgSCcELQIIiMwGdiJgEjdtTQSIcRSBAInIbgRgSAoIQgZqERAZJaBqo2ga1ezDFRVQx06mGUgVw3JVUYCqwhUQrATAZEhAz8ikIUgZCCL4Kqr+FFuQ3BCFXTmJAQnEQwZMoQA85y7HTt2dJeRPwlCBkSxEYIbEQjshKBFEDmByMBJBET2cQZ+hBAPEQhUQvAiAkEQQmjQgPvKq0RAZMjgwgvNVUNylZHoqtmypblqSFVlZL3gWgPTVI3F1jYEJxEQsQzkvuduRCBXDdktP/5orjJyIwSVDIjUQghXIhgyZAj16NGDdu/eXbIc8DiMZ1AyIApWCF5EILAKQYsgOkRdBuFEQMQnVosWPDOXdVm6lPvQX3gh0R9/8Kxldsvy5fETgUAWQvv23kUg8CIEN1UMIk8qERCFthNs2WL8BseOqS+ahw4ZaazDhIvl8GHj97H2FQe4H7/8e3/6aejxe/dd9blx0UXeRPDUU+bPq/K7bBn3jc/O5u935538/pNPqvMgFtEA/s03oesOHeII79RUor//ndMNH84zvKm2ddNNN1Pfvn3D/6gOBCkDomCEIEQwerT9cbYLIJSFcNpp/Dhvnv21QhOeqMtADF/86KMOO3W4S/OzRCKCvDz/IhDIF8beve3TiajWRYvU690I4cABY192AT3y5PUqERDZXxxLw/LII+rvtGdP/PPmd6ladSDVrVuXmjRpQrfddhvtDTNfZl5eHuXk5JQsWVlZgcqAKLpCWLrU3XFp0oSrOlXIQgi3nHZaZPktD0R92sv9+4EuXTgIaOlSngXKipj5aepU++1s2gR8+63zvpKTgWef5SkcI+Gll4AhQ9Szgrll926e1SotzX7GtHXrjLwuWgR07Rqa5qef+Pg1aBAamHbwIM/I9v33/Lp7dw7OkQN7li7lzwN8/OwC04qKgEqV+HnjxsCoUeb1w4YBR44Yr7t25SAimVdf5dnbZFTf6Ysv+FH1excV8bSDAE+nOHasOr8A/0YAT5W4cKH599q7l4OKfvnFfl/W7YRD9Z1Vn+/dWz1j2rFj/Bt07hw621lxMfC3v5nf+/e/f0ejRj/iscceQ1FREdasWYPU1FRl3h5//HGMGTMm5H3VtJfRhCg6U2geO8aBmIWF9mmKi/l8KCri8/r000PTNGoEbN+uPu9kJkwInbFOYyEIw+zdy/XM6elEGzaErhe2Lmu4Gf5abuPwUkKQJ6YRn7eOlSSXCFST18uIaqKzzuJHuWpLbizOzSW67TYei2fqVCONPOjcoUNG+n/9K3RfL79MVLGiOg/hho+WGTCAv791rCQx9EO9ejyD2513Om9HHsEVCK2KEN9n1qzQz8oDIx496i3/RETTpk2jqlWr297BfvQR0a5du6hSpUo0W542zkI8SgaCWPYyysriqs5GjdQlhBtv5DZGTeQEdkl2EkJZlQFRMELYvNk8+qj8WSGETz5xLwIic28iudFbFsGRI5z2xAmzEKyjjxLxhdlOCCoZeBUBkdGbaNUqQwi//mqIYONGPk5uZDB+vP3gdnYykEWQl+fve2Rn55Zs45xzjtO4cQV00knciC0L4ayzzqJn7BpGFATdZmAlUYSgZRA9Ar0k2wmhLMuAKLpCEMMwJCUZg87Jx09ECXsRAVFonIEQglUEAiEEsd46+iiRvRCsMvAjAiJznMGqVXJ9O4uAyJsMRHqrEFQyUInA6/cR3VoB3i8R5+Okk/i5LISKFfvRVLkoFoZYy4AoMYSgZRA9ksPUIkXEKadwfXHdulxvunFjkHtLHGrW5DrtFi24jn/VqtA0HToA333Hzy+/3KhXl6lfH6hQgZ8nJQGnnhqaRqwHgJNOAs47z1+ed+0ynj/8MFCtmnl9cjLQrp3xul270HrwtDQgO5ufP/MMMGJE6H6KirjOfeZMYMYMdV27Gxo2NJ6npgL16vnbzpo1QNu2/LxCBa6ntjJoEOcX4MHPrNX4FStyG8XAgZx21qzQbRQXG79V27a8XwDIz8/H8ePHsHLlStSosQ1vvsknS1HRHFSu7PPgxAgxuN3dd/Pgdq+9Fty+GjTgdoOKFflasm1bcPsqt8TCONYSQlkvGQgiKSHIbQTTp5vbEER6uY1g3Dhv8y3IJQO5auiRR0LbEIiMqqG77ya69dbQNgQZawlBlAz8lggEomQgtxFMm2ZuQ/BaMhDIJQTRY2vWLOcSgRW776cqEQjGjSugihVzqW7dulSpUiU67bTTqE+fkaYqIzfEo2QgiGcJQZcMokfMLsmyEMqLDIj8CUEWgagaktsQrI2OompIbkMIJwQhg6pVQ6uGrIFz1jYCaxuCClkIYoiKSERAxDI47zxzGwGRuQ2hcWN/MiAyC4GratyLQGAVgpMIiMzVRDLWNoRwxFMGRPETwqWXahlEi6h3LXVi3z7uAvbTT6JUEqs9x5fcXKBHD+Dnn4GnnjJXcQhWrQrtVvm//5nnI/jpp9BqlZUruaul4IsvuKtjp06h3U5l5K6lAFdbyFVD48YB77wDnHwycOgQ0K0b8OKLRtVQcTFXDSxbBgwYAHTsGLqPnBzejsyNN/qvGurb13g+fjzQtKnxevVq4Mkn+Xm7dsD06fbbadaMuyQ/9FDounbtjK67giefDK0aAngeDlXVnagKk7vmylVDMs89x+fEoUOh69avN37/jz7i39WO3NxcpKWlBd611Ami6HQ7dcOOHVxdtGULn+tffhncvsoNsbaPPJRBeUIeTydai11j8aJFPG+s3fSRROZgu/K65Oerj00Q+7Jj0iQuRXz9tXq9XEIQJSEV8S4ZCIqLeaazpCQuFQeJKCH07BnsfsoLMZ3pDOBG5b/9Dfj441jvOX7k5fGdYlIS302rSgaCkSP58auvQtctXWoODpNLBDJdu/JMWzk59vsRpbLkZN6uHVu2AGeeGdpYLPjkE+Dpp/nO95RTzOtOnOAAPCvW0kI41q/nxmaZPn3UpZE1a4A5c/j5vHnmwLSvvwYeecR4PWgQbzclxfyelW7dzDOmLVxoPB871v7YFBTwrHQVKnCjsqpEdPPNwPvvc8lx4ULg4ovN61u1Avr35+/UpQvPniaXiKI101m0ePJJDrQbO5Y7UgRJgwZcirObSU7jkXgYyG6gurLI8eN85xJuzmKB3Z2k3FjspmRlN9OZnC+A61wjYeFC3o512AvroHNyG8LDD7vfvnxn/OGH6hnTrMhtCCIwbdkyHjyuc2duG5k3jyglhahfP6OEIDcWWxfR7XTiRH7tdhhqN43mR47w71C9urqEcOedPF9yixY8t7OqhJAIJQM/g85pEgctgwDxKgIi9YXeGlmc6DKwG33UqxCsIhB4FcKCBWYRCGQh9O9vbFOMcTRrllkI//d/3kQgiFQId97Jjc+iF5VKCPGWgRZB6UfLICD8iIAo9EKvGmIikWUQbhhqt0KwE4HArRBEmrZtQwPpiFgI8gU/Ly806Exe//DD/iamiUQIQgZE9kKIpwy0CMoGgQadlVfy8ried8kSrre+/HJ/25EHnbP2GkpETpzggd2cAsrkwLRnnwX+9a/QNHIvmg8/5PYBK5ddZgTqXXCBelDDvDzjeWEh9/KxMm2a8fzKK9X1/xMnGs+ffdZob/GCm8C0atWABQu4R1OPHsDy5aFp0tOBxYu5l1eXLjygYzx54glg9GhuIxDtXZpSSjwMVJZLBn5LBAJxB+o06Fwilgy2bfM6Ro+6hBCuRGDFroQgtxF8+WVoGwKRuY1g9myjykj0eJs1y9xGoGpD8IqfEoJcMhBYSwjxKBnoEkHZQssgikQqAqLQhktV99FElEGnTt4DyqxC8CoCgVUI1sZiotBGZVVksWhD6NKF37/44tA2gngI4dxz1QFrshBWr46tDLQIyh4xDToT3HMPByutWxfrPfujuJgDvlq1su9GmJ8P9OsXedWQvH27qiGRxumXa9iQg3FuvFG9Pi+P8wtw91A7qlYF/vIXc9dKmY8/Bq66ip+//773gLKcHB5TSebOO9VVQwBXH9WvH/r+4sXmMe07dwbmzzcH0q1ezWNFiWoqgAPz5ICy+fOByZON123acFdY+Xfp2dN4vmCB/bFxQgSmHTzIXXflfQqOHgXuuouDNQH177R3L3dPBXIBpGHWrBxUq6bu05mUBFx4YeRdPgcO5IBIXTVUxoiHgUpTyeDECaKhQ/ku6KGH7BsPxXy+d98d2f6cSgTWNE60aWPfTdLrYjeMRlERUatWnEaMJuoHuYQQbqlTxxiiw4o8p7JdgJaYv6HsLVwy4Ef7dC1acDWYX0aODC1RacoGMQ86K00UFwN33AG88QZw3XU8BALAI3JaSwidOwP33stDNrRowXe3figo4G1XdPhliorsSyiC5cv5rtOJwkLej922tm7l0sXx46HrRGPxL7/wSKmffsqNidYZ09yQlsYzX7VrB2zYAEyZoi5ZHTvGd6Vdu3LjsTxUB8ANqps3A5deyqWVpUs5MEkwaBDw22/8fNs2+2OcnQ20bMm/5YAB9vmWt719u7cSws8/80x1MpdcArz3Xmja4mL+zeXgOMGPP3LDd506PMvghg1AjRrqfe7ezSUuEbxmDRIMx5NPcimpQgX+/StXVo/iqimlxMNApaFkIEoESUlEU6bwey+84FxCKC4muvdeTvPyy7HNbxBs2sTf5csvze+ruo8++SSntY526gU3bS4HDnCpx6mEkJnJg5g1bmx0efUy+qjTTGdW/LQh/PST8ZmhQ81Dgwwa5G4bRPz969Th45GZ6a7NYONGHuTPawnhiSfMbQTXXqtLCGUNLQMFKhEIypMQVDJwiiNIVCGIhmC3Fy4vMiDyJgSrCARehSCL4MABb72JvArBKgKBFkLZQsvAgpMIBOVFCFYZhAsoI0o8IcgXarcXLK8yIHInBDsRCNwKwSoCIu9dS90KwU4EAi2EsoOWgYQbEQjKgxBkGbgRgSBRhCBXDTVsGDp+kh1+ZEDkLIRwIhCEE4JKBET+4gzCCSGcCARaCGUDLYM/8SICQVkXgpDB4sXeJ6aJtxBkEWzcGNqG4IRfGRCpheBWBAI7IdiJgMh/0JmdENyKQKCFUPrRMiB/IhCUZSEIGTRo4G+GsngJQdVYrGpUtiMSGRCZhSAH0rkRgcAqBCcREEUWgWwVglcRCLQQSjflPuhM7j761lscCOSVF18E7rsPuPVWY3J1GSLgn//krpzVqwONGjlvb+RI7soabzZt4lnBAH8BZQAHJj32GAdPnXOOv3zk5fG8ALm5nAcxXpPMwYOcRh5/yNrtcds27gJcsSKffxkZ6v1lZ/PYP36/M6DurqsKLHMiPx+4/37jdZs2wKJFQK1aoWkjnels0yY+NsXFHOTmN6BMBKQBfN5rShHxMFCilAwiKRFYeeklnk+4UiX1Is+n62ZJBD75hPNy3XWRbefpp3luZrtj43aRj0+4NHZ3po88wutnz7bPb34+zz9tHcvIC9ZAumh85yuuCN3PpEmTqHnz5nT22Wf7LhkINm4kataMf69IECWE/fsj244mtpRbGURTBGUVMbzzk0/GOyfM8eNEPXpwldGiRd4/72ViGtUEOW7JzubPnXQSbydS5CqjgQPVaeI9n4Gm9FMuh7CORtWQJvZUrgx88AFXZ/TqZQxh7Ybnn+cqlxEjQscaUtG+PU/ZuXEjDyftNIWoTE4Op9+4kT/fvr37PNqRmmoMxz1zpnpqTo0mUsqdDLQISjd+hOBVBAKvQghCBAItBE3QlCsZaBGUDbwIwa8IBG6FEKQIBFoImiApNzLQIihbuBFCpCIQhBNCLEQg0ELQBEW5kIEWQdnESQjREoHATgixFIFAC0ETBGV+CGstgrKNEEK/fiyE+fN5WOdoikAghHDFFSyA//0PuPba2IpAIIRQuTILobAwdvvWlE0SVgYTJvD47ffc438bWgTlA1kIPXvyhTHaIhAIIXTsCJx2Gs8E9+WXsRWBQBbCnDmx37+mbJGw1UTDhwP/+If/z2sRlC+EEK67jqNngxCBID2dzy+A9xkPEQjeeGMymjZtHb8MaMoMCVsyiAQtgvJJ5crA1KnB7iMri0sEAPDKK0C3bsHuLxzDhg3DsGHDkJSUG9+MaEo9CVsy8IsWgSYorCK4/fb45kejiSZlSgZaBJqg0CLQlHXKjAy0CDRBoUWgKQ+UCRloEWiCIlIRzJkzB927d0edOnWQlJSEdYpx2/Pz83HPPfegTp06qFatGvr06YMdO3ZEIfcajXtKvQy0CDRBEY0SwdGjR3HxxRfjmWeesU1z33334YMPPsCMGTPw9ddf48iRI+jVqxdOnDjhM+cajXdKdW8iLQJNUESraujGG28EAGzbtk25PicnB2+++SbeeecdXH755QCAadOmoWHDhli0aBG6d+/ub8cajUfiVjI4fjyymZC0CDRBEqs2gjVr1qCwsBDdpD6q9evXR8uWLbFixQrbz+Xn5yM3N7dk0WgiJS4yuOwy4NdfgbvvDi+E//u/0Pe0CGJD5878WN6OLxF/5zffDL6xeM+ePUhJScHJJ59sej89PR179uyx/dzTTz+NtLS0kgWYH2xGNWWeuMigXz/g9deBl1+2F0LPnvz44INmIWgRxI7q1fm3adgw3jmJLUlJwJQpwC23ePvc9OnTUb169ZJl2bJlvvNAREhyCKEeMWIEcnJySpasrE6+96XRAHFsM7jtNn4cOpQfJ00yDx+QlAT07Qu0bMlCAHjwMS0CTaLSp08fdOzYseT1qaeeGvYz9erVQ0FBAQ4dOmQqHezbtw8XXXSR7edSU1ORmpr6/+3cMWvqYBTG8SeELEIM6OLQvZNDcKsfQQpOqVMXnbpqxy7tZgengEM/QGelk5+hU12cCg66Cepc0uElxV7spSW95u3t/weCkAhnezjveT3ZCgZ25DpA/kwg3NyY75eX5uM4BAHs5Pu+fN//0m9qtZo8z9NkMlEURZKk5XKp6XSqfr//L8oE9sr9NtFnAuH62iwek0ynQBDgp1itVprP51osFpKk2WwmyXQElUpFQRCo3W6r2+2qXC6rVCqp1+upWq2+3S4CDsGK/xl0Oh/PENIZgeNIR0fS09P+oTJgo9FopDAM1Wg0JEmtVkthGGo4HL69MxgM1Gw2FUWR6vW6CoWCxuOxXNfNq2z8Qk6SZLng+b3u7kyHcHEhPT9LnmfWBaczgvNz6erKdAm3t2bNNQBps9koCAKt12sVi8W8y8EPlPsx0a4/j4xc13QGuzOC3RmCRCAAwHewqjNIpR1CKgzfP08Sc1z08iLd30tnZ4etD7ANnQGysqozSHU60uOj9PAgnZ7uf+fkxMwRjo8PWxtgkziOFccxe4yQmZWdAYCvoTNAVlbcJgIA5IswAAAQBgAAwgAAIAbIwH8hSRJtt1v5vv/XbafARwgDAADHRAAAwgAAIMIAACDCAAAgwgAAIMIAACDCAAAgwgAAIMIAACDCAAAg6RWTWV1WWrnFAgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "Graphics object consisting of 1 graphics primitive" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rw=RandomWalk((0,0))\n", + "lin=[(0,0)]\n", + "\n", + "for _ in range(0,1000):\n", + " pp=next(rw)\n", + " lin.append(pp)\n", + " \n", + "#show(pt)\n", + "show(line(lin),aspect_ratio=1,figsize=[4,4])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "W praktyce interesuje nas spacer nie po nieograniczonej płaszczyźnie, ale po organiczonym jej kawałku. Aby zastosować taki efekt, utożsamiamy brzegi pewnego kwadratu, aby uzyskać topologiczny model torusa, na którym realizuje się nasz spacer losowy." + ] + }, + { + "cell_type": "code", + "execution_count": 287, + "metadata": {}, + "outputs": [], + "source": [ + "def RandomWalkWithBounds(point,size):\n", + " x,y=point\n", + " mx=MarkovChain(0,500)\n", + " my=MarkovChain(0,500)\n", + " lipt=[(x,y)]\n", + " while true:\n", + " x+=next(mx) #modyfikacja zmiennej x za pomocą łańcucha mx\n", + " x=x%size\n", + " y+=next(my) #modyfikacja zmiennej y za pomocą łańcucha my\n", + " y=y%size\n", + " yield (x,y) #dodanie kolejnego punktu w spacerze " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Poniżej prześledzimy na mapie częstości (im ciemniejszy piksel tym więcej odwiedzin) jak często dany punkt jest odwiedzany w spacerze losowym. W granicy każdy punkt powinien być odwiedzany z tą samą częstotliwością." + ] + }, + { + "cell_type": "code", + "execution_count": 303, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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fikghalFixaIiYkJxFMT0TUgIO8x7du3D3FxcUhMTMR9992HAwcO2D7W7XajsrKyzo2Irm1+L0wDBw7EwoUL8dlnn+Gtt95CeXk5Bg0ahBMnTtT7+Ly8PDidTs8tPj7e31MioibG74UpMzMT48aNQ69evXDbbbfh448/BgC888479T4+JycHLpfLcystLfX3lIioiQn4h3jDwsLQq1cv7Nu3r97c4XDA4XAEehpE1IQEvI/J7Xbj22+/RWxsbKC/FRFdJfx+xjRz5kyMHj0anTp1QkVFBV544QVUVlZi4sSJPj1vp06dxLxr1662me4NdWnJFEBehmP48OHiWN32TkuWLLHNbr75ZnGsjvSPwaZNm8SxHTp0EHOpbywhIUEcK20rBcg9Ozrt2rUT8169etlmx44dE8fW1taKudQWo1vWRNcv1LlzZ9tMt33T7373OzGXetY2bNggjp0yZYqYN5TfC9ORI0dw//334/jx42jfvj1uuukmbN68WftiJSKy+L0w5efn+/spiegaw8/KEZFxjClMXPaEiCzGFCYue0JEFmMKExGRhYWJiIzTZLZv0vWQSNskSVvfAMDSpUvFvFWrVrbZyZMnxbG6xlJp/aAvvvhCHKvrmK+oqLDNxo8fL47V9b5I2zfNnj3bp+eurq62zfr16yeO1W3fJPX86Nbt0uXSc+v6lLp06SLm0tpaurXKdu/eLebfffedbabr0wsUnjERkXFYmIjIOMYUJrYLEJHFmMLEdgEishhTmIiILCxMRGScJtMuoNuWZ926dbbZAw88II698cYbxVxaGUFqUwCAgwcPinn37t1tM91yLKdOnRJzaWuokJAQcazUDgAAR48etc1atJBfVj/99JOYjxw50jbTLWGju3QuvU7CwsLEsdHR0WKu+7klunlLy7mUlZWJY51Op5j37du3wc+t2/KqoXjGRETGYWEiIuOwMBGRcYwpTOxjIiKLMYWJfUxEZDGmMBERWViYiMg4TaaPSdezM2nSJNtM18chbbsDyH03bdq0EcdK20oBcp+T3SahliNHjoi5tGXQjh07xLG6bZCkbX187W2x27UZkHuzAGjfCrjhhhtsswMHDohjpa2fACAuLs42k7ZIAoCvvvpKzOPj420zqQ9JNxaQXyeHDx8WxwYKz5iIyDgsTERkHBYmIjKOMYWJfUxEZDGmMLGPiYgs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\n", + "text/plain": [ + "Graphics object consisting of 1 graphics primitive" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "rozmiar=30\n", + "rw=RandomWalkWithBounds((rozmiar//2,rozmiar//2),rozmiar)\n", + "li1=[]\n", + "for _ in range(0,50000):\n", + " li1.append(next(rw))\n", + "\n", + "freq={(i,j):(li1.count((i,j))) for i in range(0,rozmiar) for j in range(0,rozmiar)}\n", + "m=max([freq[x] for x in freq])*1.0\n", + "M=matrix(RR,rozmiar,rozmiar,0)\n", + "for el in freq:\n", + " M[el]=freq[el]/m\n", + " \n", + "show(matrix_plot(M),figsize=[3,3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Teraz możemy zdefiniować funkcję, która przy zadanym kształcie będzie zliczała odwiedziny." + ] + }, + { + "cell_type": "code", + "execution_count": 304, + "metadata": {}, + "outputs": [], + "source": [ + "def ShapeFunction(x,y,S):\n", + " if S(x,y): #S jest warunkiem bycia wewnątrz kształtu\n", + " return 1\n", + " else:\n", + " return 0\n", + " \n", + "S1=(lambda x,y: y**2<=sqrt(4*x**2 + 1)-x**2 - 1) # wnętrze lemniskaty" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I jeszcze jedna techniczna funkcja skalująca." + ] + }, + { + "cell_type": "code", + "execution_count": 308, + "metadata": {}, + "outputs": [], + "source": [ + "def MapFunction(a,b,xbound,xsize,ybound,ysize): #(a,b) w [0,1]^2\n", + " return xbound+a*xsize,ybound+b*ysize" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Teraz możemy już przygotować schemat całkowania metodą Monte Carlo z wykorzystaniem spaceru losowego. Po zainicjalizowaniu spaceru zliczamy te punkty wewnątrz kształtu, które odwiedziliśmy w trakcie spaceru. Zgodnie ze spodziewanym rozkładem jednostajnym zliczamy częstość odwiedzonych punktów w stosunku do wszystkich i mnożąc przez rozmiar próbkowanej przestrzeni.
" + ] + }, + { + "cell_type": "code", + "execution_count": 309, + "metadata": {}, + "outputs": [], + "source": [ + "def CalkowanieMarkowa(start,steps,size,S,xbound,xsize,ybound,ysize):\n", + " s=0\n", + " rw=RandomWalkWithBounds(start,size)\n", + " for _ in range(0,steps):\n", + " a,b=next(rw)\n", + " x,y=MapFunction(a*1.0/size,b*1.0/size,xbound,xsize,ybound,ysize)\n", + " s+=ShapeFunction(x,y,S)\n", + " return s*(xsize)*(ysize)/steps" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Przy nawet stosunkowo małych rozdzielczościach próbkowania (przykład poniżej dla 30 i 40 punktów w każdym z kierunków) i niezbyt dużej liczbie iteracji, otrzymujemy zadowalające przybliżenie wyniku." + ] + }, + { + "cell_type": "code", + "execution_count": 315, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.82842712474619" + ] + }, + "execution_count": 315, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "CalkowanieMarkowa((15,15),5,30,S1,-sqrt(2).n(),2*sqrt(2).n(),-1/2,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 316, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.94030100757589" + ] + }, + "execution_count": 316, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "CalkowanieMarkowa((15,15),500,30,S1,-sqrt(2).n(),2*sqrt(2).n(),-1/2,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 324, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.00659933937994" + ] + }, + "execution_count": 324, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "CalkowanieMarkowa((15,15),50000,30,S1,-sqrt(2).n(),2*sqrt(2).n(),-1/2,1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Przy rozdzielczości $40\\times 40$ punktów kraty i $2000$ iteracji otrzymujemy, że średnia wartość obliczonego metodą Monte Carlo pola ma błąd poniżej 0.05, a mediana przypada na wartość, której odchylenie również mieści się w zakresie około $0.01$.
\n", + "\n", + "Na wykresie poniżej prezentujemy rozkład wartości pola dla 100 prób wykonanych obliczeń. " + ] + }, + { + "cell_type": "code", + "execution_count": 339, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.99339058470737\n", + "2.01808275350641\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "Graphics object consisting of 1 graphics primitive" + ] + }, + "execution_count": 339, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "li=[CalkowanieMarkowa((randint(0,40),randint(0,40)),2000,40,S1,-sqrt(2).n(),2*sqrt(2).n(),-1/2,1)*1.0 for i in [1..100]] \n", + "print sum(li)/len(li) #wartość średnia po wielu iteracjach\n", + "li.sort()\n", + "print li[floor(len(li)/2)] #wartość środkowa (mediana)\n", + "list_plot(li)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "SageMath 8.9", + "language": "sage", + "name": "sagemath" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.15" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}