diff --git a/BHT.ipynb b/BHT.ipynb deleted file mode 100644 index 043cfc917621d122ca2e91ea1b329348b7840464..0000000000000000000000000000000000000000 --- a/BHT.ipynb +++ /dev/null @@ -1,1380 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 21, - "id": "851c990a", - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "\n", - "\n", - "class MainApp:\n", - " def __init__(self):\n", - " \"\"\"Initialize the MainApp with a root node.\"\"\"\n", - " self.rootNode = TreeNode(x=0, y=0, width=100, height=100)\n", - "\n", - " def BuildTree(self, particles):\n", - " \"\"\"Build the Quadtree by inserting particles.\n", - " \n", - " Args:\n", - " particles (list): A list of Particle objects to be inserted into the Quadtree.\n", - " \"\"\"\n", - " for particle in particles:\n", - " self.rootNode.insert(particle)\n", - " \n", - " def ResetTree(self):\n", - " \"\"\"Reset the Quadtree by reinitializing the root node.\"\"\"\n", - " self.rootNode = TreeNode(x=0, y=0, width=100, height=100)\n", - "\n", - "class Particle:\n", - " def __init__(self, x, y, mass):\n", - " \"\"\"Initialize a Particle with x and y coordinates and mass.\"\"\"\n", - " self.x = x\n", - " self.y = y\n", - " self.mass = mass\n", - " self.vx = 0.0 # Velocity component in x direction\n", - " self.vy = 0.0 # Velocity component in y direction\n", - " self.fx = 0.0 # Force component in x direction\n", - " self.fy = 0.0 # Force component in y direction\n", - "\n", - "class TreeNode:\n", - " def __init__(self, x, y, width, height):\n", - " \"\"\"Initialize a TreeNode representing a quadrant in the Quadtree.\n", - "\n", - " Args:\n", - " x (float): x-coordinate of the node.\n", - " y (float): y-coordinate of the node.\n", - " width (float): Width of the node.\n", - " height (float): Height of the node.\n", - " \"\"\"\n", - " self.x = x\n", - " self.y = y\n", - " self.width = width\n", - " self.height = height\n", - " self.particle = None # Particle contained in this node\n", - " self.children = np.empty(4, dtype=object) # Children nodes (NW, NE, SW, SE)\n", - "\n", - " def contains(self, particle):\n", - " \"\"\"Check if the particle is within the bounds of this node.\n", - " \n", - " Args:\n", - " particle (Particle): The particle to be checked.\n", - "\n", - " Returns:\n", - " bool: True if the particle is within the node's bounds, False otherwise.\n", - " \"\"\"\n", - " return (\n", - " self.x <= particle.x < self.x + self.width and\n", - " self.y <= particle.y < self.y + self.height\n", - " )\n", - "\n", - " def insert(self, particle):\n", - " \"\"\"Insert a particle into the Quadtree.\n", - " \n", - " Args:\n", - " particle (Particle): The particle to be inserted.\n", - "\n", - " Returns:\n", - " bool: True if the particle is inserted, False otherwise.\n", - " \"\"\"\n", - " if not self.contains(particle):\n", - " return False # Particle doesn't belong in this node\n", - " \n", - " if self.particle is None:\n", - " self.particle = particle\n", - " return True # Particle inserted in an empty node\n", - " \n", - " if all(child is None for child in self.children):\n", - " # If no children exist, create and insert both particles\n", - " self.subdivide()\n", - " self.insert(self.particle) # Reinsert existing particle\n", - " self.insert(particle) # Insert new particle\n", - " self.particle = None # Clear particle from this node\n", - " else:\n", - " quad_index = self.get_quadrant(particle)\n", - " if self.children[quad_index] is None:\n", - " # Create a child node if it doesn't exist\n", - " self.children[quad_index] = TreeNode(\n", - " self.x + (quad_index % 2) * (self.width / 2),\n", - " self.y + (quad_index // 2) * (self.height / 2),\n", - " self.width / 2,\n", - " self.height / 2\n", - " )\n", - " self.children[quad_index].insert(particle)\n", - "\n", - " def subdivide(self):\n", - " \"\"\"Subdivide the node into four quadrants.\"\"\"\n", - " sub_width = self.width / 2\n", - " sub_height = self.height / 2\n", - " self.children[0] = TreeNode(self.x, self.y, sub_width, sub_height) # NW\n", - " self.children[1] = TreeNode(self.x + sub_width, self.y, sub_width, sub_height) # NE\n", - " self.children[2] = TreeNode(self.x, self.y + sub_height, sub_width, sub_height) # SW\n", - " self.children[3] = TreeNode(self.x + sub_width, self.y + sub_height, sub_width, sub_height) # SE\n", - "\n", - " def get_quadrant(self, particle):\n", - " \"\"\"Determine the quadrant index for a particle based on its position.\n", - " \n", - " Args:\n", - " particle (Particle): The particle to determine the quadrant index for.\n", - "\n", - " Returns:\n", - " int: Quadrant index (0 for NW, 1 for NE, 2 for SW, 3 for SE).\n", - " \"\"\"\n", - " mid_x = self.x + self.width / 2\n", - " mid_y = self.y + self.height / 2\n", - " quad_index = (particle.x >= mid_x) + 2 * (particle.y >= mid_y)\n", - " return quad_index\n", - " \n", - " def print_tree(self, depth=0):\n", - " \"\"\"Print the structure of the Quadtree.\n", - " \n", - " Args:\n", - " depth (int): Current depth in the tree (for indentation in print).\n", - " \"\"\"\n", - " if self.particle:\n", - " print(f\"{' ' * depth}Particle at ({self.particle.x}, {self.particle.y})\")\n", - " else:\n", - " print(f\"{' ' * depth}Node ({self.x}, {self.y}) - Width: {self.width}, Height: {self.height}\")\n", - " for child in self.children:\n", - " if child:\n", - " child.print_tree(depth + 2)\n", - " \n", - " def ComputeMassDistribution(self):\n", - " \"\"\"Compute the mass distribution for the tree nodes.\n", - "\n", - " This function calculates the total mass and the center of mass\n", - " for each node in the Quadtree. It's a recursive function that\n", - " computes the mass distribution starting from the current node.\n", - "\n", - " Note:\n", - " This method modifies the 'mass' and 'center_of_mass' attributes\n", - " for each node in the Quadtree.\n", - "\n", - " Returns:\n", - " None\n", - " \"\"\"\n", - " if self.particle is not None:\n", - " # Node contains only one particle\n", - " self.center_of_mass = np.array([self.particle.x, self.particle.y])\n", - " self.mass = self.particle.mass\n", - " else:\n", - " total_mass = 0\n", - " center_of_mass_accumulator = np.array([0.0, 0.0])\n", - "\n", - " for child in self.children:\n", - " if child is not None:\n", - " # Recursively compute mass distribution for child nodes\n", - " child.ComputeMassDistribution()\n", - " total_mass += child.mass\n", - " center_of_mass_accumulator += child.mass * child.center_of_mass\n", - "\n", - " if total_mass > 0:\n", - " self.center_of_mass = center_of_mass_accumulator / total_mass\n", - " self.mass = total_mass\n", - " else:\n", - " # If total mass is 0 or no child nodes have mass, set values to default\n", - " self.center_of_mass = np.array([0.0, 0.0])\n", - " self.mass = 0\n", - " \n", - " \n", - " def CalculateForceFromTree(self, target_particle, theta=1.0):\n", - " \"\"\"Calculate the force on a target particle using the Barnes-Hut algorithm.\n", - "\n", - " Args:\n", - " target_particle (Particle): The particle for which the force is calculated.\n", - " theta (float): The Barnes-Hut criterion for force approximation.\n", - "\n", - " Returns:\n", - " np.ndarray: The total force acting on the target particle.\n", - " \"\"\"\n", - " total_force = np.array([0.0, 0.0])\n", - "\n", - " if self.particle is not None:\n", - " # Node contains only one particle\n", - " if self.particle != target_particle:\n", - " # Calculate gravitational force between target_particle and node's particle\n", - " force = self.GravitationalForce(target_particle, self.particle)\n", - " total_force += force\n", - " else:\n", - " r = np.linalg.norm(np.array([target_particle.x, target_particle.y]) - self.center_of_mass)\n", - " d = max(self.width, self.height)\n", - "\n", - " if d / r < theta:\n", - " # Calculate gravitational force between target_particle and node\n", - " force = self.GravitationalForce(target_particle, self)\n", - " total_force += force\n", - " else:\n", - " for child in self.children:\n", - " if child is not None:\n", - " # Recursively calculate force from child nodes\n", - " if target_particle is not None: # Check if the target_particle is not None\n", - " force = child.CalculateForce(target_particle, self.particle)\n", - " total_force += force\n", - "\n", - " return total_force\n", - "\n", - " def CalculateForce(self, target_particle, particle):\n", - " \"\"\"Calculate the gravitational force between two particles.\n", - "\n", - " Args:\n", - " target_particle (Particle): The particle for which the force is calculated.\n", - " particle (Particle): The particle exerting the force.\n", - "\n", - " Returns:\n", - " np.ndarray: The force vector acting on the target particle due to 'particle'.\n", - " \"\"\"\n", - " force = np.array([0.0, 0.0])\n", - "\n", - " if self.particle is not None:\n", - " # Node contains only one particle\n", - " if self.particle != target_particle:\n", - " # Calculate gravitational force between target_particle and node's particle\n", - " force = self.GravitationalForce(target_particle, self.particle)\n", - " else:\n", - " if target_particle is not None and particle is not None: # Check if both particles are not None\n", - " r = np.linalg.norm(np.array([target_particle.x, target_particle.y]) - np.array([particle.x, particle.y]))\n", - " d = max(self.width, self.height)\n", - "\n", - " if d / r < theta:\n", - " # Calculate gravitational force between target_particle and particle\n", - " force = self.GravitationalForce(target_particle, particle)\n", - " else:\n", - " for child in self.children:\n", - " if child is not None:\n", - " # Recursively calculate force from child nodes\n", - " force += child.CalculateForce(target_particle, particle)\n", - " return force\n", - "\n", - " def GravitationalForce(self, particle1, particle2):\n", - " \"\"\"Calculate the gravitational force between two particles.\n", - "\n", - " Args:\n", - " particle1 (Particle): First particle.\n", - " particle2 (Particle): Second particle.\n", - "\n", - " Returns:\n", - " np.ndarray: The gravitational force vector between particle1 and particle2.\n", - " \"\"\"\n", - " G = 6.674 * (10 ** -11) # Gravitational constant\n", - "\n", - " dx = particle2.x - particle1.x\n", - " dy = particle2.y - particle1.y\n", - " r = np.sqrt(dx ** 2 + dy ** 2)\n", - "\n", - " force_magnitude = G * particle1.mass * particle2.mass / (r ** 2)\n", - " force_x = force_magnitude * (dx / r)\n", - " force_y = force_magnitude * (dy / r)\n", - "\n", - " return np.array([force_x, force_y])\n", - "\n", - " # Helper method to retrieve all particles in the subtree\n", - " def particles_in_subtree(self):\n", - " \"\"\"Retrieve all particles in the subtree rooted at this node.\n", - "\n", - " Returns:\n", - " list: A list of particles in the subtree rooted at this node.\n", - " \"\"\"\n", - " particles = []\n", - " if self.particle is not None:\n", - " particles.append(self.particle)\n", - " else:\n", - " for child in self.children:\n", - " if child is not None:\n", - " particles.extend(child.particles_in_subtree())\n", - " return particles\n", - " \n", - " def compute_center_of_mass(self):\n", - " \"\"\"Compute the center of mass for the node.\"\"\"\n", - " if self.particle is not None:\n", - " self.center_of_mass = np.array([self.particle.x, self.particle.y])\n", - " self.mass = self.particle.mass\n", - " else:\n", - " total_mass = 0\n", - " center_of_mass_accumulator = np.array([0.0, 0.0])\n", - "\n", - " for child in self.children:\n", - " if child is not None:\n", - " child.compute_center_of_mass()\n", - " total_mass += child.mass\n", - " center_of_mass_accumulator += child.mass * child.center_of_mass\n", - "\n", - " if total_mass > 0:\n", - " self.center_of_mass = center_of_mass_accumulator / total_mass\n", - " self.mass = total_mass\n", - " else:\n", - " self.center_of_mass = np.array([0.0, 0.0])\n", - " self.mass = 0" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "c67d18fb", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "## Example usage to print a Quadtree\n", - "#if __name__ == \"__main__\":\n", - "# # Create MainApp instance\n", - "# main_app = MainApp()\n", - "# \n", - "# # Assume particles is a list of Particle objects\n", - "# particles = [\n", - "# Particle(2, 3, 6),\n", - "# Particle(5, 8, 7)\n", - "# # Add more particles as needed\n", - "# ]\n", - "#\n", - "# # Build the tree and insert particles into the tree\n", - "# main_app.BuildTree(particles)\n", - "# \n", - "# # Print the tree structure\n", - "# main_app.rootNode.print_tree()\n", - "#" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c8346e11", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------------------------------------------------\n", - "------------------------------------------------------------------------------------------------------\n", - "For a number of particles of 1\n", - "------------------------------------------------------------------------------------------------------\n", - "------------------------------------------------------------------------------------------------------\n", - "Force acting on Particle at (74.56463076246638, 6.906209232397509) with mass 19.89924212875771: [0. 0.]\n", - "------------------------------------------------------------------------------------------------------\n", - "------------------------------------------------------------------------------------------------------\n", - "For a number of particles of 2\n", - "------------------------------------------------------------------------------------------------------\n", - "------------------------------------------------------------------------------------------------------\n", - "Force acting on Particle at (81.4272003461537, 62.70410067506936) with mass 53.185729711240825: [0. 0.]\n", - "Force acting on Particle at (78.12506145634948, 60.62553961062152) with mass 23.394019871732176: [0. 0.]\n", - "------------------------------------------------------------------------------------------------------\n", - "------------------------------------------------------------------------------------------------------\n", - "For a number of particles of 10\n", - "------------------------------------------------------------------------------------------------------\n", - "------------------------------------------------------------------------------------------------------\n", - "Force acting on Particle at (33.03374784543573, 78.70239104714734) with mass 39.12431179246999: [-2.17791977e-12 -4.37887662e-12]\n", - "Force acting on Particle at (62.410445179942556, 36.993647843909805) with mass 79.52916571118476: [-3.54932931e-12 1.41860570e-12]\n", - "Force acting on Particle at (20.60049164793033, 53.70436509807257) with mass 1.4599484802493734: [0. 0.]\n", - "Force acting on Particle at (66.46217192203491, 67.02888094660605) with mass 99.92903158978697: [-4.09943646e-12 -1.19103805e-12]\n", - "Force acting on Particle at (72.31063598968885, 10.312046240535732) with mass 99.04687342752338: [-1.62235419e-12 1.36139072e-12]\n", - "Force acting on Particle at (50.22312704523462, 65.55695113647776) with mass 38.57583433445815: [-3.42808134e-12 -1.37164126e-12]\n", - "Force acting on Particle at (52.479723791897, 95.13842567009988) with mass 61.85066957849694: [-1.34462325e-12 -1.74763310e-12]\n", - "Force acting on Particle at (19.23765603252655, 79.76671179748809) with mass 61.23315824784954: [ 4.57440330e-13 -8.74791379e-12]\n", - "Force acting on Particle at (42.69648104341497, 1.4350183231642832) with mass 22.145463072292294: [-2.60899917e-13 6.17173914e-13]\n", - "Force acting on Particle at (49.919307188067094, 10.285790202280332) with mass 67.09565853025778: [-1.33292797e-12 1.97394854e-12]\n", - "------------------------------------------------------------------------------------------------------\n", - "------------------------------------------------------------------------------------------------------\n", - "For a number of particles of 50\n", - "------------------------------------------------------------------------------------------------------\n", - "------------------------------------------------------------------------------------------------------\n", - "Force acting on Particle at (35.45142115274027, 49.56561238548506) with mass 7.236588739463334: [-9.24093458e-12 1.69004426e-11]\n", - "Force acting on Particle at (60.2336053514662, 18.397011638876947) with mass 30.267834444040208: [-5.12340728e-12 7.25138688e-12]\n", - "Force acting on Particle at (26.003981667472054, 66.84372509137935) with mass 15.46578758345838: [0. 0.]\n", - "Force acting on Particle at (57.21444394116245, 35.4570415053603) with mass 62.2245784212584: [-2.31151461e-11 2.32456594e-11]\n", - "Force acting on Particle at (78.22998478914236, 14.467261101186624) with mass 75.67656369810099: [-1.00814802e-11 1.01105245e-11]\n", - "Force acting on Particle at (28.393308115199677, 59.262468841967944) with mass 73.51267456734574: [-3.60978977e-10 1.14537472e-09]\n", - "Force acting on Particle at (94.16892844446107, 17.959086297672577) with mass 94.33183658315484: [-1.12453595e-11 8.06463385e-12]\n", - "Force acting on Particle at (9.608486306368247, 66.07218366466196) with mass 69.5686957372353: [2.66245341e-10 1.25290091e-11]\n", - "Force acting on Particle at (60.399939829100965, 92.96963435077751) with mass 16.684002096338123: [-7.35059260e-12 -5.58324075e-12]\n", - "Force acting on Particle at (87.78174112483069, 86.64050476332903) with mass 31.03620595073533: [-7.24907974e-12 -2.32297894e-12]\n", - "Force acting on Particle at (94.0372573367075, 65.79043512141374) with mass 52.07921974095594: [-1.16097755e-11 1.79742339e-13]\n", - "Force acting on Particle at (72.0242182631267, 69.48530618775067) with mass 0.9054365668925923: [-4.39112431e-13 -2.52052397e-14]\n", - "Force acting on Particle at (54.84322905813651, 61.67187365055968) with mass 49.171182803974546: [-5.81942578e-11 1.04361966e-11]\n", - "Force acting on Particle at (22.35383130841052, 64.78915693357972) with mass 97.96476522936157: [5.02243687e-09 2.82699008e-09]\n", - "Force acting on Particle at (67.5448252440524, 45.59951644185082) with mass 8.93777284613103: [-3.77300835e-12 1.92953657e-12]\n", - "Force acting on Particle at (3.1495827160976764, 42.40415043041258) with mass 42.315123873091956: [2.66452506e-11 2.84933589e-11]\n", - "Force acting on Particle at (86.04976396261627, 64.90878701854736) with mass 1.8399147863228604: [-5.25914113e-13 1.69472559e-14]\n", - "Force acting on Particle at (93.11546438789213, 97.10192142580001) with mass 57.275624942470095: [-9.94454538e-12 -4.48364415e-12]\n", - "Force acting on Particle at (37.86997405724545, 21.047117328868225) with mass 70.34611245039606: [-8.13718407e-12 3.14053317e-11]\n", - "Force acting on Particle at (53.46506645753685, 55.6513005165933) with mass 86.81846964058886: [-9.43674104e-11 3.84617043e-11]\n", - "Force acting on Particle at (10.504691758600037, 57.68189509926539) with mass 3.3916650676047544: [9.29671605e-12 5.49540866e-12]\n", - "Force acting on Particle at (63.39147876007621, 20.118824783781974) with mass 7.116877406455124: [-1.28162254e-12 1.60170351e-12]\n", - "Force acting on Particle at (43.33434532328132, 31.186248469242706) with mass 89.69546575623959: [-2.57478912e-11 5.29766627e-11]\n", - "Force acting on Particle at (52.3494081883229, 21.029444064539128) with mass 51.2448658018987: [-9.44061904e-12 1.64170876e-11]\n", - "Force acting on Particle at (62.17418903154424, 49.162174833292106) with mass 45.19611269147927: [-2.58563670e-11 1.26397023e-11]\n", - "Force acting on Particle at (76.60800338140592, 68.38170015367524) with mass 6.808820471120969: [-2.74068173e-12 -8.32957541e-14]\n", - "Force acting on Particle at (1.5578374365533443, 54.57480292934884) with mass 83.59918566071954: [1.03085120e-10 5.17359018e-11]\n", - "Force acting on Particle at (20.14554844700306, 78.9881569668016) with mass 67.7243392807446: [ 1.67056490e-10 -3.46305247e-10]\n", - "Force acting on Particle at (94.33178423020266, 85.65914001990694) with mass 84.43016879295982: [-1.67280917e-11 -4.60641167e-12]\n", - "Force acting on Particle at (22.779724826478, 44.53175862750225) with mass 7.83848332559145: [2.27689338e-12 1.57561793e-11]\n", - "Force acting on Particle at (77.50377333568798, 35.931171736074816) with mass 32.108706573707046: [-7.87626334e-12 4.72769700e-12]\n", - "Force acting on Particle at (61.75478631139598, 36.70782557381421) with mass 33.830274983692554: [-1.22120115e-11 1.02940326e-11]\n", - "Force acting on Particle at (93.06731153981117, 38.50497160662753) with mass 57.96742163721138: [-1.03978332e-11 4.39378169e-12]\n", - "Force acting on Particle at (18.968036289342717, 9.050899172262316) with mass 18.096653222336347: [6.65997467e-13 5.47046255e-12]\n", - "Force acting on Particle at (38.27988997740302, 6.930435601203399) with mass 86.14377219446978: [-4.77173236e-12 2.32887193e-11]\n", - "Force acting on Particle at (53.42871002009605, 54.139772318659375) with mass 65.52778375616708: [-6.71829161e-11 3.11211321e-11]\n", - "Force acting on Particle at (42.75050852335831, 16.72701139304873) with mass 81.26007889287095: [-9.52042885e-12 2.84914365e-11]\n", - "Force acting on Particle at (41.6226254453246, 17.557265194780292) with mass 51.477996165491206: [-6.00483501e-12 1.89489602e-11]\n", - "Force acting on Particle at (78.56924736717811, 44.050969346839366) with mass 57.98977689860628: [-1.67293185e-11 7.25397779e-12]\n", - "Force acting on Particle at (18.5725788820298, 99.69022925742964) with mass 90.45871675388109: [ 1.81673577e-11 -8.02989970e-11]\n", - "Force acting on Particle at (80.70532595168484, 11.622265572819435) with mass 96.87208949928677: [-1.16472106e-11 1.17579554e-11]\n", - "Force acting on Particle at (23.66247841083141, 36.81393618136266) with mass 71.65033333847212: [6.33673845e-12 8.12686967e-11]\n", - "Force acting on Particle at (28.252213806706216, 44.86539913569324) with mass 91.90502239442104: [-1.97776012e-11 1.93342385e-10]\n", - "Force acting on Particle at (34.443253768385965, 64.3770775580939) with mass 10.200809736793703: [-1.30731701e-10 3.82105261e-11]\n", - "Force acting on Particle at (64.2372881037899, 9.913307645226755) with mass 17.29824275752252: [-2.1166998e-12 3.1518227e-12]\n", - "Force acting on Particle at (25.92180718125445, 86.90424190484984) with mass 15.397030760336305: [ 1.61768864e-13 -3.94911749e-11]\n", - "Force acting on Particle at (76.88885931734376, 8.213610956566963) with mass 19.41361037682746: [-2.17935173e-12 2.51107296e-12]\n", - "Force acting on Particle at (76.49848673630497, 82.96935946158509) with mass 5.835057348415285: [-2.04197466e-12 -6.52113268e-13]\n", - "Force acting on Particle at (92.09473269649278, 91.7444349651748) with mass 35.6200467998046: [-6.89762334e-12 -2.59878599e-12]\n", - "Force acting on Particle at (89.66165653800994, 78.32048037011037) with mass 21.263463301326325: [-5.16241713e-12 -9.30725134e-13]\n", - "------------------------------------------------------------------------------------------------------\n", - "------------------------------------------------------------------------------------------------------\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "\n", - "# Function to generate random particles\n", - "def generate_random_particles(num_particles):\n", - " particles = []\n", - " for _ in range(num_particles):\n", - " # Generate random positions and masses for particles within a 2D space (e.g., 0 to 100)\n", - " x = np.random.uniform(0, 100)\n", - " y = np.random.uniform(0, 100)\n", - " m = np.random.uniform(0, 100)\n", - " particles.append(Particle(x, y, m))\n", - " return particles\n", - "\n", - "print(\"------------------------------------------------------------------------------------------------------\")\n", - "print(\"------------------------------------------------------------------------------------------------------\")\n", - "\n", - "for num_particles in [1, 2, 10, 50]: # num_particles is Number of particles for testing\n", - " \n", - " \n", - "\n", - " print(\"For a number of particles of \", num_particles)\n", - " print(\"------------------------------------------------------------------------------------------------------\")\n", - " print(\"------------------------------------------------------------------------------------------------------\")\n", - " # Constants\n", - " theta = 1.0 # Threshold value for Barnes-Hut algorithm\n", - "\n", - " # Generate random particles\n", - " particles = generate_random_particles(num_particles)\n", - "\n", - " # Create MainApp instance and build the Quadtree\n", - " main_app = MainApp()\n", - " main_app.BuildTree(particles)\n", - "\n", - " # Compute mass distribution in the Quadtree\n", - " main_app.rootNode.ComputeMassDistribution() \n", - "\n", - " # Calculate forces for each particle using the Quadtree\n", - " for particle in particles:\n", - " force = main_app.rootNode.CalculateForceFromTree(particle, theta) \n", - " print(f\"Force acting on Particle at ({particle.x}, {particle.y}) with mass {particle.mass}: {force}\")\n", - " print(\"------------------------------------------------------------------------------------------------------\")\n", - " print(\"------------------------------------------------------------------------------------------------------\")" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "b1a69d89", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------------------------------------------------------------------------------------------------\n", - "-------------------------------------------N=1--------------------------------------------------------\n", - "Particle 1: Position (45.47182650048941, 19.164866929262928)\n", - "------------------------------------------------------------------------------------------------------\n", - "-------------------------------------------N=2--------------------------------------------------------\n", - "Particle 1: Position (-40.97015128373243, 0.9402447337451747)\n", - "Particle 2: Position (-35.26643844292876, 4.051922306505475)\n", - "------------------------------------------------------------------------------------------------------\n", - "-------------------------------------------N=10--------------------------------------------------------\n", - "Particle 1: Position (22.601824973744428, -22.139566971282488)\n", - "Particle 2: Position (-20.942963971828156, 28.172503518778683)\n", - "Particle 3: Position (49.203620099238165, -28.652244666003856)\n", - "Particle 4: Position (24.527049843855266, -0.13981241183558524)\n", - "Particle 5: Position (19.204629054955205, 5.016205018612311)\n", - "Particle 6: Position (10.674374183501634, -0.3803023777418133)\n", - "Particle 7: Position (-31.726697141472414, 40.621254262087774)\n", - "Particle 8: Position (-8.43602785748412, -23.80607609654031)\n", - "Particle 9: Position (49.40014407186145, -24.57208746912204)\n", - "Particle 10: Position (28.221781433388344, 26.12357524604296)\n", - "------------------------------------------------------------------------------------------------------\n", - "-------------------------------------------N=50--------------------------------------------------------\n", - "Particle 1: Position (6.830345780045539, -0.06679465051256032)\n", - "Particle 2: Position (-29.159991653258174, -17.345497384301144)\n", - "Particle 3: Position (-16.84675401981263, 5.109903295490182)\n", - "Particle 4: Position (-14.29635474405375, -8.280679973232045)\n", - "Particle 5: Position (41.30065953975843, 15.757669827479715)\n", - "Particle 6: Position (-29.746742109672244, -35.97803882014555)\n", - "Particle 7: Position (30.352325374530395, 8.397744785170154)\n", - "Particle 8: Position (11.557542518902917, -28.578471993154)\n", - "Particle 9: Position (-12.407332039980155, -6.0727299190681645)\n", - "Particle 10: Position (-33.97446952376383, 25.96785373063916)\n", - "Particle 11: Position (48.41275414987703, 23.107234974673247)\n", - "Particle 12: Position (31.956005480100412, -38.661839707258565)\n", - "Particle 13: Position (17.92307619837208, -25.23086227990997)\n", - "Particle 14: Position (-5.547528339610541, -31.08449101724675)\n", - "Particle 15: Position (-30.006379754808357, 24.49373699177535)\n", - "Particle 16: Position (25.163769884687074, 44.86664649817865)\n", - "Particle 17: Position (33.395974030995255, -12.768816338284157)\n", - "Particle 18: Position (-42.16773327205995, 34.18955540492542)\n", - "Particle 19: Position (-31.58352664668073, -10.55001361490448)\n", - "Particle 20: Position (-45.253225645109005, -48.93746074770144)\n", - "Particle 21: Position (-3.8851323837279246, -46.658350409633584)\n", - "Particle 22: Position (-17.862295372445065, -30.230697228634288)\n", - "Particle 23: Position (-9.35288257704517, 2.2220707419498913)\n", - "Particle 24: Position (-40.700267735210964, -19.810831625858995)\n", - "Particle 25: Position (-40.66577025130666, -5.55913053682143)\n", - "Particle 26: Position (4.199010862373322, -15.976112558175613)\n", - "Particle 27: Position (49.09565024285551, -3.0987404460427475)\n", - "Particle 28: Position (-32.135581090443495, 47.67118537180363)\n", - "Particle 29: Position (-24.302359443838093, 4.957021167841554)\n", - "Particle 30: Position (-11.928862749029825, 33.10033861465119)\n", - "Particle 31: Position (2.6810358071856655, -26.017529907270344)\n", - "Particle 32: Position (-11.475559644268262, 2.1313202432253306)\n", - "Particle 33: Position (-12.275247747772143, -18.218135776735025)\n", - "Particle 34: Position (3.5790639389137433, -11.513906187320613)\n", - "Particle 35: Position (27.876808416300317, -20.126919218420447)\n", - "Particle 36: Position (-38.050326505020536, 24.384428234698635)\n", - "Particle 37: Position (-35.93797646073961, -49.06363598457781)\n", - "Particle 38: Position (-11.90703114382469, -10.740498472469937)\n", - "Particle 39: Position (-23.06283423425168, 44.50934691597386)\n", - "Particle 40: Position (-12.265969934017845, 28.918145362071368)\n", - "Particle 41: Position (-37.21553458367589, 48.98895266348999)\n", - "Particle 42: Position (12.02422075548042, 31.515691926217162)\n", - "Particle 43: Position (0.554206243012868, 33.26719427549813)\n", - "Particle 44: Position (-10.64759523308492, 27.930601717086)\n", - "Particle 45: Position (-15.222280088066617, 24.593718323159596)\n", - "Particle 46: Position (-32.1019668646242, 33.30748360413854)\n", - "Particle 47: Position (16.213491239376253, -32.97470644853635)\n", - "Particle 48: Position (-30.503728275971554, -38.174241051965176)\n", - "Particle 49: Position (32.56361747749074, -13.141096726272051)\n", - "Particle 50: Position (25.045544766877573, 26.918865587570775)\n" - ] - } - ], - "source": [ - "# Simulation class for galaxy collision using Barnes-Hut and Euler method\n", - "class GalaxyCollisionSimulation:\n", - " def __init__(self, num_particles):\n", - " # Initialize the simulation with a given number of particles\n", - " self.num_particles = num_particles\n", - " self.particles = self.initialize_particles() # Generate random particles\n", - " self.barnes_hut = MainApp() # Initialize Barnes-Hut algorithm instance\n", - " self.barnes_hut.BuildTree(self.particles) # Build the Barnes-Hut tree with particles\n", - " self.barnes_hut.rootNode.compute_center_of_mass() #Compute the center of mass of the node\n", - "\n", - " def initialize_particles(self):\n", - " # Generate random particles within a specified range\n", - " particles = []\n", - " for _ in range(self.num_particles):\n", - " x = np.random.uniform(-50, 50)\n", - " y = np.random.uniform(-50, 50)\n", - " mass = np.random.uniform(1, 10)\n", - " particles.append(Particle(x, y, mass))\n", - " return particles\n", - "\n", - " def simulate(self, num_steps, time_step):\n", - " # Simulate the galaxy collision for a certain number of steps\n", - " for step in range(num_steps):\n", - " self.calculate_forces() # Calculate forces acting on each particle\n", - " self.integrate(time_step) # Integrate to update particle positions\n", - "\n", - " def calculate_forces(self):\n", - " # Calculate forces acting on each particle using Barnes-Hut algorithm\n", - " for particle in self.particles:\n", - " force = self.barnes_hut.rootNode.CalculateForceFromTree(particle)\n", - " particle.fx, particle.fy = force\n", - "\n", - " def integrate(self, time_step):\n", - " # Integrate to update particle positions based on calculated forces\n", - " for particle in self.particles:\n", - " particle.vx += particle.fx * time_step / particle.mass # Update velocity components\n", - " particle.vy += particle.fy * time_step / particle.mass\n", - " particle.x += particle.vx * time_step # Update particle positions using velocity\n", - " particle.y += particle.vy * time_step\n", - "\n", - " def print_particle_positions(self):\n", - " # Print the final positions of all particles after simulation\n", - " for i, particle in enumerate(self.particles):\n", - " print(f\"Particle {i + 1}: Position ({particle.x}, {particle.y})\")\n", - "\n", - "print(\"------------------------------------------------------------------------------------------------------\")\n", - "print(\"-------------------------------------------N=1--------------------------------------------------------\")\n", - "num_particles = 1\n", - "simulation = GalaxyCollisionSimulation(num_particles)\n", - "simulation.simulate(num_steps=1000, time_step=0.1)\n", - "simulation.print_particle_positions()\n", - "\n", - "print(\"------------------------------------------------------------------------------------------------------\")\n", - "print(\"-------------------------------------------N=2--------------------------------------------------------\")\n", - "num_particles = 2\n", - "simulation = GalaxyCollisionSimulation(num_particles)\n", - "simulation.simulate(num_steps=1000, time_step=0.1)\n", - "simulation.print_particle_positions()\n", - "\n", - "print(\"------------------------------------------------------------------------------------------------------\")\n", - "print(\"-------------------------------------------N=10--------------------------------------------------------\")\n", - "num_particles = 10\n", - "simulation = GalaxyCollisionSimulation(num_particles)\n", - "simulation.simulate(num_steps=1000, time_step=0.1)\n", - "simulation.print_particle_positions()\n", - "\n", - "print(\"------------------------------------------------------------------------------------------------------\")\n", - "print(\"-------------------------------------------N=50--------------------------------------------------------\")\n", - "num_particles = 50\n", - "simulation = GalaxyCollisionSimulation(num_particles)\n", - "simulation.simulate(num_steps=1000, time_step=0.1)\n", - "simulation.print_particle_positions()\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "f46d3b7d", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-42.29236774212642\n", - "-36.75923168190073\n", - "41.852990184297056\n", - "14.240572670477604\n", - "34.354187506325914\n", - "1.1445054729335666\n", - "10.369152572003571\n", - "-14.283798410764867\n", - "28.354350405913934\n", - "37.16064469864911\n", - "-23.455267907602074\n", - "37.828863896848134\n", - "45.22768227885496\n", - "-25.00539958813013\n", - "39.72355418752896\n", - "-31.20785585434448\n", - "49.391368799833955\n", - "14.539309886625816\n", - "29.36448530569838\n", - "48.16256179498589\n" - ] - }, - { - "data": { - "image/png": "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6oknntCIESNqFGAu50Cu9QEAwHdc/ty+1nyOTwSf6ggMDNRHH32k0aNHq0ePHgoODlZqamqlt75X5dy5c5LEtT4AAPigc+fOKSws7KrjPnGqy53KysqUn5+vkJCQKi+KrkuXrzPKy8vjdJuHcSy8A8fBe3AsvAPHoSLLsnTu3DlFR0crIODq9275zYxPbQkICHCePvO00NBQ/kJ7CY6Fd+A4eA+OhXfgOLiqaqbnMp95gCEAAMDPRfABAADGIPh4oaCgIE2fPl1BQUGebsV4HAvvwHHwHhwL78Bx+Om4uBkAABiDGR8AAGAMgg8AADAGwQcAABiD4AMAAIxB8PFSpaWlio+Pl81m0/79+13GcnNzNXDgQDVs2FBNmjTR448/rosXL3qmUT91/PhxPfzww2rbtq2Cg4PVrl07TZ8+vcLvmWPhHgsXLlTbtm113XXXqXPnzvr444893ZJfS0tL06233qqQkBA1a9ZM99xzj7744guXbSzL0owZMxQdHa3g4GD16tVLhw4d8lDHZkhLS5PNZtP48eOdNY5DzRF8vNSkSZMUHR1doe5wONS/f3+dP39en3zyiZYtW6b3339fEydO9ECX/uvzzz9XWVmZXnvtNR06dEjz5s3Tq6++qmeeeca5DcfCPZYvX67x48drypQp2rdvn37961+rb9++ys3N9XRrfmvLli0aM2aMdu7cqY0bN+rSpUtKTEzU+fPnndvMnj1bL730khYsWKBdu3YpKipKd999t/P7DlG7du3apcWLF6tTp04udY7DT2DB66xZs8a68cYbrUOHDlmSrH379rmMBQQEWF9++aWzlp6ebgUFBVnFxcUe6NYcs2fPttq2betc51i4x2233WaNGjXKpXbjjTdaTz/9tIc6Ms/p06ctSdaWLVssy7KssrIyKyoqynr++eed23z//fdWWFiY9eqrr3qqTb917tw5y263Wxs3brR69uxpjRs3zrIsjsNPxYyPl/nqq680YsQIvf3222rQoEGF8R07diguLs5lNigpKUmlpaXas2ePO1s1TnFxsSIiIpzrHIu6d/HiRe3Zs0eJiYku9cTERG3fvt1DXZmnuLhYkpx//48dO6aCggKX4xIUFKSePXtyXOrAmDFj1L9/fyUkJLjUOQ4/DV9S6kUsy9Lw4cM1atQodenSRcePH6+wTUFBgSIjI11q4eHhql+/vgoKCtzUqXlycnI0f/58zZ0711njWNS9M2fOyOFwVPg9R0ZG8jt2E8uyNGHCBN1xxx2Ki4uTJOfvvrLjcuLECbf36M+WLVumPXv2aPfu3RXGOA4/DTM+bjBjxgzZbLYql927d2v+/PkqKSnR5MmTq9yfzWarULMsq9I6XFX3WPxYfn6+kpOTdd999+mRRx5xGeNYuMeVv09+x+4zduxYHTx4UOnp6RXGOC51Ky8vT+PGjdM777yj66677qrbcRxqhhkfNxg7dqyGDBlS5TZt2rTRc889p507d1b47pUuXbpo6NChWrp0qaKiovTPf/7TZbyoqEg//PBDhdSPiqp7LC7Lz89X79691a1bNy1evNhlO45F3WvSpIkCAwMrzO6cPn2a37EbPPbYY/rwww+1detWtWjRwlmPioqSVD7j0Lx5c2ed41K79uzZo9OnT6tz587OmsPh0NatW7VgwQLnnXYchxry4PVFuMKJEyeszMxM57J+/XpLkrVixQorLy/Psqx/XVCbn5/vfN2yZcu4oLYOnDx50rLb7daQIUOsS5cuVRjnWLjHbbfdZj366KMutQ4dOnBxcx0qKyuzxowZY0VHR1tZWVmVjkdFRVkvvPCCs1ZaWspFtbWspKTE5TMhMzPT6tKli/XAAw9YmZmZHIefiODjxY4dO1bhrq5Lly5ZcXFxVp8+fay9e/daGRkZVosWLayxY8d6rlE/9OWXX1oxMTHWXXfdZZ08edI6deqUc7mMY+Eey5Yts/7t3/7N+p//+R/r8OHD1vjx462GDRtax48f93RrfuvRRx+1wsLCrM2bN7v83f/uu++c2zz//PNWWFiYtXLlSiszM9NKSUmxmjdvbpWUlHiwc//347u6LIvj8FMQfLxYZcHHsspnhvr3728FBwdbERER1tixY63vv//eM036qTfffNOSVOnyYxwL93jllVes1q1bW/Xr17d+9atfOW+rRt242t/9N99807lNWVmZNX36dCsqKsoKCgqy7rzzTiszM9NzTRviyuDDcag5m2VZlgfOsAEAALgdd3UBAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AGAK2zevFk2m03ffPONp1sBUMsIPgC8lsPhUPfu3TVo0CCXenFxsVq2bKn/+q//qpOf2717d506dUphYWF1sn8AnsOTmwF4tSNHjig+Pl6LFy/W0KFDJUkPPfSQDhw4oF27dql+/foe7hCAL2HGB4BXs9vtSktL02OPPab8/HytWrVKy5Yt09KlS68aep566inFxsaqQYMGuuGGGzR16lT98MMPkiTLspSQkKDk5GRd/n/fN998o1atWmnKlCmSKp7qOnHihAYOHKjw8HA1bNhQN998s9asWVP3bx5Aravn6QYA4Foee+wxffDBB3rooYeUmZmpadOmKT4+/qrbh4SE6C9/+Yuio6OVmZmpESNGKCQkRJMmTZLNZtPSpUvVsWNHvfzyyxo3bpxGjRqlyMhIzZgxo9L9jRkzRhcvXtTWrVvVsGFDHT58WI0aNaqbNwugTnGqC4BP+Pzzz9WhQwd17NhRe/fuVb161f9/25w5c7R8+XLt3r3bWfvf//1fPfjgg5owYYL+/Oc/a9++fYqNjZVUPuPTu3dvFRUVqXHjxurUqZMGDRqk6dOn1/r7AuBenOoC4BPeeOMNNWjQQMeOHdPJkyclSaNGjVKjRo2cy2UrVqzQHXfcoaioKDVq1EhTp05Vbm6uy/7uu+8+3XvvvUpLS9PcuXOdoacyjz/+uJ577jn16NFD06dP18GDB+vmTQKocwQfAF5vx44dmjdvnlatWqVu3brp4YcflmVZevbZZ7V//37nIkk7d+7UkCFD1LdvX61evVr79u3TlClTdPHiRZd9fvfdd9qzZ48CAwN15MiRKn/+I488oqNHj+rBBx9UZmamunTpovnz59fV2wVQhwg+ALzahQsXNGzYMI0cOVIJCQl6/fXXtWvXLr322mtq1qyZYmJinIskbdu2Ta1bt9aUKVPUpUsX2e12nThxosJ+J06cqICAAK1du1Yvv/yyNm3aVGUfLVu21KhRo7Ry5UpNnDhRS5YsqZP3C6BuEXwAeLWnn35aZWVleuGFFyRJrVq10ty5c/Xkk0/q+PHjFbaPiYlRbm6uli1bppycHL388sv64IMPXLb56KOP9MYbb+idd97R3XffraefflrDhg1TUVFRpT2MHz9e69ev17Fjx7R3715t2rRJHTp0qPX3CqDucXEzAK+1ZcsW9enTR5s3b9Ydd9zhMpaUlKRLly4pIyNDNpvNZWzSpEl64403VFpaqv79+6tr166aMWOGvvnmG3399dfq2LGjxo0bp8mTJ0uSLl26pB49eqhNmzZavnx5hYubH3vsMa1du1YnT55UaGiokpOTNW/ePF1//fVu+10AqB0EHwAAYAxOdQEAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgjP8HEQOxIFJ06uEAAAAASUVORK5CYII=", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-42.29236774212642\n", - "-36.75923168190073\n", - "41.852990184297056\n", - "14.240572670477606\n", - "34.354187506325914\n", - "1.1445054729335673\n", - "10.369152572003571\n", - "-14.283798410764867\n", - "28.354350405913934\n", - "37.16064469864911\n", - "-23.455267907602074\n", - "37.828863896848134\n", - "45.22768227885496\n", - "-25.00539958813013\n", - "39.72355418752896\n", - "-31.20785585434448\n", - "49.391368799833955\n", - "14.539309886625816\n", - "29.36448530569838\n", - "48.16256179498588\n" - ] - }, - { - "data": { - "image/png": "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G4wdO1aDBg2qcJ/mzZvrxRdf1J49e8p990r79u01ePBgrVy5UlFRUfr73//usr2oqEg//vhjudSP8ip7Lq7Jz89Xjx491LFjRy1btsxlP85Fzatfv74CAwPLje6cO3eO37EbjBs3Th988IF27Nihxo0bO+tRUVGSHCMOjRo1ctY5L9Vr//79OnfunNq1a+es2e127dixQwsXLnTeacd5qCIPzi/CdU6fPm1lZmY6l02bNlmSrLVr11p5eXmWZf1jQm1+fr7zdatXr2ZCbQ04c+aMFRsbaw0aNMi6evVque2cC/d44IEHrFGjRrnUWrduzeTmGlRWVmaNGTPGio6OtrKysm64PSoqynr55ZedtdLSUibVVrOSkhKXz4TMzEyrffv21mOPPWZlZmZyHm4TwceLnTx5stxdXVevXrXi4+Otnj17WgcOHLAyMjKsxo0bW2PHjvVco37oq6++smJiYqzf/e531pkzZ6yzZ886l2s4F+6xevVq65/+6Z+s//qv/7KOHTtmTZw40apbt6516tQpT7fmt0aNGmWFhYVZ27Ztc/mz/9133zn3eemll6ywsDDr/ffftzIzM62UlBSrUaNGVklJiQc7938/vavLsjgPt4Pg48VuFHwsyzEy1KdPHys4ONiKiIiwxo4da/3www+eadJPrVixwpJ0w+WnOBfusWjRIqtZs2ZW7dq1rfvvv995WzVqxs3+7K9YscK5T1lZmTVjxgwrKirKCgoKsrp27WplZmZ6rmlDXB98OA9VZ7Msy/LAFTYAAAC3464uAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AcJ1t27bJZrPpm2++8XQrAKoZwQeA17Lb7erUqZMGDBjgUi8uLlaTJk30//7f/6uRn9upUyedPXtWYWFhNXJ8AJ7Dk5sBeLXjx4+rbdu2WrZsmQYPHixJevzxx3X48GHt3btXtWvX9nCHAHwJIz4AvFpsbKzS0tI0btw45efna926dVq9erVWrlx509DzzDPPKC4uTnXq1NHdd9+t6dOn68cff5QkWZalhIQEJScn69q/+7755hs1bdpU06ZNk1T+Utfp06fVr18/hYeHq27durr33nu1fv36mn/zAKpdLU83AAC3Mm7cOP31r3/V448/rszMTD3//PNq27btTfcPCQnRf//3fys6OlqZmZkaPny4QkJCNGXKFNlsNq1cuVJt2rTRa6+9pgkTJmjkyJGKjIzUzJkzb3i8MWPG6MqVK9qxY4fq1q2rY8eOqV69ejXzZgHUKC51AfAJX3zxhVq3bq02bdrowIEDqlWr8v9umzt3rtasWaN9+/Y5a//zP/+jIUOGaNKkSfrP//xPHTx4UHFxcZIcIz49evRQUVGR7rzzTt13330aMGCAZsyYUe3vC4B7cakLgE948803VadOHZ08eVJnzpyRJI0cOVL16tVzLtesXbtWXbp0UVRUlOrVq6fp06crNzfX5XiPPPKIHn74YaWlpWnevHnO0HMj48eP14svvqjOnTtrxowZOnLkSM28SQA1juADwOvt3r1b8+fP17p169SxY0c98cQTsixLL7zwgg4dOuRcJGnPnj0aNGiQevXqpQ8//FAHDx7UtGnTdOXKFZdjfvfdd9q/f78CAwN1/PjxCn/+k08+qRMnTmjIkCHKzMxU+/bttWDBgpp6uwBqEMEHgFf7/vvvNXToUI0YMUIJCQl64403tHfvXi1dulQNGzZUTEyMc5GkTz/9VM2aNdO0adPUvn17xcbG6vTp0+WOO3nyZAUEBGjDhg167bXXtHXr1gr7aNKkiUaOHKn3339fkydP1vLly2vk/QKoWQQfAF7t2WefVVlZmV5++WVJUtOmTTVv3jw9/fTTOnXqVLn9Y2JilJubq9WrVysnJ0evvfaa/vrXv7rs89FHH+nNN9/UqlWr9NBDD+nZZ5/V0KFDVVRUdMMeJk6cqE2bNunkyZM6cOCAtm7dqtatW1f7ewVQ85jcDMBrbd++XT179tS2bdvUpUsXl21JSUm6evWqMjIyZLPZXLZNmTJFb775pkpLS9WnTx916NBBM2fO1DfffKPz58+rTZs2mjBhgqZOnSpJunr1qjp37qzmzZtrzZo15SY3jxs3Ths2bNCZM2cUGhqq5ORkzZ8/X3fddZfbfhcAqgfBBwAAGINLXQAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAY4/8D7jl4C3+h4yIAAAAASUVORK5CYII=", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-42.29236774212642\n", - "-36.75923168190073\n", - "41.852990184297056\n", - "14.240572670477608\n", - "34.354187506325914\n", - "1.1445054729335684\n", - "10.369152572003571\n", - "-14.283798410764867\n", - "28.354350405913934\n", - "37.16064469864911\n", - "-23.455267907602074\n", - "37.828863896848134\n", - "45.22768227885496\n", - "-25.00539958813013\n", - "39.72355418752896\n", - "-31.20785585434448\n", - "49.391368799833955\n", - "14.539309886625817\n", - "29.36448530569838\n", - "48.16256179498587\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtf0lEQVR4nO3de1xVdb7/8fcGj4QKBJkg440EHAsdG53yNqkjAmrN8XQbwUznlEdTS4+WZR5Tm0ZKR23StLSTY02hnWrGTnklj5qpk9ckfRSCKCjiDQKzwtys3x/7x562IILBvn1fz8djPR6uz1p78dksH+633/Vda9ssy7IEAABggABPNwAAAOAuBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwC1YrPZarVs3rxZI0eOVLt27TzdsouCggKNHTtW8fHxCg4OVkREhDp16qRRo0apoKDAud+aNWs0c+ZMj/Vpt9s1f/58paSkqFWrVmrSpIk6duyop556Sl9//bXH+gL8hY2vrABQGzt37nRZ/8Mf/qD/+7//06ZNm1zqN998s86cOaOysjLdeuut7mzxio4fP65bb71V119/vSZPnqwOHTqotLRUhw4d0jvvvKM///nP6tOnjyRp/Pjxevnll+Wpfxq/+eYbRUdHKzU1VQMGDFDz5s21d+9ePffcc2rZsqV2796t4OBgj/QG+INGnm4AgG/o3r27y/qNN96ogICAKnVJCg0NdVdbtbJs2TKdPXtWn332mWJiYpz1IUOG6Omnn1ZFRYUHu3MVHBysvLw83XDDDc5a37591aZNG913331677339MADD3iwQ8C3cakLQL2r7lKXzWbT+PHjtXz5cnXo0EHBwcHq1q2bdu7cKcuyNHfuXMXExKhZs2b6zW9+o5ycnCrHzczMVP/+/RUaGqomTZqoV69e+vjjj6/az7lz5xQQEKAWLVpUuz0gIMDZ98svv+zst3I5evSoJMmyLC1evFhdunRRcHCwwsPDde+99+rIkSMux+vbt68SEhL0ySefqHv37goODtbPfvYzTZ8+XXa7vcZeAwMDXUJPpdtuu02SXC7LAag7gg8At/nwww/12muv6fnnn1dGRobOnz+vwYMHa/Lkyfr000+1aNEiLV26VIcOHdI999zjcrnpr3/9q5KSkhQaGqoVK1bonXfeUUREhJKTk68afnr06KGKigrdfffdWr9+vcrKyqrdb/r06br33nslSTt27HAuLVu2lCSNHj1aEydOVGJiov7+979r8eLFOnjwoHr27KlTp065HKuoqEhDhw7VsGHDtHr1at1777167rnnNGHChGv63VVeUrzllluu6fUA/j8LAK7BiBEjrKZNm15xW9u2bV1qkqyoqCjrm2++cdb+/ve/W5KsLl26WBUVFc76iy++aEmyDhw4YFmWZV24cMGKiIiw7rrrLpdj2u126xe/+IV122231dhrRUWFNXr0aCsgIMCSZNlsNqtjx47Wf/7nf1p5eXku+44bN86q7p/GHTt2WJKsefPmudQLCgqs4OBga8qUKc5anz59LEnW6tWrXfYdNWqUFRAQYB07dqzGfi93/PhxKzIy0urWrZtlt9vr9FoArhjxAeA2/fr1U9OmTZ3rHTt2lCQNHDhQNputSv3YsWOSpO3bt6u4uFgjRozQpUuXnEtFRYVSUlK0a9cuXbhw4Yo/12az6ZVXXtGRI0e0ePFi/f73v9cPP/ygBQsW6JZbbtGWLVuu2vuHH34om82mBx54wKWHqKgo/eIXv9DmzZtd9g8JCdFvf/tbl1paWpoqKiq0devWq/68SsXFxRo0aJAsy9KqVaucl+UAXBsmNwNwm4iICJf1xo0b11j//vvvJcl5GanyMlR1iouLXUJVddq2batHHnnEuf7OO+8oNTVVTzzxhD777LMaX3vq1ClZlqXIyMhqt990000u69XtFxUVJckx56g2SkpKNGDAAJ04cUKbNm2q8jMA1B3BB4DXa968uSRp4cKF1d5FJlUfNK7m/vvvV3p6ur744ota9WCz2fTJJ58oKCioyvbLa5fP+ZEc834kVTt5+XIlJSVKTExUXl6ePv74Y3Xu3PmqrwFwdQQfAF6vV69euv7663Xo0CGNHz++zq8/efKkc4Lyj33zzTcqKChQdHS0s1YZYL777juX5+Xceeedev7553XixAndf//9V/2Z58+f1wcffOByuevtt99WQECA7rjjjhpfWxl6jhw5oo0bN3rN85AAf0DwAeD1mjVrpoULF2rEiBEqLi7WvffeqxYtWujMmTP6/PPPdebMGS1ZsuSKr//jH/+oTz/9VL/73e+ct6Ln5eVp0aJFOnfunObOnevct1OnTpKkF154QQMHDlRg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DwCvFhcXp/T0dD366KMqLCzU6tWrtXLlSq1YseKKoefJJ59UfHy8mjRpoptuuknTp0/XDz/8IEmyLEuJiYlKSUlR5f/7vv76a7Vp00bTpk2TVPVS17Fjx3TXXXcpPDxcTZs21S233KI1a9Y0/JsHUO8aeboBALiaRx99VH/729/04IMPKisrS88884y6dOlyxf1DQkL0l7/8RdHR0crKytKoUaMUEhKiKVOmyGazacWKFerUqZNeeuklTZgwQWPGjFFkZKRmzpxZ7fHGjRunixcvauvWrWratKkOHTqkZs2aNcybBdCguNQFwCd8+eWX6tixozp16qS9e/eqUaPa/79t7ty5WrVqlXbv3u2s/c///I+GDx+uSZMm6c9//rP27dun+Ph4SY4Rn379+qmkpETXX3+9OnfurHvuuUczZsyo9/cFwL241AXAJ7z++utq0qSJ8vLydPz4cUnSmDFj1KxZM+dS6d1331Xv3r0VFRWlZs2aafr06crPz3c53n333ae7775b6enpmjdvnjP0VOexxx7Tc889p169emnGjBk6cOBAw7xJAA2O4APA6+3YsUMLFizQ6tWr1aNHDz300EOyLEvPPvus9u/f71wkaefOnRo6dKgGDhyoDz/8UPv27dO0adN08eJFl2N+++232rNnjwIDA3X48OEaf/7DDz+sI0eOaPjw4crKylK3bt20cOHChnq7ABoQwQeAV/vuu+80YsQIjR49WomJiXrttde0a9cuvfrqq2rRooViY2OdiyR9+umnatu2raZNm6Zu3bopLi5Ox44dq3LcyZMnKyAgQGvXrtVLL72kTZs21dhH69atNWbMGL3//vuaPHmyli1b1iDvF0DDIvgA8GpPPfWUKioq9MILL0iS2rRpo3nz5umJJ57Q0aNHq+wfGxur/Px8rVy5Urm5uXrppZf0t7/9zWWfjz76SK+//rreeustDRgwQE899ZRGjBihkpKSanuYOHGi1q9fr7y8PO3du1ebNm1Sx44d6/29Amh4TG4G4LW2bNmi/v37a/Pmzerdu7fLtuTkZF26dEmZmZmy2Wwu26ZMmaLXX39d5eXlGjx4sLp3766ZM2fq66+/1pkzZ9SpUydNmDBBU6dOlSRdunRJvXr1Urt27bRq1aoqk5sfffRRrV27VsePH1doaKhSUlK0YMEC3XDDDW77XQCoHwQfAABgDC51AQAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGCM/weB/rgHOzEXZQAAAABJRU5ErkJggg==", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-42.29236774212642\n", - "-36.75923168190073\n", - "41.852990184297056\n", - "14.240572670477611\n", - "34.354187506325914\n", - "1.1445054729335702\n", - "10.369152572003571\n", - "-14.283798410764867\n", - "28.354350405913934\n", - "37.16064469864911\n", - "-23.455267907602074\n", - "37.828863896848134\n", - "45.22768227885496\n", - "-25.00539958813013\n", - "39.72355418752896\n", - "-31.20785585434448\n", - "49.391368799833955\n", - "14.53930988662582\n", - "29.36448530569838\n", - "48.16256179498585\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtkElEQVR4nO3dfVRV9Z7H8c8BR0IFglSQ62NyMA3L0lsq3tQrAj41TlpXsNKmHE0tHS3LHNOarpRe85ampU2NlaGNda9N+ch11Eq9KVmSrkLwAQzJBwjMCvOw54+zPLcjSFBwnn7v11p7Lfd377P5HrbL8/G3f3sfm2VZlgAAAAwQ5O0GAAAAPIXgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADoFZsNlutlm3btmns2LFq3769t1t2U1hYqIkTJyo+Pl6hoaGKiopS165dNW7cOBUWFrr2W79+vebOneu9RiU9//zz6tmzp5o3b66QkBC1bdtWo0aN0oEDB7zaFxAIbHxlBYDa2L17t9v6f/7nf+r//u//tHXrVrd6ly5ddOrUKZWXl+uGG27wZIuXdfz4cd1www268sorNX36dHXq1EllZWU6ePCg3nrrLT333HPq27evJGny5Ml64YUX5M1/GufMmaOgoCBdf/31ioyM1OHDh/X000/rq6++UnZ2tjp16uS13gB/18jbDQDwDz179nRbb9GihYKCgqrUJSk8PNxTbdXKihUrdPr0aX388cfq0KGDqz58+HA99thjqqys9GJ3VT3xxBNu63379lXPnj3VpUsXrVq1Sk8++aSXOgP8H5e6ANS76i512Ww2TZ48Wa+++qo6deqk0NBQ9ejRQ7t375ZlWVqwYIE6dOigZs2a6fe//73y8vKqHDcrK0sDBgxQeHi4mjRposTERP3tb3/72X7OnDmjoKAgtWzZstrtQUFBrr5feOEFV78Xl6NHj0qSLMvS0qVL1a1bN4WGhioyMlIjR47U4cOH3Y7Xr18/JSQk6IMPPlDPnj0VGhqq3/zmN5o9e7YcDsfP9ludFi1aSJIaNeL/q8CvQfAB4DHvvfeeXn75ZT399NPKzMzU2bNnNWTIEE2fPl0fffSRlixZouXLl+vgwYMaMWKE2+WmN954Q8nJyQoPD9fKlSv11ltvKSoqSikpKT8bfnr16qXKykrddttt2rRpk8rLy6vdb/bs2Ro5cqQkadeuXa6lVatWkqTx48dr6tSpSkpK0l//+lctXbpUBw4cUO/evfX111+7Hau4uFijRo3S6NGjtW7dOo0cOVJPPfWUpkyZUuvfl8PhUEVFhb744gvdd999atmype65555avx5ANSwA+AXGjBljNW3a9LLb2rVr51aTZMXExFjffvutq/bXv/7VkmR169bNqqysdNX//Oc/W5Ks/fv3W5ZlWefOnbOioqKsYcOGuR3T4XBY119/vXXTTTfV2GtlZaU1fvx4KygoyJJk2Ww2q3Pnzta///u/W0eOHHHbd9KkSVZ1/zTu2rXLkmQtXLjQrV5YWGiFhoZaM2bMcNX69u1rSbLWrVvntu+4ceOsoKAg69ixYzX2e1FISIglyZJkxcfHWwcPHqzV6wBcHiM+ADymf//+atq0qWu9c+fOkqRBgwbJZrNVqR87dkyStHPnTpWUlGjMmDG6cOGCa6msrFRqaqr27Nmjc+fOXfbn2mw2vfjiizp8+LCWLl2qe+65Rz/++KMWLVqka6+9Vtu3b//Z3t977z3ZbDbdeeedbj3ExMTo+uuv17Zt29z2DwsL06233upWS09PV2VlpXbs2PGzP+/i+961a5feeOMNhYWFqX///tzZBfxKXCwG4DFRUVFu640bN66x/sMPP0iS6zLSxctQ1SkpKXELVdVp166d7r//ftf6W2+9pbS0ND388MP6+OOPa3zt119/LcuyFB0dXe32q6++2m29uv1iYmIkOecc1caNN94oyTmx/NZbb1VcXJwee+wxrVu3rlavB1AVwQeAz2vevLkkafHixdXeRSZVHzR+zh133KGMjAx9/vnnterBZrPpgw8+UEhISJXtl9YunfMjOef9SNJVV11V517DwsJ0zTXXKDc3t86vBfAPBB8APi8xMVFXXnmlDh48qMmTJ9f59SdOnHBNUP6pb7/9VoWFhYqNjXXVLgaY77//XqGhoa760KFDXc/SueOOO372Z549e1bvvvuu2+WuN998U0FBQbrlllvq/B5Onz6tnJwcJSYm1vm1AP6B4APA5zVr1kyLFy/WmDFjVFJSopEjR6ply5Y6deqUPvvsM506dUrLli277Ov/+Mc/6qOPPtIf/vAH163oR44c0ZIlS3TmzBktWLDAtW/Xrl0lSc8884wGDRqk4OBg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0fBOnz4th8NR5fccHR3N79hDLMvStGnT1KdPHyUkJEiS63df3Xk5duyYx3sMZKtXr1Z2drb27t1bZRvn4ZdhxMcD5s6dK5vNVuOyd+9eLV68WOXl5Zo5c2aNx7PZbFVqlmVVW4e72p6LnyoqKlJqaqpuv/123XfffW7bOBeecenvk9+x50yePFn79+9XZmZmlW2cl4ZVWFioKVOmaNWqVbriiisuux/noW4Y8fGAyZMna9SoUTXu0759ez311FPavXt3le9e6dGjh0aPHq2VK1cqJiZGf//73922l5aW6scff6yS+lFVbc/FRUVFRerfv7969eql5cuXu+3HuWh4zZs3V3BwcJXRnZMnT/I79oAHHnhA7777rnbs2KHWrVu76jExMZKcIw6tWrVy1Tkv9Ss7O1snT55U9+7dXTWHw6EdO3ZoyZIlrjvtOA915MX5RbjEsWPHrJycHNeyadMmS5K1du1aq7Cw0LKsf0yoLSoqcr1u9erVTKhtAMePH7fsdrs1atQo68KFC1W2cy4846abbrLuv/9+t1rnzp2Z3NyAKisrrUmTJlmxsbFWbm5utdtjYmKsZ555xlWrqKhgUm09Ky8vd/tMyMnJsXr06GHdeeedVk5ODufhFyL4+LAjR45UuavrwoULVkJCgjVgwADrk08+sbKysqzWrVtbkydP9l6jAeirr76y4uLirN///vfW8ePHrRMnTriWizgXnrF69Wrrn/7pn6z/+q//sg4ePGhNnTrVatq0qXX06FFvtxaw7r//fisiIsLatm2b29/97777zrXP008/bUVERFjvvPOOlZOTY6WlpVmtWrWyysvLvdh54PvpXV2WxXn4JQg+Pqy64GNZzpGhIUOGWKGhoVZUVJQ1efJk64cffvBOkwHq1VdftSRVu/wU58IzXnjhBatdu3ZW48aNrRtvvNF1WzUaxuX+7r/66quufSorK605c+ZYMTExVkhIiHXLLbdYOTk53mvaEJcGH85D3dksy7K8cIUNAADA47irCwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAFxi27Ztstls+uabb7zdCoB6RvAB4LMcDod69+6tESNGuNXLysrUpk0b/cd//EeD/NzevXvrxIkTioiIaJDjA/AentwMwKcdOnRI3bp10/LlyzV69GhJ0t13363PPvtMe/bsUePGjb3cIQB/wogPAJ9mt9uVkZGhBx54QEVFRVq3bp1Wr16tlStXXjb0PPLII4qPj1eTJk109dVXa/bs2frxxx8lSZZlKSkpSampqbr4/75vvvlGbdu21axZsyRVvdR17NgxDRs2TJGRkWratKmuvfZarV+/vuHfPIB618jbDQDAz3nggQf0l7/8RXfffbdycnL0+OOPq1u3bpfdPywsTP/93/+t2NhY5eTkaNy4cQoLC9OMGTNks9m0cuVKde3aVc8//7ymTJmiCRMmKDo6WnPnzq32eJMmTdL58+e1Y8cONW3aVAcPHlSzZs0a5s0CaFBc6gLgF7744gt17txZXbt21SeffKJGjWr//7YFCxZozZo12rt3r6v2P//zP7rrrrs0bdo0Pffcc9q3b5/i4+MlOUd8+vfvr9LSUl155ZW67rrrNGLECM2ZM6fe3xcAz+JSFwC/8Morr6hJkyY6cuSIjh8/LkmaMGGCmjVr5louWrt2rfr06aOYmBg1a9ZMs2fPVkFBgdvxbr/9dt12223KyMjQwoULXaGnOg8++KCeeuopJSYmas6cOdq/f3/DvEkADY7gA8Dn7dq1S4sWLdK6devUq1cv3XvvvbIsS08++aQ+/fRT1yJJu3fv1qhRozRo0CC999572rdvn2bNmqXz58+7HfO7775Tdna2goODdejQoRp//n333afDhw/rrrvuUk5Ojnr06KHFixc31NsF0IAIPgB82vfff68xY8Zo/PjxSkpK0ssvv6w9e/bopZdeUsuWLRUXF+daJOmjjz5Su3btNGvWLPXo0UN2u13Hjh2rctzp06crKChIGzZs0PPPP6+tW7fW2EebNm00YcIEvfPOO5o+fbpWrFjRIO8XQMMi+ADwaY8++qgqKyv1zDPPSJLatm2rhQsX6uGHH9bRo0er7B8XF6eCggKtXr1a+fn5ev755/WXv/zFbZ/3339fr7zyilatWqWBAwfq0Ucf1ZgxY1RaWlptD1OnTtWmTZt05MgRffLJJ9q6das6d+5c7+8VQMNjcjMAn7V9+3YNGDBA27ZtU58+fdy2paSk6MKFC8rKypLNZnPbNmPGDL3yyiuqqKjQkCFD1LNnT82dO1fffPONTp06pa5du2rKlCmaOXOmJOnChQtKTExU+/bttWbNmiqTmx944AFt2LBBx48fV3h4uFJTU7Vo0SJdddVVHvtdAKgfBB8AAGAMLnUBAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYIz/B1DjqSUD8oqDAAAAAElFTkSuQmCC", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-42.29236774212642\n", - "-36.75923168190073\n", - "41.852990184297056\n", - "14.240572670477615\n", - "34.354187506325914\n", - "1.1445054729335724\n", - "10.369152572003571\n", - "-14.283798410764865\n", - "28.354350405913934\n", - "37.16064469864911\n", - "-23.455267907602074\n", - "37.828863896848134\n", - "45.22768227885496\n", - "-25.00539958813013\n", - "39.72355418752896\n", - "-31.20785585434448\n", - "49.391368799833955\n", - "14.539309886625821\n", - "29.364485305698377\n", - "48.16256179498582\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtN0lEQVR4nO3de1xVdb7/8fcGR0IEgkyQvCbgWFiedMpL42VEwNscp9sIVjqnHO+Xo2WZP1M7jZSOOSdRUzt1rCm0YzV2yivjUTN1UjMlfRSCFzAkUwjMCnKzfn/sh3vagggG+/Z9PR+P9Xi4PmvtxWezfLjfftd3rW2zLMsSAACAAQI83QAAAIC7EHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfADUis1mq9Wybds2jRw5Um3btvV0yy4KCgo0btw4xcfHKzg4WJGRkerUqZNGjRqlgoIC537r16/XnDlzPNfoZSzLUq9evWSz2TRhwgRPtwP4vEaebgCAb9i9e7fL+n/8x3/o//7v/7R161aX+i233KJWrVpp8uTJ7myvRqdOndIdd9yh66+/XtOmTVOHDh1UWlqqI0eO6K233tKxY8fUqlUrSY7gs2TJEq8JP0uWLFFubq6n2wD8BsEHQK1069bNZf3GG29UQEBAlbokhYWFuautWlm5cqXOnj2rjz/+WO3atXPWhw4dqqeeekqVlZUe7O7KTpw4oRkzZui1117TPffc4+l2AL/ApS4A9a66S12XLtW8+uqr6tChg4KDg9W1a1ft2bNHlmVpwYIFateunZo2barf/OY31Y5yZGVlqV+/fgoLC1OTJk3Us2dP/f3vf79qP+fOnVNAQICaN29e7faAgABn30uWLHH2e2k5ceKEJMdlp6VLl6pz584KDg5WRESE7rvvPh07dszleH369FFCQoI+/PBDdevWTcHBwbrppps0a9Ys2e32q/Z7yR//+Ef1799fv/vd72r9GgA1I/gAcJv3339fL7/8sp577jllZmbq/PnzGjRokKZNm6aPPvpIGRkZWrFihY4cOaJ7771XlmU5X/vXv/5VSUlJCgsL06pVq/TWW28pMjJSycnJVw0/3bt3V2Vlpe655x5t2rRJZWVl1e43a9Ys3XfffZIcl/YuLS1atJAkjR49WlOmTFFiYqL+9re/aenSpTp8+LB69Oihr776yuVYRUVFGjZsmIYPH65169bpvvvu07PPPlvrS4Avv/yyPv74Y2VkZNRqfwC1ZAHANRgxYoQVEhJyxW1t2rRxqUmyoqOjrW+//dZZ+9vf/mZJsjp37mxVVlY663/5y18sSdahQ4csy7KsCxcuWJGRkdaQIUNcjmm3263bb7/duvPOO2vstbKy0ho9erQVEBBgSbJsNpvVsWNH69///d+t48ePu+w7fvx4q7p/Gnfv3m1JshYuXOhSLygosIKDg63p06c7a71797YkWevWrXPZd9SoUVZAQIB18uTJGvs9deqUFR4ebi1fvtxZk2SNHz++xtcBuDpGfAC4Td++fRUSEuJc79ixoyRpwIABstlsVeonT56UJO3atUvFxcUaMWKELl686FwqKyuVkpKivXv36sKFC1f8uTabTS+99JKOHTumpUuX6g9/+IN+/PFHLVq0SLfeequ2b99+1d7ff/992Ww2Pfjggy49REdH6/bbb9e2bdtc9g8NDdVvf/tbl1paWpoqKyu1Y8eOGn/WmDFjdPvtt2vUqFFX7QtA3TC5GYDbREZGuqw3bty4xvoPP/wgSc7LSJcuQ1WnuLjYJVRVp02bNho7dqxz/a233lJqaqoef/xxffzxxzW+9quvvpJlWYqKiqp2+8033+yyXt1+0dHRkhxzjq5k7dq12rhxo3bu3KnS0lKXbRUVFfrmm28UEhKiX/ziFzX2C6B6BB8AXq9Zs2aSpMWLF1d7F5lUfdC4mgceeEDp6en67LPPatWDzWbThx9+qKCgoCrbL69dPudHcsz7kaQbbrjhij/ns88+08WLF6t9nytXrtTKlSv17rvvaujQoVftGUBVBB8AXq9nz566/vrrdeTIkWt6iN/p06edE5R/6ttvv1VBQYFiYmKctUsB5vvvv1dwcLCzPnjwYD333HP68ssv9cADD1z1Z54/f17vvfeey+WuN998UwEBAerVq9cVXzdy5Ej16dOnSr1v374aOnSoJk+erISEhKv+fADVI/gA8HpNmzbV4sWLNWLECBUXF+u+++5T8+bN9fXXX+vgwYP6+uuvtWzZsiu+/k9/+pM++ugj/f73v3fein78+HFlZGTo3LlzWrBggXPfTp06SZKef/55DRgwQIGBgbrtttvUs2dP/fGPf9Qf/vAH7du3T7169VJISIhOnz6tnTt3qlOnTi6X0W644QaNHTtW+fn5io+P1/r167Vy5UqNHTtWrVu3vmKvbdu2veJTr2+66aZqQxGA2iP4APAJDz74oFq3bq358+dr9OjROn/+vJo3b67OnTtr5MiRNb72oYcekiStXr1aCxYsUGlpqSIjI9WlSxetX79eAwYMcO6blpamjz76SEuXLtUzzzwjy7J0/PhxtW3bVsuXL1e3bt20fPlyLV26VJWVlYqJiVHPnj115513uvzM6OhoLVmyRI899piys7MVGRmpp556SnPnzq333w2A2rNZ1k8elAEA+Nn69Omjs2fP1mruEAD34nZ2AABgDIIPAAAwBpe6AACAMRjxAQAAxiD4AAAAYxB8AACAMXiOz2UqKytVWFio0NBQly9NBAAA3suyLJ0/f14xMTEKCLjyuA7B5zKFhYVq1aqVp9sAAADXoKCgQC1btrzidoLPZUJDQyU5fnFhYWEe7gYAANRGWVmZWrVq5fwcvxKCz2UuXd4KCwsj+AAA4GOuNk2Fyc0AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAy+sgIA4PdycqS8PCk2VoqL83Q38CRGfAAAfqu4WEpJkTp0kAYOlOLjHeslJZ7uDJ5C8AEA+K20NCkry7WWlSWlpnqmH3gewQcA4JdycqRNmyS73bVutzvqR496pi94FsEHAOCX8vJq3p6b654+4F0IPgAAv9S+fc3bY2Pd0we8C8EHAOCX4uOl5GQpMNC1HhjoqHN3l5kIPgAAv5WZKSUmutYSEx11mInn+AAA/FZEhLRxo2Mic24uz/EBwQcAYIC4OAIPHLjUBQAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyfDT7p6emy2WyaMmWKs2ZZlubMmaOYmBgFBwerT58+Onz4sOeaBAAAXsUng8/evXu1YsUK3XbbbS71+fPn64UXXlBGRob27t2r6Oho9e/fX+fPn/dQpwAAwJv4XPD59ttvNXz4cK1cuVIRERHOumVZ+stf/qKZM2fqnnvuUUJCglatWqXvvvtOb775pgc7BgAA3sLngs/48eM1aNAgJSYmutSPHz+uoqIiJSUlOWtBQUHq3bu3du3adcXjlZeXq6yszGUBAAD+qZGnG6iL1atXa//+/dq3b1+VbUVFRZKkqKgol3pUVJROnjx5xWOmp6dr7ty59dsoAADwSj4z4lNQUKDJkyfrjTfe0HXXXXfF/Ww2m8u6ZVlVaj81Y8YMlZaWOpeCgoJ66xkAAHgXnxnx2b9/v86cOaMuXbo4a3a7XTt27FBGRoa++OILSY6RnxYtWjj3OXPmTJVRoJ8KCgpSUFBQwzUOAAC8hs+M+PTr10/Z2dn69NNPnUvXrl01fPhwffrpp7r55psVHR2tLVu2OF9TUVGh7du3q0ePHh7sHAAAeAufGfEJDQ1VQkKCSy0kJEQ33HCDsz5lyhTNmzdPcXFxiouL07x589SkSROlpaV5omUAAOBlfCb41Mb06dP1/fffa9y4cSopKdFdd92lzZs3KzQ01NOtwQNycqS8PCk2VoqL83Q3AABvYLMsy/J0E96krKxM4eHhKi0tVVhYmKfbwTUoLpbS0qRNm/5ZS06WMjOlnzz6CQDgR2r7+e0zc3yA2kpLk7KyXGtZWVJqqmf6AeBeOTnShg3S0aOe7gTeiOADv5KT4xjpsdtd63a7o84/hID/Ki6WUlKkDh2kgQOl+HjHekmJpzuDNyH4wK/k5dW8PTfXPX0AcD9Ge1EbBB/4lfbta94eG+uePgC4F6O9qC2CD/xKfLxjInNgoGs9MNBR5+4uwD8x2ovaIvjA72RmSpd9h60SEx11AP6J0V7Ull89xweQHLesb9zoGNrOzeU5PoAJLo32ZmW5Xu4KDHT8x4d/A3AJIz7wW3Fx0oAB/IMHmILRXtQGIz4AAL/AaC9qg+ADAPArcXEEHlwZl7oAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBg+E3zS09P1q1/9SqGhoWrevLmGDh2qL774wmUfy7I0Z84cxcTEKDg4WH369NHhw4c91DEAAPA2PhN8tm/frvHjx2vPnj3asmWLLl68qKSkJF24cMG5z/z58/XCCy8oIyNDe/fuVXR0tPr376/z5897sHMAAOAtbJZlWZ5u4lp8/fXXat68ubZv365evXrJsizFxMRoypQpeuKJJyRJ5eXlioqK0vPPP6/Ro0fX6rhlZWUKDw9XaWmpwsLCGvItAACAelLbz2+fGfG5XGlpqSQpMjJSknT8+HEVFRUpKSnJuU9QUJB69+6tXbt2XfE45eXlKisrc1kAAIB/8sngY1mWpk6dqrvvvlsJCQmSpKKiIklSVFSUy75RUVHObdVJT09XeHi4c2nVqlXDNQ4AADzKJ4PPhAkTdOjQIWVmZlbZZrPZXNYty6pS+6kZM2aotLTUuRQUFNR7vwAAwDs08nQDdTVx4kS999572rFjh1q2bOmsR0dHS3KM/LRo0cJZP3PmTJVRoJ8KCgpSUFBQwzUMAAC8hs+M+FiWpQkTJuidd97R1q1b1a5dO5ft7dq1U3R0tLZs2eKsVVRUaPv27erRo4e72wUAAF7IZ0Z8xo8frzfffFPr1q1TaGioc95OeHi4goODZbPZNGXKFM2bN09xcXGKi4vTvHnz1KRJE6WlpXm4ewAA4A18JvgsW7ZMktSnTx+X+quvvqqRI0dKkqZPn67vv/9e48aNU0lJie666y5t3rxZoaGhbu4WAAB4I599jk9D4Tk+AAD4Hr9/jg8AAEBdEXwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBg+8yWlAADAt+XkSHl5UmysFBfnmR4Y8QEAwA/l5EgbNkhHj3q6E6m4WEpJkTp0kAYOlOLjHeslJe7vheADAIAf8aaQcUlampSV5VrLypJSU93fC8EHAAA/4k0hQ3KMPG3aJNntrnW73VF394gUwQcAAD/hbSFDcszpqUlurnv6uITgAwCAn/C2kCFJ7dvXvD021j19XELwAQDAT3hbyJAcc4ySk6XAQNd6YKCj7u67uwg+AAD4CW8LGZdkZkqJia61xERH3d14jg8AAH4kM9MxkXnTpn/WPBUyLomIkDZudMwxys317HN8CD4AAPgRbwoZl4uL83wvBB8AAPyQN4QMb8QcHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwRp2Dz8aNG7Vz507n+pIlS9S5c2elpaWppKSkXpsDAACoT3UOPo8//rjKysokSdnZ2Zo2bZoGDhyoY8eOaerUqfXeIAAAQH2p85eUHj9+XLfccosk6e2339bgwYM1b948ffLJJxo4cGC9NwgAAFBf6jzi07hxY3333XeSpKysLCUlJUmSIiMjnSNBAAAA3qjOIz533323pk6dqp49e+rjjz/WmjVrJEk5OTlq2bJlvTcIAABQX+o84pORkaFGjRpp7dq1WrZsmW666SZJ0oYNG5SSklLvDQIAANQXm2VZlqeb8CZlZWUKDw9XaWmpwsLCPN0OAACohdp+ftfqUldZWZnzIFebx0NYAAAA3qpWwSciIkKnT59W8+bNdf3118tms1XZx7Is2Ww22e32em8SAACgPtQq+GzdulWRkZHOP1cXfAAAALwdc3wuwxwfAAB8T20/v+t8V9esWbOqvZxVWlqq1NTUuh4OAADAbeocfF577TX17NlTeXl5ztq2bdvUqVMnnThxoj57AwAAqFd1Dj6HDh1S27Zt1blzZ61cuVKPP/64kpKSNHLkSJcvLwUAAPA2dX5yc3h4uFavXq2ZM2dq9OjRatSokTZs2KB+/fo1RH8AAAD1ps4jPpK0ePFiLVq0SKmpqbr55ps1adIkHTx4sL57AwAAqFd1Dj4DBgzQ3Llz9dprr+mNN97QgQMH1KtXL3Xr1k3z589viB4BAADqRZ2Dz8WLF3Xo0CHdd999kqTg4GAtW7ZMa9eu1aJFi+q9QQAAgPpSr8/xOXv2rJo1a1Zfh/MInuMDAIDvabDn+NTE10MPAADwb3W+q8tut2vRokV66623lJ+fr4qKCpftxcXF9dYcAABAfarziM/cuXP1wgsv6IEHHlBpaammTp2qe+65RwEBAZozZ04DtAgAAFA/6hx83njjDa1cuVKPPfaYGjVqpNTUVL388st6+umntWfPnoboEQAAoF7UOfgUFRWpU6dOkqSmTZuqtLRUkjR48GB98MEH9dsdAABAPapz8GnZsqVOnz4tSYqNjdXmzZslSXv37lVQUFD9dgcAAFCP6hx8fve73+nvf/+7JGny5MmaNWuW4uLi9PDDD+vf/u3f6r1BAACA+vKzn+OzZ88e7dq1S7Gxsfrtb39bX315DM/xAQDA99T287vOt7Nfrlu3burWrdvPPQwAAECD+1kPMAwLC9OxY8fqqxcAAIAGVevgc+rUqSq1evy2CwAAgAZX6+CTkJCg119/vSF7AQAAaFC1Dj7z5s3T+PHjde+99+rcuXOSpAcffJAJwAAAwGfUOviMGzdOBw8eVElJiW699Va99957WrZsGV9MCgAwXk6OtGGDdPSopzvB1dTprq527dpp69atysjI0L333quOHTuqUSPXQ3zyySf12iAAAN6quFhKS5M2bfpnLTlZysyUIiI81xeurM63s588eVJvv/22IiMj9a//+q9Vgg8AAKZIS5OyslxrWVlSaqq0caNnekLN6pRaVq5cqWnTpikxMVGfffaZbrzxxobqCwAAr5aT4zrSc4nd7qgfPSrFxbm/L9Ss1nN8UlJS9MQTTygjI0PvvPOOV4eepUuXql27drruuuvUpUsXffjhh55uCQDgZ/Lyat6em+uePlA3tQ4+drtdhw4d0sMPP9yQ/fxsa9as0ZQpUzRz5kwdOHBAv/71rzVgwADl5+d7ujUAgB9p377m7bGx7ukDdfOzv6vL29x111264447tGzZMmetY8eOGjp0qNLT06/6er6rCwBQWykpjjk9dvs/a4GBUmIic3zcrbaf3z/rKyu8TUVFhfbv36+kpCSXelJSknbt2lXta8rLy1VWVuayAABQG5mZjpDzU4mJjjq8k1/dknX27FnZ7XZFRUW51KOiolRUVFTta9LT0zV37lx3tAcA8DMREY6RnaNHHXN6YmOZ0Ozt/GrE5xKbzeaybllWldolM2bMUGlpqXMpKChwR4sAAD8SFycNGEDo8QV+NeLTrFkzBQYGVhndOXPmTJVRoEuCgoIUFBTkjvYAAICH+dWIT+PGjdWlSxdt2bLFpb5lyxb16NHDQ10BAABv4VcjPpI0depUPfTQQ+ratau6d++uFStWKD8/X2PGjPF0awAAwMP8Lvj8/ve/17lz5/TMM8/o9OnTSkhI0Pr169WmTRtPtwYAADzM757j83PxHB8AAHyPkc/xAQAAqAnBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEaeboBADBJTo6UlyfFxkpxcZ7uBjAPIz4A4AbFxVJKitShgzRwoBQf71gvKfF0Z4BZCD4A4AZpaVJWlmstK0tKTfVMP4CpCD4A0MBycqRNmyS73bVutzvqR496pi/ARAQfAGhgeXk1b8/NdU8fAAg+ANDg2reveXtsrHv6AEDwAYAGFx8vJSdLgYGu9cBAR527uwD3IfgAgBtkZkqJia61xERHHYD78BwfAHCDiAhp40bHRObcXJ7jA3gKwQcA3CgujsADeBKXugAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwhk8EnxMnTuiRRx5Ru3btFBwcrPbt22v27NmqqKhw2S8/P19DhgxRSEiImjVrpkmTJlXZBwAAmMsnvp39888/V2VlpZYvX67Y2Fh99tlnGjVqlC5cuKA///nPkiS73a5Bgwbpxhtv1M6dO3Xu3DmNGDFClmVp8eLFHn4HAADAG9gsy7I83cS1WLBggZYtW6Zjx45JkjZs2KDBgweroKBAMTExkqTVq1dr5MiROnPmjMLCwmp13LKyMoWHh6u0tLTWrwEAAJ5V289vn7jUVZ3S0lJFRkY613fv3q2EhARn6JGk5ORklZeXa//+/Z5oEQAAeBmfuNR1uby8PC1evFgLFy501oqKihQVFeWyX0REhBo3bqyioqIrHqu8vFzl5eXO9bKysvpvGAAAeAWPjvjMmTNHNputxmXfvn0uryksLFRKSoruv/9+Pfrooy7bbDZblZ9hWVa19UvS09MVHh7uXFq1alU/bw4AAHgdj474TJgwQcOGDatxn7Zt2zr/XFhYqL59+6p79+5asWKFy37R0dH6xz/+4VIrKSnRjz/+WGUk6KdmzJihqVOnOtfLysoIPwAA+CmPBp9mzZqpWbNmtdr3yy+/VN++fdWlSxe9+uqrCghwHazq3r27/vSnP+n06dNq0aKFJGnz5s0KCgpSly5drnjcoKAgBQUFXfubAAAAPsMn7uoqLCxU79691bp1a7322msKDAx0bouOjpbkuJ29c+fOioqK0oIFC1RcXKyRI0dq6NChdbqdnbu6AADwPbX9/PaJyc2bN29Wbm6ucnNz1bJlS5dtl3JbYGCgPvjgA40bN049e/ZUcHCw0tLSnM/5AQAA8IkRH3dixAcAAN/j98/xAQAAqCuCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDJ/4ygoAAOB+OTlSXp4UGyvFxXm6m/rBiA8AAHBRXCylpEgdOkgDB0rx8Y71khJPd/bzEXwAAICLtDQpK8u1lpUlpaZ6pp/6RPABAABOOTnSpk2S3e5at9sd9aNHPdNXfSH4AAAAp7y8mrfn5rqnj4ZC8AEAAE7t29e8PTbWPX00FIIPAABwio+XkpOlwEDXemCgo+7rd3cRfAAAgIvMTCkx0bWWmOio+zqe4wMAAFxEREgbNzomMufm+tdzfAg+AACgWnFx/hN4LuFSFwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYjTzdAAAAqL2cHCkvT4qNleLiPN2N72HEBwAAH1BcLKWkSB06SAMHSvHxjvWSEk935lsIPgAA+IC0NCkry7WWlSWlpnqmH19F8AEAwMvl5EibNkl2u2vdbnfUjx71TF++iOADAICXy8ureXturnv68AcEHwAAvFz79jVvj411Tx/+gOADAICXi4+XkpOlwEDXemCgo87dXbVH8AEAwAdkZkqJia61xERHHbXHc3wAAPABERHSxo2Oicy5uTzH51oRfAAA8CFxcQSen4NLXQAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYgy8pdZOcHCkvj2/TBQDAkxjxaWDFxVJKitShgzRwoBQf71gvKfF0ZwAAmIfg08DS0qSsLNdaVpaUmuqZfgAAMBnBpwHl5EibNkl2u2vdbnfUjx71TF8AAJiK4NOA8vJq3p6b654+AACAA8GnAbVvX/P22Fj39AEAABwIPg0oPl5KTpYCA13rgYGOOnd3AQDgXgSfBpaZKSUmutYSEx11AADgXjzHp4FFREgbNzomMufm8hwfAAA8ieDjJnFxBB4AADyNS10AAMAYBB8AAGAMnws+5eXl6ty5s2w2mz799FOXbfn5+RoyZIhCQkLUrFkzTZo0SRUVFZ5pFAAAeB2fm+Mzffp0xcTE6ODBgy51u92uQYMG6cYbb9TOnTt17tw5jRgxQpZlafHixR7qFgAAeBOfGvHZsGGDNm/erD//+c9Vtm3evFlHjhzRX//6V/3Lv/yLEhMTtXDhQq1cuVJlZWUe6BYAAHgbnwk+X331lUaNGqXXX39dTZo0qbJ99+7dSkhIUExMjLOWnJys8vJy7d+/352tAgAAL+UTl7osy9LIkSM1ZswYde3aVSdOnKiyT1FRkaKiolxqERERaty4sYqKiq547PLycpWXlzvXGR0CAMB/eXTEZ86cObLZbDUu+/bt0+LFi1VWVqYZM2bUeDybzValZllWtfVL0tPTFR4e7lxatWr1s98XAADwTjbLsixP/fCzZ8/q7NmzNe7Ttm1bDRs2TP/7v//rEmDsdrsCAwM1fPhwrVq1Sk8//bTWrVvnMum5pKREkZGR2rp1q/r27Vvt8asb8WnVqpVKS0sVFhb2M98hAABwh7KyMoWHh1/189ujwae28vPzXS5BFRYWKjk5WWvXrtVdd92lli1basOGDRo8eLBOnTqlFi1aSJLWrFmjESNG6MyZM7UOMbX9xQEAAO9R289vn5jj07p1a5f1pk2bSpLat2+vli1bSpKSkpJ0yy236KGHHtKCBQtUXFysxx57TKNGjapTgLmUA5nrAwCA77j0uX218RyfCD61ERgYqA8++EDjxo1Tz549FRwcrLS0tGpvfa/J+fPnJYm5PgAA+KDz588rPDz8itt94lKXO1VWVqqwsFChoaE1TopuSJfmGRUUFHC5zcM4F96B8+A9OBfegfNQlWVZOn/+vGJiYhQQcOV7t/xmxKe+BAQEOC+feVpYWBh/ob0E58I7cB68B+fCO3AeXNU00nOJzzzAEAAA4Oci+AAAAGMQfLxQUFCQZs+eraCgIE+3YjzOhXfgPHgPzoV34DxcOyY3AwAAYzDiAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+Xqq8vFydO3eWzWbTp59+6rItPz9fQ4YMUUhIiJo1a6ZJkyapoqLCM436qRMnTuiRRx5Ru3btFBwcrPbt22v27NlVfs+cC/dYunSp2rVrp+uuu05dunTRhx9+6OmW/Fp6erp+9atfKTQ0VM2bN9fQoUP1xRdfuOxjWZbmzJmjmJgYBQcHq0+fPjp8+LCHOjZDenq6bDabpkyZ4qxxHuqO4OOlpk+frpiYmCp1u92uQYMG6cKFC9q5c6dWr16tt99+W9OmTfNAl/7r888/V2VlpZYvX67Dhw9r0aJFeumll/TUU0859+FcuMeaNWs0ZcoUzZw5UwcOHNCvf/1rDRgwQPn5+Z5uzW9t375d48eP1549e7RlyxZdvHhRSUlJunDhgnOf+fPn64UXXlBGRob27t2r6Oho9e/f3/l9h6hfe/fu1YoVK3Tbbbe51DkP18CC11m/fr31y1/+0jp8+LAlyTpw4IDLtoCAAOvLL7901jIzM62goCCrtLTUA92aY/78+Va7du2c65wL97jzzjutMWPGuNR++ctfWk8++aSHOjLPmTNnLEnW9u3bLcuyrMrKSis6Otp67rnnnPv88MMPVnh4uPXSSy95qk2/df78eSsuLs7asmWL1bt3b2vy5MmWZXEerhUjPl7mq6++0qhRo/T666+rSZMmVbbv3r1bCQkJLqNBycnJKi8v1/79+93ZqnFKS0sVGRnpXOdcNLyKigrt379fSUlJLvWkpCTt2rXLQ12Zp7S0VJKcf/+PHz+uoqIil/MSFBSk3r17c14awPjx4zVo0CAlJia61DkP14YvKfUilmVp5MiRGjNmjLp27aoTJ05U2aeoqEhRUVEutYiICDVu3FhFRUVu6tQ8eXl5Wrx4sRYuXOiscS4a3tmzZ2W326v8nqOiovgdu4llWZo6daruvvtuJSQkSJLzd1/deTl58qTbe/Rnq1ev1v79+7Vv374q2zgP14YRHzeYM2eObDZbjcu+ffu0ePFilZWVacaMGTUez2azValZllVtHa5qey5+qrCwUCkpKbr//vv16KOPumzjXLjH5b9PfsfuM2HCBB06dEiZmZlVtnFeGlZBQYEmT56sN954Q9ddd90V9+M81A0jPm4wYcIEDRs2rMZ92rZtq2effVZ79uyp8t0rXbt21fDhw7Vq1SpFR0frH//4h8v2kpIS/fjjj1VSP6qq7bm4pLCwUH379lX37t21YsUKl/04Fw2vWbNmCgwMrDK6c+bMGX7HbjBx4kS999572rFjh1q2bOmsR0dHS3KMOLRo0cJZ57zUr/379+vMmTPq0qWLs2a327Vjxw5lZGQ477TjPNSRB+cX4TInT560srOzncumTZssSdbatWutgoICy7L+OaG2sLDQ+brVq1czobYBnDp1yoqLi7OGDRtmXbx4scp2zoV73HnnndbYsWNdah07dmRycwOqrKy0xo8fb8XExFg5OTnVbo+Ojraef/55Z628vJxJtfWsrKzM5TMhOzvb6tq1q/Xggw9a2dnZnIdrRPDxYsePH69yV9fFixethIQEq1+/ftYnn3xiZWVlWS1btrQmTJjguUb90JdffmnFxsZav/nNb6xTp05Zp0+fdi6XcC7cY/Xq1dYvfvEL67/+67+sI0eOWFOmTLFCQkKsEydOeLo1vzV27FgrPDzc2rZtm8vf/e+++865z3PPPWeFh4db77zzjpWdnW2lpqZaLVq0sMrKyjzYuf/76V1dlsV5uBYEHy9WXfCxLMfI0KBBg6zg4GArMjLSmjBhgvXDDz94pkk/9eqrr1qSql1+inPhHkuWLLHatGljNW7c2Lrjjjuct1WjYVzp7/6rr77q3KeystKaPXu2FR0dbQUFBVm9evWysrOzPde0IS4PPpyHurNZlmV54AobAACA23FXFwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfALjMtm3bZLPZ9M0333i6FQD1jOADwGvZ7Xb16NFD9957r0u9tLRUrVq10v/7f/+vQX5ujx49dPr0aYWHhzfI8QF4Dk9uBuDVjh49qs6dO2vFihUaPny4JOnhhx/WwYMHtXfvXjVu3NjDHQLwJYz4APBqcXFxSk9P18SJE1VYWKh169Zp9erVWrVq1RVDzxNPPKH4+Hg1adJEN998s2bNmqUff/xRkmRZlhITE5WSkqJL/+/75ptv1Lp1a82cOVNS1UtdJ0+e1JAhQxQREaGQkBDdeuutWr9+fcO/eQD1rpGnGwCAq5k4caLeffddPfzww8rOztbTTz+tzp07X3H/0NBQ/fd//7diYmKUnZ2tUaNGKTQ0VNOnT5fNZtOqVavUqVMnvfjii5o8ebLGjBmjqKgozZkzp9rjjR8/XhUVFdqxY4dCQkJ05MgRNW3atGHeLIAGxaUuAD7h888/V8eOHdWpUyd98sknatSo9v9vW7BggdasWaN9+/Y5a//zP/+jhx56SFOnTtV//ud/6sCBA4qPj5fkGPHp27evSkpKdP311+u2227Tvffeq9mzZ9f7+wLgXlzqAuATXnnlFTVp0kTHjx/XqVOnJEljxoxR06ZNncsla9eu1d13363o6Gg1bdpUs2bNUn5+vsvx7r//ft1zzz1KT0/XwoULnaGnOpMmTdKzzz6rnj17avbs2Tp06FDDvEkADY7gA8Dr7d69W4sWLdK6devUvXt3PfLII7IsS88884w+/fRT5yJJe/bs0bBhwzRgwAC9//77OnDggGbOnKmKigqXY3733Xfav3+/AgMDdfTo0Rp//qOPPqpjx47poYceUnZ2trp27arFixc31NsF0IAIPgC82vfff68RI0Zo9OjRSkxM1Msvv6y9e/dq+fLlat68uWJjY52LJH300Udq06aNZs6cqa5duyouLk4nT56sctxp06YpICBAGzZs0IsvvqitW7fW2EerVq00ZswYvfPOO5o2bZpWrlzZIO8XQMMi+ADwak8++aQqKyv1/PPPS5Jat26thQsX6vHHH9eJEyeq7B8bG6v8/HytXr1aeXl5evHFF/Xuu++67PPBBx/olVde0RtvvKH+/fvrySef1IgRI1RSUlJtD1OmTNGmTZt0/PhxffLJJ9q6das6duxY7+8VQMNjcjMAr7V9+3b169dP27Zt09133+2yLTk5WRcvXlRWVpZsNpvLtunTp+uVV15ReXm5Bg0apG7dumnOnDn65ptv9PXXX6tTp06aPHmyZsyYIUm6ePGievbsqbZt22rNmjVVJjdPnDhRGzZs0KlTpxQWFqaUlBQtWrRIN9xwg9t+FwDqB8EHAAAYg0tdAADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABjj/wPhwYtGnirmDwAAAABJRU5ErkJggg==", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-42.29236774212642\n", - "-36.75923168190073\n", - "41.852990184297056\n", - "14.24057267047762\n", - "34.354187506325914\n", - "1.1445054729335753\n", - "10.369152572003571\n", - "-14.283798410764863\n", - "28.354350405913934\n", - "37.16064469864911\n", - "-23.455267907602074\n", - "37.828863896848134\n", - "45.22768227885496\n", - "-25.00539958813013\n", - "39.72355418752896\n", - "-31.20785585434448\n", - "49.391368799833955\n", - "14.539309886625825\n", - "29.364485305698373\n", - "48.16256179498579\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtRElEQVR4nO3dfVRVdb7H8c8Br4QIBJkg42MCZmHjTad8aFInBNSa2/Q0gpXOLa+mpqZlmdfUbiOlo3bTtLRb15pCu9aM3fKR8aqVOqlZkq5C8AEMyRQCssI8/O4fZ3mmI0pQcJ5+79daey33d++z+Z6zXfLxt397H4cxxggAAMACIb5uAAAAwFsIPgAAwBoEHwAAYA2CDwAAsAbBBwAAWIPgAwAArEHwAQAA1iD4AAAAaxB8AACANQg+AOrF4XDUa9m8ebNGjBihjh07+rplD8XFxRozZoySk5MVHh6u2NhYdevWTSNHjlRxcbF7vzVr1mjmzJm+a1TSiBEjzvvZXn755T7tCwgGzXzdAIDAsH37do/1//iP/9D//d//adOmTR71K664Qu3atdOECRO82V6djh49qquvvloXX3yxJk+erC5duqiiokL79+/X66+/roMHD6pdu3aSXMHn2Wef9Xn4CQ8Pr/XZhoeH+6gbIHgQfADUS69evTzWL730UoWEhNSqS1JUVJS32qqXZcuW6cSJE/rggw/UqVMnd/3mm2/Wo48+qpqaGh92d34X+mwB/Dxc6gLQ6M53qcvhcGjcuHF66aWX1KVLF4WHh6tnz57asWOHjDGaO3euOnXqpJYtW+o3v/mNCgoKah03NzdXN9xwg6KiotSiRQv17dtXf/vb3360n5MnTyokJEStW7c+7/aQkBB3388++6y737PL4cOHJUnGGC1evFjdu3dXeHi4YmJidNttt+ngwYMex+vfv79SUlL07rvvqlevXgoPD9cvfvELTZ8+XU6n80f7BdB0CD4AvObtt9/WCy+8oCeffFI5OTmqqqrSkCFDNHnyZL3//vtatGiRli5dqv379+vWW2+VMcb92j//+c9KS0tTVFSUli9frtdff12xsbFKT0//0fDTu3dv1dTU6JZbbtH69etVWVl53v2mT5+u2267TZLr0t7ZpU2bNpKkUaNGaeLEiUpNTdVf//pXLV68WPv27VOfPn30xRdfeByrtLRUQ4cO1bBhw7R69WrddttteuKJJ+p9CfDbb79VfHy8QkND1bZtW40bN05lZWX1ei2AOhgA+AmGDx9uIiIiLritQ4cOHjVJJj4+3nz99dfu2l//+lcjyXTv3t3U1NS4608//bSRZPbu3WuMMebUqVMmNjbW3HTTTR7HdDqd5pe//KW55ppr6uy1pqbGjBo1yoSEhBhJxuFwmK5du5oHHnjAHDp0yGPfsWPHmvP907h9+3YjycybN8+jXlxcbMLDw82UKVPctX79+hlJZvXq1R77jhw50oSEhJgjR47U2e/8+fPN/PnzzYYNG8yGDRvMtGnTTIsWLczll19uqqqq6nwtgLox4gPAawYMGKCIiAj3eteuXSVJgwYNksPhqFU/cuSIJGnbtm0qKyvT8OHDdebMGfdSU1OjjIwM7dy5U6dOnbrgz3U4HHruued08OBBLV68WH/4wx/0/fffa8GCBbryyiu1ZcuWH+397bfflsPh0J133unRQ3x8vH75y19q8+bNHvtHRkbqt7/9rUctKytLNTU12rp1a50/64EHHtADDzyggQMHauDAgXriiSf08ssv69NPP9WyZct+tFcAF8bkZgBeExsb67HevHnzOuvfffedJLkvI529DHU+ZWVlHqHqfDp06KD77rvPvf76668rMzNTDz30kD744IM6X/vFF1/IGKO4uLjzbr/ssss81s+3X3x8vCTXnKOG+t3vfqeIiAjt2LGjwa8F8A8EHwB+r1WrVpKkhQsXXvBOpwsFkrrccccdys7O1ieffFKvHhwOh959912FhYXV2n5u7dw5P5Jr3o8kXXLJJQ3uVXJNrj47ERvAT0PwAeD3+vbtq4svvlj79+/XuHHjGvz6Y8eOuSco/9DXX3+t4uJiJSQkuGtnA8y3337r8dycG2+8UU8++aQ+//xz3XHHHT/6M6uqqvTWW295XO567bXXFBISouuvv77B72HVqlX65ptvuMUd+JkIPgD8XsuWLbVw4UINHz5cZWVluu2229S6dWt9+eWX+vjjj/Xll19qyZIlF3z9H//4R73//vv6/e9/774V/dChQ1q0aJFOnjypuXPnuvft1q2bJOmpp57SoEGDFBoaqquuukp9+/bVv/3bv+kPf/iDdu3apeuvv14RERE6duyY3nvvPXXr1s3jMtoll1yi++67T0VFRUpOTtaaNWu0bNky3XfffWrfvv0F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", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-42.29236774212642\n", - "-36.75923168190073\n", - "41.852990184297056\n", - "14.240572670477626\n", - "34.354187506325914\n", - "1.1445054729335788\n", - "10.369152572003571\n", - "-14.283798410764861\n", - "28.354350405913934\n", - "37.16064469864911\n", - "-23.455267907602074\n", - "37.828863896848134\n", - "45.22768227885496\n", - "-25.00539958813013\n", - "39.72355418752896\n", - "-31.20785585434448\n", - "49.391368799833955\n", - "14.539309886625828\n", - "29.36448530569837\n", - "48.162561794985756\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAts0lEQVR4nO3de1hVdb7H8c8Gj4QKCJkg4zUuZmHDSae8NF4mArw005Q1gpXOKUdTS4+WZR6TmkZKR51J09JOHWsK9Vgzdkq8MB41UyclU9KnELyAIZlCYFaom3X+2Ic9bUGEgn37vV/Ps57H9V1rL757Lx/5+Fu/tbbNsixLAAAABgjwdAMAAADuQvABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AHQIDabrUHLli1bNGbMGHXt2tXTLbsoLi7WhAkTFB8fr+DgYEVERKhnz54aO3asiouLnfutW7dOGRkZnmv0/50/f14LFixQz549FRwcrLZt26pfv37asWOHp1sDfFoLTzcAwDfs3LnTZf33v/+9/vd//1ebN292qV977bXq1KmTJk+e7M726nX8+HHdcMMNatu2raZNm6bu3buroqJCBw8e1OrVq3X48GF16tRJkiP4vPDCCx4NP3a7Xb/+9a+1fft2TZ8+Xf369dPZs2eVm5urs2fPeqwvwB8QfAA0SJ8+fVzWr7rqKgUEBNSqS1JoaKi72mqQ5cuX69SpU/rwww/VrVs3Z/3222/XE088oerqag92V9uiRYuUnZ2tDz74wOXzHTZsmAe7AvwDl7oANLm6LnXZbDZNmjRJr776qrp3767g4GD17t1bu3btkmVZmjdvnrp166Y2bdroF7/4hQoKCmodNycnR7fccotCQ0PVqlUr9e/fX3//+98v28/p06cVEBCg9u3b17k9ICDA2fcLL7zg7LdmOXr0qCTJsiwtWbJEiYmJCg4OVnh4uEaMGKHDhw+7HG/QoEFKSEjQ+++/rz59+ig4OFg/+clPNGvWLNnt9sv2++c//1kDBgyoM1QC+HEIPgDc5t1339XLL7+sZ599VllZWTpz5oyGDRumadOm6YMPPtDixYu1bNkyHTx4UHfeeacsy3K+9i9/+YuSk5MVGhqqFStWaPXq1YqIiFBKSsplw0/fvn1VXV2tO+64Qxs2bFBlZWWd+82aNUsjRoyQ5Li0V7N06NBBkjRu3DhNmTJFSUlJ+tvf/qYlS5bowIED6tevn7744guXY5WWlmrkyJEaNWqU1q5dqxEjRuiZZ5657CXA4uJiHT16VD179tQTTzyhyMhItWjRQtddd51WrFhx2c8YwGVYAPADjB492mrduvUlt3Xp0sWlJsmKioqyvv76a2ftb3/7myXJSkxMtKqrq531P/3pT5Yka//+/ZZlWdbZs2etiIgI67bbbnM5pt1ut376059aN954Y729VldXW+PGjbMCAgIsSZbNZrN69Ohh/fu//7t15MgRl30nTpxo1fVP486dOy1J1vz5813qxcXFVnBwsDV9+nRnbeDAgZYka+3atS77jh071goICLCOHTt2yV5rfk5oaKh17bXXWqtXr7Y2bNhgjRgxwpJkLVu2rN73CqB+jPgAcJvBgwerdevWzvUePXpIkoYMGSKbzVarfuzYMUnSjh07VFZWptGjR+vChQvOpbq6Wqmpqdq9e3e9k35tNptefPFFHT58WEuWLNFvf/tbnT9/XgsXLtR1112nrVu3Xrb3d999VzabTffcc49LD1FRUfrpT3+qLVu2uOwfEhKiX/7yly619PR0VVdXa9u2bZf8OTXzjb777jutW7dOd911l5KTk7V69WrdcMMNevrppy/bK4BLY3IzALeJiIhwWW/ZsmW99e+++06SnJeRai5D1aWsrMwlVNWlS5cuevDBB53rq1evVlpamh599FF9+OGH9b72iy++kGVZioyMrHP71Vdf7bJe135RUVGSHHOOLuXKK6+UJF1zzTXq0qWLs26z2ZSSkqLMzEydPHnykvOVANSP4APA67Vr106S426nS034vVQgqc/dd9+tzMxMffLJJw3qwWaz6f3331dQUFCt7RfXLp7zIznm/Uj/DDd1iYmJUatWrercZv3/nKeaydgAGo/gA8Dr9e/fX23bttXBgwc1adKkRr/+xIkTzgnK3/f111+ruLhY0dHRzlpNgPn2228VHBzsrA8fPlzPPvusPv/8c919992X/ZlnzpzRO++843K5680331RAQIAGDBhwyde1aNFCv/rVr7RmzRodPXrUeXecZVlav369YmJinEEQQOMRfAB4vTZt2mjRokUaPXq0ysrKNGLECLVv315ffvml9u3bpy+//FJLly695Ov/8Ic/6IMPPtBvfvMb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uLDJGwQAAGgqTfocn1OnTqldu3ZNdTiP4Dk+AAD4nmZ7jk99fD30AAAA/9bou7rsdrsWLlyo1atXq6ioSOfOnXPZXlZW1mTNAQAANKVGj/g89dRTWrBgge6++25VVFRo6tSpuuOOOxQQEKCMjIxmaBEAAKBpNDr4vPHGG1q+fLkeeeQRtWjRQmlpaXr55Zf15JNPateuXc3RIwAAQJNodPApLS1Vz549JUlt2rRRRUWFJGn48OF67733mrY7AACAJtTo4NOxY0edOHFCkhQbG6uNGzdKknbv3q2goKCm7Q4AAKAJNTr4/PrXv9bf//53SdLkyZM1a9YsxcXF6b777tO//du/NXmDAAAATeVHP8dn165d2rFjh2JjY/XLX/6yqfryGJ7jAwCA72no7+9G385+sT59+qhPnz4/9jAAAADN7kc9wDA0NFSHDx9uql4AAACaVYODz/Hjx2vVmvDbLgAAAJpdg4NPQkKCXn/99ebsBQAAoFk1OPjMmTNHEydO1J133qnTp09Lku655x4mAAMAAJ/R4OAzYcIE7du3T+Xl5bruuuv0zjvvaOnSpXwxKQDAePn5Una2dOiQpzvB5TTqrq5u3bpp8+bNWrx4se6880716NFDLVq4HuKjjz5q0gYBAPBWZWVSerq0YcM/aykpUlaWFB7uub5waY2+nf3YsWN66623FBERoV/96le1gg8AAKZIT5dyclxrOTlSWpq0fr1nekL9GpVali9frmnTpikpKUmffPKJrrrqqubqCwAAr5af7zrSU8Nud9QPHZLi4tzfF+rX4Dk+qampeuyxx7R48WK9/fbbXh16lixZom7duumKK65Qr1699P7773u6JQCAnyksrH97QYF7+kDjNDj42O127d+/X/fdd19z9vOjrVq1SlOmTNHMmTO1d+9e/fznP9eQIUNUVFTk6dYAAH4kJqb+7bGx7ukDjfOjv6vL29x000264YYbtHTpUmetR48euv3225WZmXnZ1/NdXQCAhkpNdczpsdv/WQsMlJKSmOPjbg39/f2jvrLC25w7d065ublKTk52qScnJ2vHjh11vqaqqkqVlZUuCwAADZGV5Qg535eU5KjDO/nVLVmnTp2S3W5XZGSkSz0yMlKlpaV1viYzM1NPPfWUO9oDAPiZ8HDHyM6hQ445PbGxTGj2dn414lPDZrO5rFuWVatWY8aM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hTXL8QF4Dk9uBuDVDh06pMTERC1btkyjRo2SJN13333at2+fdu/erZYtW3q4QwC+hBEfAF4tLi5OmZmZeuihh1RSUqK1a9dq5cqVWrFixSVDz2OPPab4+Hi1atVKV199tWbNmqXz589LkizLUlJSklJTU1Xz/76vvvpKnTt31syZMyXVvtR17Ngx3XbbbQoPD1fr1q113XXXad26dc3/5gE0uRaebgAALuehhx7SX//6V913333Ky8vTk08+qcTExEvuHxISov/6r/9SdHS08vLyNHbsWIWEhGj69Omy2WxasWKFevbsqeeff16TJ0/W+PHjFRkZqYyMjDqPN3HiRJ07d07btm1T69atdfDgQbVp06Z53iyAZsWlLgA+4dNPP1WPHj3Us2dPffTRR2rRouH/b5s3b55WrVqlPXv2OGv//d//rXvvvVdTp07Vn//8Z+3du1fx8fGSHCM+gwcPVnl5udq2bavrr79ed955p2bPnt3k7wuAe3GpC4BPeOWVV9SqVSsdOXJEx48flySNHz9ebdq0cS411qxZo5tvvllRUVFq06aNZs2apaKiIpfj3XXXXbrjjjuUmZmp+fPnO0NPXR5++GE988wz6t+/v2bPnq39+/c3z5sE0OwIPgC83s6dO7Vw4UKtXbtWffv21f333y/LsvT000/r448/di6StGvXLo0cOVJDhgzRu+++q71792rmzJk6d+6cyzG/+eYb5ebmKjAwUIcOHar35z/wwAM6fPiw7r33XuXl5al3795atGhRc71dAM2I4APAq3377bcaPXq0xo0bp6SkJL388svavXu3XnrpJbVv316xsbHORZI++OADdenSRTNnzlTv3r0VFxenY8eO1TrutGnTFBAQoOzsbD3//PPavHlzvX106tRJ48eP19tvv61p06Zp+fLlzfJ+ATQvgg8Ar/b444+rurpazz33nCSpc+fOmj9/vh599FEdPXq01v6xsbEqKirSypUrVVhYqOeff15//etfXfZ577339Morr+iNN97Qrbfeqscff1yjR49WeXl5nT1MmTJFGzZs0JEjR/TRRx9p8+bN6tGjR5O/VwDNj8nNALzW1q1bdcstt2jLli26+eabXbalpKTowoULysnJkc1mc9k2ffp0vfLKK6qqqtKwYcPUp08fZWRk6KuvvtKXX36pnj17avLkyZoxY4Yk6cKFC+rfv7+6du2qVatW1Zrc/NBDDyk7O1vHjx9XaGioUlNTtXDhQl155ZVu+ywANA2CDwAAMAaXugAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwxv8BUB2tt+aLHQ0AAAAASUVORK5CYII=", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-42.29236774212642\n", - "-36.75923168190073\n", - "41.85299018429705\n", - "14.240572670477633\n", - "34.354187506325914\n", - "1.1445054729335828\n", - "10.369152572003571\n", - "-14.28379841076486\n", - "28.354350405913934\n", - "37.16064469864911\n", - "-23.45526790760207\n", - "37.828863896848134\n", - "45.22768227885496\n", - "-25.00539958813013\n", - "39.72355418752896\n", - "-31.20785585434448\n", - "49.39136879983395\n", - "14.539309886625832\n", - "29.364485305698366\n", - "48.16256179498571\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtI0lEQVR4nO3de1xVdb7/8fcGj4QIBJkgo6YJmIUNJ53y0qSOBHhpjtNtBDWdUx5NLTlalvkzrdNI6Zhz8pba5VhjaGPN6CmvjEet1FLzQvooBC9gSKYQkBXkZv3+2A/3tAURDPbt+3o+HuvxcH3W2ovP3suHvP2u71rbZlmWJQAAAAMEeLoBAAAAdyH4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAqBebzVavZevWrRo1apQ6dOjg6ZZdFBYWaty4cYqPj1dwcLAiIyPVtWtXjR49WoWFhc791q1bp5kzZ3quUdX9Wd9www0e7Q3wdc083QAA37Bz506X9f/6r//S//3f/2nLli0u9RtvvFHt2rXTxIkT3dlenU6ePKlbbrlFV199tSZPnqzOnTurrKxMhw8f1ttvv62jR4+qXbt2khzBZ+HChR4NPxd/1pL08ccfKyMjQ7/73e880BHgPwg+AOqlR48eLuvXXnutAgICatQlKSwszF1t1cuyZct05swZffLJJ+rYsaOzPmTIED311FOqrq72YHc11faZLlmyRDabTQ8++KAHOgL8B5e6ADS62i512Ww2TZgwQa+//ro6d+6s4OBgde/eXbt27ZJlWZozZ446duyoli1b6je/+Y3y8vJqHDc7O1v9+/dXWFiYWrRood69e+sf//jHZfs5e/asAgIC1Lp161q3BwQEOPteuHChs98Ly/HjxyVJlmVp0aJFSkxMVHBwsCIiInTvvffq6NGjLsfr27evEhIS9MEHH6hHjx4KDg7WL37xC02fPl12u/2y/V6soqJCf/3rX9WnTx/FxsY2+PUA/ongA8Bt3nvvPb3yyit6/vnnlZWVpYqKCg0aNEiTJ0/WRx99pAULFmjp0qU6fPiw7rnnHlmW5XztX/7yFyUnJyssLEzLly/X22+/rcjISKWkpFw2/PTs2VPV1dW6++67tXHjRpWXl9e63/Tp03XvvfdKclxuurC0adNGkjRmzBhlZGQoKSlJf//737Vo0SIdOnRIvXr10ldffeVyrOLiYg0dOlTDhg3TmjVrdO+99+q55567okuAK1eu1Llz5/TQQw81+LUALmIBwBUYOXKkFRIScslt1113nUtNkhUdHW19++23ztrf//53S5KVmJhoVVdXO+t//vOfLUnWwYMHLcuyrHPnzlmRkZHWXXfd5XJMu91u/fKXv7RuvfXWOnutrq62xowZYwUEBFiSLJvNZnXp0sX6z//8T+vYsWMu+44fP96q7Z/GnTt3WpKsuXPnutQLCwut4OBga8qUKc5anz59LEnWmjVrXPYdPXq0FRAQYJ04caLOfi922223WVdffbX1/fffN+h1AGpixAeA2/Tr108hISHO9S5dukiSBgwYIJvNVqN+4sQJSdKOHTtUUlKikSNH6vz5886lurpaqamp2r17t86dO3fJn2uz2fTyyy/r6NGjWrRokf7whz/oxx9/1Lx583TTTTdp27Ztl+39vffek81m0/Dhw116iI6O1i9/+Utt3brVZf/Q0FD99re/damlp6erurpa27dvv+zPu+DQoUP6+OOPNWzYMF111VX1fh2A2jG5GYDbREZGuqw3b968zvoPP/wgSc7LSBcuQ9WmpKTEJVTV5rrrrtPDDz/sXH/77beVlpamxx9/XJ988kmdr/3qq69kWZaioqJq3X799de7rNe2X3R0tCTHnKP6evXVVyWJy1xAIyH4APB6rVq1kiTNnz+/1juepNqDxuXcf//9yszM1GeffVavHmw2mz744AMFBQXV2H5x7eI5P5Jj3o8kXXPNNfXqr6qqSm+++aa6deumxMTEer0GQN0IPgC8Xu/evXX11Vfr8OHDmjBhQoNff+rUKecE5Z/69ttvVVhYqJiYGGftQoD5/vvvFRwc7KwPHjxYzz//vL788kvdf//9l/2ZFRUVWrt2rcvlrrfeeksBAQG644476tX32rVrdebMGT377LP12h/A5RF8AHi9li1bav78+Ro5cqRKSkp07733qnXr1vr666914MABff3111q8ePElX//HP/5RH330kX7/+987b0U/duyYFixYoLNnz2rOnDnOfbt27SpJeuGFFzRgwAAFBgbq5ptvVu/evfUf//Ef+sMf/qA9e/bojjvuUEhIiE6dOqUPP/xQXbt2dbmMds011+jhhx9WQUGB4uPjtW7dOi1btkwPP/yw2rdvX6/3/eqrryo4OFjp6elX+MkBuBjBB4BPGD58uNq3b6/Zs2drzJgxqqioUOvWrZWYmKhRo0bV+doRI0ZIctwWPmfOHJWVlSkyMlLdunXTunXrNGDAAOe+6enp+uijj7Ro0SI9++yzsixLx44dU4cOHbRkyRL16NFDS5Ys0aJFi1RdXa2YmBj17t1bt956q8vPjI6O1sKFC/XYY48pJydHkZGReuqpp/TMM8/U6/0WFhZq06ZNGj58uMLDwxv2YQG4JJtl/eRBGQCAn61v3746c+ZMveYOAXAvbmcHAADGIPgAAABjcKkLAAAYgxEfAABgDIIPAAAwBsEHAAAYg+f4XKS6ulpFRUUKDQ11+dJEAADgvSzLUkVFhWJiYhQQcOlxHYLPRYqKitSuXTtPtwEAAK5AYWGh2rZte8ntBJ+LhIaGSnJ8cGFhYR7uBgAA1Ed5ebnatWvn/D1+KQSfi1y4vBUWFkbwAQDAx1xumgqTmwEAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGHxlBQDA7+XmSvn5UmysFBfn6W7gSYz4AAD8VkmJlJoqde4sDRwoxcc71ktLPd0ZPIXgAwDwW+npUna2ay07W0pL80w/8DyCDwDAL+XmShs3Sna7a91ud9SPHPFMX/Asgg8AwC/l59e9PS/PPX3AuxB8AAB+qVOnurfHxrqnD3gXgg8AwC/Fx0spKVJgoGs9MNBR5+4uMxF8AAB+KytLSkpyrSUlOeowE8/xAQD4rYgIacMGx0TmvDye4wOCDwDAAHFxBB44cKkLAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGD4bfDIzM2Wz2ZSRkeGsWZalmTNnKiYmRsHBwerbt68OHTrkuSYBAIBX8cngs3v3bi1dulQ333yzS3327Nl68cUXtWDBAu3evVvR0dG68847VVFR4aFOAQCAN/G54PPtt99q2LBhWrZsmSIiIpx1y7L05z//WdOmTdPdd9+thIQELV++XN99953eeustD3YMAAC8hc8Fn/Hjx2vQoEFKSkpyqR87dkzFxcVKTk521oKCgtSnTx/t2LHjkserrKxUeXm5ywIAAPxTM0830BArV67U3r17tWfPnhrbiouLJUlRUVEu9aioKJ04ceKSx8zMzNQzzzzTuI0CAACv5DMjPoWFhZo4caJWrFihq6666pL72Ww2l3XLsmrUfmrq1KkqKytzLoWFhY3WMwAA8C4+M+Kzd+9enT59Wt26dXPW7Ha7tm/frgULFuiLL76Q5Bj5adOmjXOf06dP1xgF+qmgoCAFBQU1XeMAAMBr+MyIT//+/ZWTk6P9+/c7l+7du2vYsGHav3+/rr/+ekVHR2vz5s3O11RVVWnbtm3q1auXBzsHAADewmdGfEJDQ5WQkOBSCwkJ0TXXXOOsZ2RkaNasWYqLi1NcXJxmzZqlFi1aKD093RMtAwAAL+Mzwac+pkyZou+//17jxo1TaWmpbrvtNm3atEmhoaGebg0ekJsr5edLsbFSXJynuwEAeAObZVmWp5vwJuXl5QoPD1dZWZnCwsI83Q6uQEmJlJ4ubdz4z1pKipSVJf3k0U8AAD9S39/fPjPHB6iv9HQpO9u1lp0tpaV5ph8A7pWbK61fLx054ulO4I0IPvArubmOkR673bVutzvq/EMI+K+SEik1VercWRo4UIqPd6yXlnq6M3gTgg/8Sn5+3dvz8tzTBwD3Y7QX9UHwgV/p1Knu7bGx7ukDgHsx2ov6IvjAr8THOyYyBwa61gMDHXXu7gL8E6O9qC+CD/xOVpZ00XfYKinJUQfgnxjtRX351XN8AMlxy/qGDY6h7bw8nuMDmODCaG92tuvlrsBAx398+DcAFzDiA78VFycNGMA/eIApGO1FfTDiAwDwC4z2oj4IPgAAvxIXR+DBpXGpCwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACM4TPBJzMzU7/61a8UGhqq1q1ba8iQIfriiy9c9rEsSzNnzlRMTIyCg4PVt29fHTp0yEMdAwAAb+MzwWfbtm0aP368du3apc2bN+v8+fNKTk7WuXPnnPvMnj1bL774ohYsWKDdu3crOjpad955pyoqKjzYOQAA8BY2y7IsTzdxJb7++mu1bt1a27Zt0x133CHLshQTE6OMjAw98cQTkqTKykpFRUXphRde0JgxY+p13PLycoWHh6usrExhYWFN+RYAAEAjqe/vb58Z8blYWVmZJCkyMlKSdOzYMRUXFys5Odm5T1BQkPr06aMdO3Zc8jiVlZUqLy93WQAAgH/yyeBjWZYmTZqk22+/XQkJCZKk4uJiSVJUVJTLvlFRUc5ttcnMzFR4eLhzadeuXdM1DgAAPMong8+ECRN08OBBZWVl1dhms9lc1i3LqlH7qalTp6qsrMy5FBYWNnq/AADAOzTzdAMN9cgjj2jt2rXavn272rZt66xHR0dLcoz8tGnTxlk/ffp0jVGgnwoKClJQUFDTNQwAALyGz4z4WJalCRMm6N1339WWLVvUsWNHl+0dO3ZUdHS0Nm/e7KxVVVVp27Zt6tWrl7vbBQAAXshnRnzGjx+vt956S2vWrFFoaKhz3k54eLiCg4Nls9mUkZGhWbNmKS4uTnFxcZo1a5ZatGih9PR0D3cPAAC8gc8En8WLF0uS+vbt61J//fXXNWrUKEnSlClT9P3332vcuHEqLS3Vbbfdpk2bNik0NNTN3QIAAG/ks8/xaSo8xwcAAN/j98/xAQAAaCiCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYw2e+pBQAAPi23FwpP1+KjZXi4jzTAyM+AAD4odxcaf166cgRT3cilZRIqalS587SwIFSfLxjvbTU/b0QfAAA8CPeFDIuSE+XsrNda9nZUlqa+3sh+AAA4Ee8KWRIjpGnjRslu921brc76u4ekSL4AADgJ7wtZEiOOT11yctzTx8XEHwAAPAT3hYyJKlTp7q3x8a6p48LCD4AAPgJbwsZkmOOUUqKFBjoWg8MdNTdfXcXwQcAAD/hbSHjgqwsKSnJtZaU5Ki7G8/xAQDAj2RlOSYyb9z4z5qnQsYFERHShg2OOUZ5eZ59jg/BBwAAP+JNIeNicXGe74XgAwCAH/KGkOGNmOMDAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMZocPDZsGGDPvzwQ+f6woULlZiYqPT0dJWWljZqcwAAAI2pwcHn8ccfV3l5uSQpJydHkydP1sCBA3X06FFNmjSp0RsEAABoLA3+ktJjx47pxhtvlCS98847Gjx4sGbNmqVPP/1UAwcObPQGAQAAGkuDR3yaN2+u7777TpKUnZ2t5ORkSVJkZKRzJAgAAMAbNXjE5/bbb9ekSZPUu3dvffLJJ1q1apUkKTc3V23btm30BgEAABpLg0d8FixYoGbNmmn16tVavHixfvGLX0iS1q9fr9TU1EZvEAAAoLHYLMuyPN2ENykvL1d4eLjKysoUFhbm6XYAAEA91Pf3d70udZWXlzsPcrl5PIQFAADgreoVfCIiInTq1Cm1bt1aV199tWw2W419LMuSzWaT3W5v9CYBAAAaQ72Cz5YtWxQZGen8c23BBwAAwNsxx+cizPEBAMD31Pf3d4Pv6po+fXqtl7PKysqUlpbW0MMBAAC4TYODzxtvvKHevXsrPz/fWdu6dau6du2q48ePN2ZvAAAAjarBwefgwYPq0KGDEhMTtWzZMj3++ONKTk7WqFGjXL68FAAAwNs0+MnN4eHhWrlypaZNm6YxY8aoWbNmWr9+vfr3798U/QEAADSaBo/4SNL8+fM1b948paWl6frrr9ejjz6qAwcONHZvAAAAjarBwWfAgAF65pln9MYbb2jFihXat2+f7rjjDvXo0UOzZ89uih4BAAAaRYODz/nz53Xw4EHde++9kqTg4GAtXrxYq1ev1rx58xq9QQAAgMbSqM/xOXPmjFq1atVYh/MInuMDAIDvabLn+NTF10MPAADwbw2+q8tut2vevHl6++23VVBQoKqqKpftJSUljdYcAABAY2rwiM8zzzyjF198Uffff7/Kyso0adIk3X333QoICNDMmTOboEUAAIDG0eDgs2LFCi1btkyPPfaYmjVrprS0NL3yyit6+umntWvXrqboEQAAoFE0OPgUFxera9eukqSWLVuqrKxMkjR48GC9//77jdsdAABAI2pw8Gnbtq1OnTolSYqNjdWmTZskSbt371ZQUFDjdgcAANCIGhx8fve73+kf//iHJGnixImaPn264uLi9MADD+jf//3fG71BAACAxvKzn+Oza9cu7dixQ7Gxsfrtb3/bWH15DM/xAQDA99T393eDb2e/WI8ePdSjR4+fexgAAIAm97MeYBgWFqajR482Vi8AAABNqt7B5+TJkzVqjfhtFwAAAE2u3sEnISFBb775ZlP2AgAA0KTqHXxmzZql8ePH65577tHZs2clScOHD2cCMAAA8Bn1Dj7jxo3TgQMHVFpaqptuuklr167V4sWL+WJSAIDxcnOl9eulI0c83Qkup0F3dXXs2FFbtmzRggULdM8996hLly5q1sz1EJ9++mmjNggAgLcqKZHS06WNG/9ZS0mRsrKkiAjP9YVLa/Dt7CdOnNA777yjyMhI/du//VuN4AMAgCnS06XsbNdadraUliZt2OCZnlC3BqWWZcuWafLkyUpKStJnn32ma6+9tqn6AgDAq+Xmuo70XGC3O+pHjkhxce7vC3Wr9xyf1NRUPfHEE1qwYIHeffddrw49ixYtUseOHXXVVVepW7du+uCDDzzdEgDAz+Tn1709L889faBh6h187Ha7Dh48qAceeKAp+/nZVq1apYyMDE2bNk379u3Tr3/9aw0YMEAFBQWebg0A4Ec6dap7e2yse/pAw/zs7+ryNrfddptuueUWLV682Fnr0qWLhgwZoszMzMu+nu/qAgDUV2qqY06P3f7PWmCglJTEHB93q+/v75/1lRXepqqqSnv37lVycrJLPTk5WTt27Kj1NZWVlSovL3dZAACoj6wsR8j5qaQkRx3eya9uyTpz5ozsdruioqJc6lFRUSouLq71NZmZmXrmmWfc0R4AwM9ERDhGdo4ccczpiY1lQrO386sRnwtsNpvLumVZNWoXTJ06VWVlZc6lsLDQHS0CAPxIXJw0YAChxxf41YhPq1atFBgYWGN05/Tp0zVGgS4ICgpSUFCQO9oDAAAe5lcjPs2bN1e3bt20efNml/rmzZvVq1cvD3UFAAC8hV+N+EjSpEmTNGLECHXv3l09e/bU0qVLVVBQoLFjx3q6NQAA4GF+F3x+//vf6+zZs3r22Wd16tQpJSQkaN26dbruuus83RoAAPAwv3uOz8/Fc3wAAPA9Rj7HBwAAoC4EHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMZo5ukGAMAkublSfr4UGyvFxXm6G8A8jPgAgBuUlEipqVLnztLAgVJ8vGO9tNTTnQFmIfgAgBukp0vZ2a617GwpLc0z/QCmIvgAQBPLzZU2bpTsdte63e6oHznimb4AExF8AKCJ5efXvT0vzz19ACD4AECT69Sp7u2xse7pAwDBBwCaXHy8lJIiBQa61gMDHXXu7gLch+ADAG6QlSUlJbnWkpIcdQDuw3N8AMANIiKkDRscE5nz8niOD+ApBB8AcKO4OAIP4Elc6gIAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGD4RfI4fP64HH3xQHTt2VHBwsDp16qQZM2aoqqrKZb+CggLdddddCgkJUatWrfToo4/W2AcAAJjLJ76d/fPPP1d1dbWWLFmi2NhYffbZZxo9erTOnTunP/3pT5Iku92uQYMG6dprr9WHH36os2fPauTIkbIsS/Pnz/fwOwAAAN7AZlmW5ekmrsScOXO0ePFiHT16VJK0fv16DR48WIWFhYqJiZEkrVy5UqNGjdLp06cVFhZWr+OWl5crPDxcZWVl9X4NAADwrPr+/vaJS121KSsrU2RkpHN9586dSkhIcIYeSUpJSVFlZaX27t3riRYBAICX8YlLXRfLz8/X/PnzNXfuXGetuLhYUVFRLvtFRESoefPmKi4uvuSxKisrVVlZ6VwvLy9v/IYBAIBX8OiIz8yZM2Wz2epc9uzZ4/KaoqIipaam6r777tNDDz3kss1ms9X4GZZl1Vq/IDMzU+Hh4c6lXbt2jfPmAACA1/HoiM+ECRM0dOjQOvfp0KGD889FRUXq16+fevbsqaVLl7rsFx0drY8//tilVlpaqh9//LHGSNBPTZ06VZMmTXKul5eXE34AAPBTHg0+rVq1UqtWreq175dffql+/fqpW7duev311xUQ4DpY1bNnT/3xj3/UqVOn1KZNG0nSpk2bFBQUpG7dul3yuEFBQQoKCrryNwEAAHyGT9zVVVRUpD59+qh9+/Z64403FBgY6NwWHR0tyXE7e2JioqKiojRnzhyVlJRo1KhRGjJkSINuZ+euLgAAfE99f3/7xOTmTZs2KS8vT3l5eWrbtq3Ltgu5LTAwUO+//77GjRun3r17Kzg4WOnp6c7n/AAAAPjEiI87MeIDAIDv8fvn+AAAADQUwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMIZPfGUFAABwv9xcKT9fio2V4uI83U3jYMQHAAC4KCmRUlOlzp2lgQOl+HjHemmppzv7+Qg+AADARXq6lJ3tWsvOltLSPNNPYyL4AAAAp9xcaeNGyW53rdvtjvqRI57pq7EQfAAAgFN+ft3b8/Lc00dTIfgAAACnTp3q3h4b654+mgrBBwAAOMXHSykpUmCgaz0w0FH39bu7CD4AAMBFVpaUlORaS0py1H0dz/EBAAAuIiKkDRscE5nz8vzrOT4EHwAAUKu4OP8JPBdwqQsAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+AADAGAQfAABgjGaebgAAANRfbq6Uny/FxkpxcZ7uxvcw4gMAgA8oKZFSU6XOnaWBA6X4eMd6aamnO/MtBB8AAHxAerqUne1ay86W0tI804+vIvgAAODlcnOljRslu921brc76keOeKYvX0TwAQDAy+Xn1709L889ffgDgg8AAF6uU6e6t8fGuqcPf0DwAQDAy8XHSykpUmCgaz0w0FHn7q76I/gAAOADsrKkpCTXWlKSo4764zk+AAD4gIgIacMGx0TmvDye43OlCD4AAPiQuDgCz8/BpS4AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjMGXlLpJbq6Un8+36QIA4EmM+DSxkhIpNVXq3FkaOFCKj3esl5Z6ujMAAMxD8Gli6elSdrZrLTtbSkvzTD8AAJiM4NOEcnOljRslu921brc76keOeKYvAABMRfBpQvn5dW/Py3NPHwAAwIHg04Q6dap7e2yse/oAAAAOBJ8mFB8vpaRIgYGu9cBAR527uwAAcC+CTxPLypKSklxrSUmOOgAAcC+e49PEIiKkDRscE5nz8niODwAAnkTwcZO4OAIPAACexqUuAABgDIIPAAAwhs8Fn8rKSiUmJspms2n//v0u2woKCnTXXXcpJCRErVq10qOPPqqqqirPNAoAALyOz83xmTJlimJiYnTgwAGXut1u16BBg3Tttdfqww8/1NmzZzVy5EhZlqX58+d7qFsAAOBNfGrEZ/369dq0aZP+9Kc/1di2adMmHT58WH/5y1/0r//6r0pKStLcuXO1bNkylZeXe6BbAADgbXwm+Hz11VcaPXq03nzzTbVo0aLG9p07dyohIUExMTHOWkpKiiorK7V37153tgoAALyUT1zqsixLo0aN0tixY9W9e3cdP368xj7FxcWKiopyqUVERKh58+YqLi6+5LErKytVWVnpXGd0CAAA/+XREZ+ZM2fKZrPVuezZs0fz589XeXm5pk6dWufxbDZbjZplWbXWL8jMzFR4eLhzadeu3c9+XwAAwDvZLMuyPPXDz5w5ozNnztS5T4cOHTR06FD97//+r0uAsdvtCgwM1LBhw7R8+XI9/fTTWrNmjcuk59LSUkVGRmrLli3q169frcevbcSnXbt2KisrU1hY2M98hwAAwB3Ky8sVHh5+2d/fHg0+9VVQUOByCaqoqEgpKSlavXq1brvtNrVt21br16/X4MGDdfLkSbVp00aStGrVKo0cOVKnT5+ud4ip7wcHAAC8R31/f/vEHJ/27du7rLds2VKS1KlTJ7Vt21aSlJycrBtvvFEjRozQnDlzVFJSoscee0yjR49uUIC5kAOZ6wMAgO+48Hv7cuM5PhF86iMwMFDvv/++xo0bp969eys4OFjp6em13vpel4qKCklirg8AAD6ooqJC4eHhl9zuE5e63Km6ulpFRUUKDQ2tc1J0U7owz6iwsJDLbR7GufAOnAfvwbnwDpyHmizLUkVFhWJiYhQQcOl7t/xmxKexBAQEOC+feVpYWBh/ob0E58I7cB68B+fCO3AeXNU10nOBzzzAEAAA4Oci+AAAAGMQfLxQUFCQZsyYoaCgIE+3YjzOhXfgPHgPzoV34DxcOSY3AwAAYzDiAwAAjEHwAQAAxiD4AAAAYxB8AACAMQg+XqqyslKJiYmy2Wzav3+/y7aCggLdddddCgkJUatWrfToo4+qqqrKM436qePHj+vBBx9Ux44dFRwcrE6dOmnGjBk1PmfOhXssWrRIHTt21FVXXaVu3brpgw8+8HRLfi0zM1O/+tWvFBoaqtatW2vIkCH64osvXPaxLEszZ85UTEyMgoOD1bdvXx06dMhDHZshMzNTNptNGRkZzhrnoeEIPl5qypQpiomJqVG32+0aNGiQzp07pw8//FArV67UO++8o8mTJ3ugS//1+eefq7q6WkuWLNGhQ4c0b948vfzyy3rqqaec+3Au3GPVqlXKyMjQtGnTtG/fPv3617/WgAEDVFBQ4OnW/Na2bds0fvx47dq1S5s3b9b58+eVnJysc+fOOfeZPXu2XnzxRS1YsEC7d+9WdHS07rzzTuf3HaJx7d69W0uXLtXNN9/sUuc8XAELXmfdunXWDTfcYB06dMiSZO3bt89lW0BAgPXll186a1lZWVZQUJBVVlbmgW7NMXv2bKtjx47Odc6Fe9x6663W2LFjXWo33HCD9eSTT3qoI/OcPn3akmRt27bNsizLqq6utqKjo63nn3/euc8PP/xghYeHWy+//LKn2vRbFRUVVlxcnLV582arT58+1sSJEy3L4jxcKUZ8vMxXX32l0aNH680331SLFi1qbN+5c6cSEhJcRoNSUlJUWVmpvXv3urNV45SVlSkyMtK5zrloelVVVdq7d6+Sk5Nd6snJydqxY4eHujJPWVmZJDn//h87dkzFxcUu5yUoKEh9+vThvDSB8ePHa9CgQUpKSnKpcx6uDF9S6kUsy9KoUaM0duxYde/eXcePH6+xT3FxsaKiolxqERERat68uYqLi93UqXny8/M1f/58zZ0711njXDS9M2fOyG631/ico6Ki+IzdxLIsTZo0SbfffrsSEhIkyfnZ13ZeTpw44fYe/dnKlSu1d+9e7dmzp8Y2zsOVYcTHDWbOnCmbzVbnsmfPHs2fP1/l5eWaOnVqncez2Ww1apZl1VqHq/qei58qKipSamqq7rvvPj300EMu2zgX7nHx58ln7D4TJkzQwYMHlZWVVWMb56VpFRYWauLEiVqxYoWuuuqqS+7HeWgYRnzcYMKECRo6dGid+3To0EHPPfecdu3aVeO7V7p3765hw4Zp+fLlio6O1scff+yyvbS0VD/++GON1I+a6nsuLigqKlK/fv3Us2dPLV261GU/zkXTa9WqlQIDA2uM7pw+fZrP2A0eeeQRrV27Vtu3b1fbtm2d9ejoaEmOEYc2bdo465yXxrV3716dPn1a3bp1c9bsdru2b9+uBQsWOO+04zw0kAfnF+EiJ06csHJycpzLxo0bLUnW6tWrrcLCQsuy/jmhtqioyPm6lStXMqG2CZw8edKKi4uzhg4dap0/f77Gds6Fe9x6663Www8/7FLr0qULk5ubUHV1tTV+/HgrJibGys3NrXV7dHS09cILLzhrlZWVTKptZOXl5S6/E3Jycqzu3btbw4cPt3JycjgPV4jg48WOHTtW466u8+fPWwkJCVb//v2tTz/91MrOzrbatm1rTZgwwXON+qEvv/zSio2NtX7zm99YJ0+etE6dOuVcLuBcuMfKlSutf/mXf7FeffVV6/Dhw1ZGRoYVEhJiHT9+3NOt+a2HH37YCg8Pt7Zu3eryd/+7775z7vP8889b4eHh1rvvvmvl5ORYaWlpVps2bazy8nIPdu7/fnpXl2VxHq4EwceL1RZ8LMsxMjRo0CArODjYioyMtCZMmGD98MMPnmnST73++uuWpFqXn+JcuMfChQut6667zmrevLl1yy23OG+rRtO41N/9119/3blPdXW1NWPGDCs6OtoKCgqy7rjjDisnJ8dzTRvi4uDDeWg4m2VZlgeusAEAALgdd3UBAABjEHwAAIAxCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AGAi2zdulU2m03ffPONp1sB0MgIPgC8lt1uV69evXTPPfe41MvKytSuXTv9v//3/5rk5/bq1UunTp1SeHh4kxwfgOfw5GYAXu3IkSNKTEzU0qVLNWzYMEnSAw88oAMHDmj37t1q3ry5hzsE4EsY8QHg1eLi4pSZmalHHnlERUVFWrNmjVauXKnly5dfMvQ88cQTio+PV4sWLXT99ddr+vTp+vHHHyVJlmUpKSlJqampuvD/vm+++Ubt27fXtGnTJNW81HXixAndddddioiIUEhIiG666SatW7eu6d88gEbXzNMNAMDlPPLII/rb3/6mBx54QDk5OXr66aeVmJh4yf1DQ0P1P//zP4qJiVFOTo5Gjx6t0NBQTZkyRTabTcuXL1fXrl310ksvaeLEiRo7dqyioqI0c+bMWo83fvx4VVVVafv27QoJCdHhw4fVsmXLpnmzAJoUl7oA+ITPP/9cXbp0UdeuXfXpp5+qWbP6/79tzpw5WrVqlfbs2eOs/fWvf9WIESM0adIk/fd//7f27dun+Ph4SY4Rn379+qm0tFRXX321br75Zt1zzz2aMWNGo78vAO7FpS4APuG1115TixYtdOzYMZ08eVKSNHbsWLVs2dK5XLB69Wrdfvvtio6OVsuWLTV9+nQVFBS4HO++++7T3XffrczMTM2dO9cZemrz6KOP6rnnnlPv3r01Y8YMHTx4sGneJIAmR/AB4PV27typefPmac2aNerZs6cefPBBWZalZ599Vvv373cukrRr1y4NHTpUAwYM0Hvvvad9+/Zp2rRpqqqqcjnmd999p7179yowMFBHjhyp8+c/9NBDOnr0qEaMGKGcnBx1795d8+fPb6q3C6AJEXwAeLXvv/9eI0eO1JgxY5SUlKRXXnlFu3fv1pIlS9S6dWvFxsY6F0n66KOPdN1112natGnq3r274uLidOLEiRrHnTx5sgICArR+/Xq99NJL2rJlS519tGvXTmPHjtW7776ryZMna9myZU3yfgE0LYIPAK/25JNPqrq6Wi+88IIkqX379po7d64ef/xxHT9+vMb+sbGxKigo0MqVK5Wfn6+XXnpJf/vb31z2ef/99/Xaa69pxYoVuvPOO/Xkk09q5MiRKi0trbWHjIwMbdy4UceOHdOnn36qLVu2qEuXLo3+XgE0PSY3A/Ba27ZtU//+/bV161bdfvvtLttSUlJ0/vx5ZWdny2azuWybMmWKXnvtNVVWVmrQoEHq0aOHZs6cqW+++UZff/21unbtqokTJ2rq1KmSpPPnz6t3797q0KGDVq1aVWNy8yOPPKL169fr5MmTCgsLU2pqqubNm6drrrnGbZ8FgMZB8AEAAMbgUhcAADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxvj/G52FhaI14g8AAAAASUVORK5CYII=", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-42.29236774212642\n", - "-36.75923168190073\n", - "41.85299018429704\n", - "14.24057267047764\n", - "34.354187506325914\n", - "1.1445054729335875\n", - "10.369152572003571\n", - "-14.283798410764858\n", - "28.354350405913934\n", - "37.16064469864911\n", - "-23.455267907602067\n", - "37.828863896848134\n", - "45.22768227885496\n", - "-25.00539958813013\n", - "39.72355418752896\n", - "-31.20785585434448\n", - "49.39136879983394\n", - "14.539309886625837\n", - "29.364485305698363\n", - "48.16256179498566\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAt0UlEQVR4nO3de1hVdb7H8c8Gk1CBIBNk8EICjoWNjVZemtSJAC/NdOwygpXOKY+mpB4ty/GYWo2UZs4EaWqTx8rQjjVjp7wyHjVvM2qWpE8hiIIhmUJgVpibdf7Yj3vaoggG+/Z7v55nPY/ru9ZefDfLx/3xt35rbZtlWZYAAAAMEODpBgAAANyF4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgA6BebDZbvZZNmzZpxIgR6tixo6dbdlFSUqIxY8YoISFBwcHBioiIUNeuXTVy5EiVlJQ491u9erVmzJjhuUYlWZalxYsXq3v37goNDdXVV1+tvn376oMPPvBoX4A/sPGVFQDqY+fOnS7rzzzzjP7v//5PGzdudKlfd911+uqrr1RVVaUbb7zRnS1e1NGjR3XjjTfqqquu0qRJk9S5c2dVVlbqwIEDevvtt/XnP/9Zffv2lSRlZGTo5Zdflif/aXzqqaf0zDPPaPTo0RoyZIi+//57ZWVlacOGDXrnnXc0ZMgQj/UG+DqCD4DLMmLECK1cuVLffPONp1u5pOnTp+vpp5/WoUOHFBsbW2t7TU2NAgIcA+DeEHxiYmIUGxurDz/80Fn7/vvvFRUVpb59+2rVqlUe6w3wdVzqAtDoLnSpy2azKSMjQ0uWLFHnzp0VHBysHj16aOfOnbIsS3PmzFFsbKxatWqlX//61yooKKh13NzcXN1+++0KDQ1VixYt1KdPH/3973+/ZD8nT55UQECA2rRpc8Ht50LPiBEj9PLLLzv7PbccPnxYkuMS1Pz589WtWzcFBwcrPDxc99xzjw4dOuRyvH79+ikxMVEffvihevbsqeDgYP3sZz/TtGnTZLfbL9nvFVdcobCwMJfalVde6VwAXD6CDwC3ef/99/Xqq6/queeeU05Ojk6dOqVBgwZp0qRJ2rZtm7Kzs7Vo0SIdOHBAd999t8uoy5tvvqnk5GSFhoZq6dKlevvttxUREaGUlJRLhp9evXqppqZGQ4YM0bp161RVVXXB/aZNm6Z77rlHkrRjxw7n0rZtW0nSqFGjNGHCBCUlJelvf/ub5s+fr/3796t379768ssvXY5VVlamoUOHatiwYVq1apXuuecePfvssxo/fvwlf0/jx4/X2rVr9Ze//EUVFRU6duyYJk6cqMrKSo0bN+6SrwdQBwsALsPw4cOtli1bXnRbhw4dXGqSrKioKOubb75x1v72t79Zkqxu3bpZNTU1zvqf/vQnS5K1b98+y7Is6/Tp01ZERIR15513uhzTbrdbv/jFL6ybb765zl5ramqsUaNGWQEBAZYky2azWV26dLH+8z//0yoqKnLZd+zYsdaF/mncsWOHJcmaO3euS72kpMQKDg62Jk+e7Kz17dvXkmStWrXKZd+RI0daAQEB1pEjR+rs17Is65VXXrGCgoIsSZYkKyIiwtqwYcMlXwegboz4AHCb/v37q2XLls71Ll26SJIGDBggm81Wq37kyBFJ0vbt21VeXq7hw4fr7NmzzqWmpkapqanatWuXTp8+fdGfa7PZ9Morr+jQoUOaP3++fv/73+uHH37QvHnzdP3112vz5s2X7P3999+XzWbT/fff79JDVFSUfvGLX2jTpk0u+4eEhOg3v/mNSy09PV01NTXasmVLnT9ryZIlGj9+vDIyMpSbm6vVq1crOTlZv/3tb7Vu3bpL9grg4pp5ugEA5oiIiHBZb968eZ3177//XpKcl5HOXYa6kPLycpdQdSEdOnTQI4884lx/++23lZaWpscff1z//Oc/63ztl19+KcuyFBkZecHt1157rcv6hfaLioqS5JhzdDEVFRUaO3asHn74Yb3wwgvO+oABA9SvXz+NHj1aRUVFdfYK4OIIPgC8XuvWrSVJWVlZ6tmz5wX3uVggqct9992nzMxMffrpp/XqwWaz6cMPP1RQUFCt7efXzp/zIznm/UjS1VdffdGf8/nnn+u7777TTTfdVGtbjx49tHnzZn3zzTdq1arVJXsGUBvBB4DX69Onj6666iodOHBAGRkZDX79sWPHnBOUf+ybb75RSUmJoqOjnbVzAea7775TcHCwsz548GA999xz+uKLL3Tfffdd8meeOnVK7733nsvlrrfeeksBAQG67bbbLvq6c73s3LlTw4cPd9Yty9LOnTsVHh5+yZEtABdH8AHg9Vq1aqWsrCwNHz5c5eXluueee9Sm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udQ5D5eHLyn1IpZlacSIERo9erR69Oihw4cP19qnrKxMkZGRLrXw8HA1b95cZWVlburUPIWFhcrKytLcuXOdNc5F0ztx4oTsdnut33NkZCS/YzexLEsTJ07UrbfeqsTEREly/u4vdF6OHDni9h792fLly7Vnzx7t3r271jbOw+VhxMcNZsyYIZvNVueye/duZWVlqaqqSlOmTKnzeDabrVbNsqwL1uGqvufix0pLS5Wamqp7771XDz/8sMs2zoV7nP/75HfsPhkZGdq3b59ycnJqbeO8NK2SkhKNHz9ey5Yt05VXXnnR/TgPDcOIjxtkZGRo6NChde7TsWNHPfvss9q5c2et717p0aOHhg0bpqVLlyoqKkr/+Mc/XLZXVFTohx9+qJX6UVt9z8U5paWl6t+/v3r16qVFixa57Me5aHqtW7dWYGBgrdGd48eP8zt2g0cffVTvvfeetmzZopiYGGc9KipKkmPEoW3bts4656Vx7dmzR8ePH1f37t2dNbvdri1btig7O9t5px3noYE8OL8I5zly5IiVl5fnXNatW2dJslauXGmVlJRYlvWvCbWlpaXO1y1fvpwJtU3g6NGjVnx8vDV06FDr7NmztbZzLtzj5ptvth555BGXWpcuXZjc3IRqamqssWPHWtHR0VZ+fv4Ft0dFRVnPP/+8s1ZdXc2k2kZWVVXl8pmQl5dn9ejRw7r//vutvLw8zsNlIvh4saKiolp3dZ09e9ZKTEy0br/9duujjz6ycnNzrZiYGCsjI8NzjfqhL774woqLi7N+/etfW0ePHrWOHTvmXM7hXLjH8uXLrSuuuML6y1/+Yh04cMCaMGGC1bJlS+vw4cOebs1vPfLII1ZYWJi1adMml7/73377rXOf5557zgoLC7PeffddKy8vz0pLS7Patm1rVVVVebBz//fju7osi/NwOQg+XuxCwceyHCNDgwYNsoKDg62IiAgrIyPD+v777z3TpJ9asmSJJemCy49xLtzj5Zdftjp06GA1b97c+uUvf+m8rRpN42J/95csWeLcp6amxpo+fboVFRVlBQUFWbfddpuVl5fnuaYNcX7w4Tw0nM2yLMsDV9gAAADcjru6AACAMQg+AADAGAQfAABgDIIPAAAwBsEHAAAYg+ADAACMQfABAADGIPgAwHk2bdokm82mr7/+2tOtAGhkBB8AXstut6t37966++67XeqVlZVq166d/uu//qtJfm7v3r117NgxhYWFNcnxAXgOT24G4NUOHjyobt26adGiRRo2bJgk6cEHH9Qnn3yiXbt2qXnz5h7uEIAvYcQHgFeLj49XZmamHn30UZWWlmrVqlVavny5li5detHQ88QTTyghIUEtWrTQtddeq2nTpumHH36QJFmWpaSkJKWmpurc//u+/vprtW/fXlOnTpVU+1LXkSNHdOeddyo8PFwtW7bU9ddfr9WrVzf9mwfQ6Jp5ugEAuJRHH31Uf/3rX/Xggw8qLy9PTz31lLp163bR/UNCQvTf//3fio6OVl5enkaOHKmQkBBNnjxZNptNS5cuVdeuXfXSSy9p/PjxGj16tCIjIzVjxowLHm/s2LE6c+aMtmzZopYtW+rAgQNq1apV07xZAE2KS10AfMJnn32mLl26qGvXrvroo4/UrFn9/982Z84crVixQrt373bW/ud//kcPPPCAJk6cqD//+c/au3evEhISJDlGfPr376+KigpdddVVuuGGG3T33Xdr+vTpjf6+ALgXl7oA+ITXXntNLVq0UFFRkY4ePSpJGj16tFq1auVczlm5cqVuvfVWRUVFqVWrVpo2bZqKi4tdjnfvvfdqyJAhyszM1Ny5c52h50LGjRunZ599Vn369NH06dO1b9++pnmTAJocwQeA19uxY4fmzZunVatWqVevXnrooYdkWZaefvppffzxx85Fknbu3KmhQ4dqwIABev/997V3715NnTpVZ86ccTnmt99+qz179igwMFAHDx6s8+c//PDDOnTokB544AHl5eWpR48eysrKaqq3C6AJEXwAeLXvvvtOw4cP16hRo5SUlKRXX31Vu3bt0sKFC9WmTRvFxcU5F0natm2bOnTooKlTp6pHjx6Kj4/XkSNHah130qRJCggI0Jo1a/TSSy9p48aNdfbRrl07jR49Wu+++64mTZqkxYsXN8n7BdC0CD4AvNqTTz6pmpoaPf/885Kk9u3ba+7cuXr88cd1+PDhWvvHxcWpuLhYy5cvV2FhoV566SX99a9/ddnngw8+0GuvvaZly5bpjjvu0JNPPqnhw4eroqLigj1MmDBB69atU1FRkT766CNt3LhRXbp0afT3CqDpMbkZgNfavHmzbr/9dm3atEm33nqry7aUlBSdPXtWubm5stlsLtsmT56s1157TdXV1Ro0aJB69uypGTNm6Ouvv9ZXX32lrl27avz48ZoyZYok6ezZs+rTp486duyoFStW1Jrc/Oijj2rNmjU6evSoQkNDlZqaqnnz5unqq6922+8CQOMg+AAAAGNwqQsAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgAAwBgEHwAAYAyCDwAAMAbBBwAAGIPgAwAAjEHwAQAAxiD4AAAAY/w/V1jSAkUuzxIAAAAASUVORK5CYII=", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-42.29236774212642\n", - "-36.75923168190073\n", - "41.852990184297035\n", - "14.240572670477649\n", - "34.354187506325914\n", - "1.1445054729335926\n", - "10.369152572003571\n", - "-14.283798410764856\n", - "28.354350405913934\n", - "37.16064469864911\n", - "-23.455267907602064\n", - "37.828863896848134\n", - "45.22768227885496\n", - "-25.00539958813013\n", - "39.72355418752896\n", - "-31.20785585434448\n", - "49.391368799833934\n", - "14.539309886625842\n", - "29.36448530569836\n", - "48.162561794985606\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtxklEQVR4nO3de1RVdd7H8c8Bk1CBIANkvCYHs7AsnfLSeJkQ8NJM020EM52nfLyWjpZlPqY2jZSOWWpa2tRYU2hZjT3llXzUSp3UNElXIXgBQzIFwawgD/v54yzPdEQRDM7t936ttddyf/c+m+9huzwff/u397FZlmUJAADAAEHebgAAAMBTCD4AAMAYBB8AAGAMgg8AADAGwQcAABiD4AMAAIxB8AEAAMYg+AAAAGMQfAAAgDEIPgBqxGaz1WjZsGGDhg4dqtatW3u7ZTcFBQUaNWqUEhISFBoaqqioKHXo0EHDhg1TQUGBa7+VK1dq2rRp3mtUkmVZmjt3rq666iqFhISoWbNmGjlypEpKSrzaFxAIbHxlBYCa2Lp1q9v6X/7yF/3f//2f1q9f71a/+uqr9e2336qsrEzXX3+9J1s8r8OHD+v666/XZZddpgkTJqhdu3YqLS3V3r179eabb+q5555Tz549JUljxozR888/L2/+0zhhwgQ9++yzeuihh5SUlKS9e/fq8ccfl91u15YtW3TJJZd4rTfA3zXwdgMA/EOXLl3c1q+44goFBQVVqUtSeHi4p9qqkcWLF+vYsWP69NNP1aZNG1f9tttu02OPPabKykovdufu66+/1nPPPafRo0fr6aefliT16dNH0dHRSk9P1z/+8Q8NGzbMy10C/otLXQDq3LkuddlsNo0ZM0avvPKK2rVrp9DQUHXu3Flbt26VZVmaNWuW2rRpoyZNmui3v/2tcnNzqxw3KytLt9xyi8LDw9WoUSN1795dH3744QX7OX78uIKCghQdHX3O7UFBQa6+n3/+eVe/Z5aDBw9Kcl6CWrBggTp27KjQ0FBFRkbqzjvv1P79+92O16tXLyUmJuqjjz5Sly5dFBoaql/96leaMmWKHA5Htb1u3bpVDodD/fr1c6sPGDBAkvT2229f8P0COD+CDwCPef/99/XSSy/pqaeeUmZmpk6ePKn+/ftrwoQJ+uSTTzR//nwtWrRIe/fu1R133OF2uemf//ynkpOTFR4eriVLlujNN99UVFSUUlJSLhh+unbtqsrKSt1+++1as2aNysrKzrnflClTdOedd0qStmzZ4lqaNWsmSRo+fLjGjRunpKQk/etf/9KCBQu0Z88edevWTd98843bsYqKijRw4EANGjRIK1as0J133qknn3xSY8eOrbbXiooKSVJISIhb/ZJLLpHNZtPu3burfT2AC7AA4CIMGTLEaty48Xm3tWrVyq0myYqNjbW+++47V+1f//qXJcnq2LGjVVlZ6ao/++yzliRr9+7dlmVZ1qlTp6yoqCjr1ltvdTumw+GwrrvuOuvGG2+sttfKykpr+PDhVlBQkCXJstlsVvv27a0///nP1oEDB9z2HT16tHWufxq3bNliSbJmz57tVi8oKLBCQ0OtiRMnumo9e/a0JFkrVqxw23fYsGFWUFCQdejQofP2umvXLkuS9Ze//MWt/uGHH1qSrIYNG1b7XgFUjxEfAB7Tu3dvNW7c2LXevn17SVLfvn1ls9mq1A8dOiRJ2rx5s4qLizVkyBCdPn3atVRWVio1NVXbtm3TqVOnzvtzbTabXnjhBe3fv18LFizQn/70J/3000+aM2eOrrnmGm3cuPGCvb///vuy2Wy655573HqIjY3Vddddpw0bNrjtHxYWpt/97ndutfT0dFVWVmrTpk3n/TnXXXedevTooVmzZumtt97SiRMntHnzZo0YMULBwcGuy3IALg6TmwF4TFRUlNt6w4YNq63/+OOPkuS6jHTmMtS5FBcXu4Wqc2nVqpVGjhzpWn/zzTeVlpamhx9+WJ9++mm1r/3mm29kWZZiYmLOuf3KK690Wz/XfrGxsZKcc46q89Zbb2no0KG6++67JTl/H3/+85+VlZWlEydOVPtaANUj+ADweU2bNpUkzZs375x3kUnnDhoXcvfddysjI0NffPFFjXqw2Wz66KOPqsy/karOyTl7zo/knPcjSZdffnm1Pys6OlorV67U0aNHVVRUpFatWik0NFQLFiyoNvwBuDCCDwCf1717d1122WXau3evxowZU+vXHzlyxDVB+ee+++47FRQUKC4uzlU7E2B++OEHhYaGuuoDBgzQU089pa+//to1ElOdkydP6r333nO73PXGG28oKChIPXr0qFHf0dHRrjvR5s6dq1OnTl3U+wfwHwQfAD6vSZMmmjdvnoYMGaLi4mLdeeedio6O1rff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", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-42.29236774212642\n", - "-36.75923168190073\n", - "41.85299018429703\n", - "14.240572670477658\n", - "34.354187506325914\n", - "1.1445054729335984\n", - "10.369152572003571\n", - "-14.283798410764854\n", - "28.354350405913934\n", - "37.16064469864911\n", - "-23.45526790760206\n", - "37.828863896848134\n", - "45.22768227885496\n", - "-25.005399588130125\n", - "39.72355418752896\n", - "-31.20785585434448\n", - "49.39136879983393\n", - "14.539309886625848\n", - "29.364485305698352\n", - "48.16256179498554\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHFCAYAAADyj/PrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAt8UlEQVR4nO3dfVRVdb7H8c8BR0QEglCQ1DQBs7CcdPKpSZ0IUGtut6dRrLSbTiaWXp0sxzFpbknlmDNpWdqtrCm0qSa75SM5aqbOqFmSrkLwAQzJFAKzAj387h8sz3hECQrO0+/9Wmuv5fnuffb5nrNdno+//dv7OIwxRgAAABYI8nYDAAAAnkLwAQAA1iD4AAAAaxB8AACANQg+AADAGgQfAABgDYIPAACwBsEHAABYg+ADAACsQfAB4MbhcDRoWbdunUaPHq3OnTt7u2U3xcXFGj9+vJKSkhQaGqro6Gj16NFDY8eOVXFxsWu75cuXKysry3uNStq4caPGjBmjXr16KSQkRA6HQ/v37z/n9vPmzdPFF1+skJAQdenSRQ8//LBOnDjhuYaBANDC2w0A8C2bN292e/w///M/+sc//qG1a9e61S+55BJ17NhREydO9GR79Tp48KCuuOIKnXfeeZoyZYq6deumiooK7d69W6+//rr27t2rjh07SqoNPk8//bRXw8/777+v3Nxc/fznP1dERITWrVt3zm0fffRRzZgxQw8++KBSU1O1detW/eEPf9AXX3yhhQsXeq5pwN8ZAKjHqFGjTFhYmLfbaJCHHnrISDJ79+4963qn0+n6c2ZmpvH2P4Gn9zN79mwjyezbt6/OdkeOHDGtWrUyv/3tb93qjz76qHE4HGbXrl3N3SoQMDjVBeBHO9upLofDoQkTJujFF19Ut27dFBoaqt69e2vLli0yxmj27Nnq0qWL2rRpo1/96lcqKCios9/c3Fxdc801ioiIUOvWrTVgwAC9//77P9jP0aNHFRQUpHbt2p11fVBQkKvvp59+2tXvqeXUaSZjjJ555hn17NlToaGhioqK0s0336y9e/e67W/QoEFKTk7WBx98oL59+yo0NFQXXHCBZsyYIafT+YP9nurnh6xcuVLff/+97rzzTrf6nXfeKWOM3n777QbtBwBzfAA0g3fffVfPP/+8HnvsMeXk5OjYsWMaNmyYpkyZog8//FDz58/XwoULtXv3bt10000yxrie+9e//lWpqamKiIjQ4sWL9frrrys6OlppaWk/GH769eunmpoa3XjjjVq1apUqKyvPut2MGTN08803S6o9tXdqad++vSTp7rvv1qRJk5SSkqK3335bzzzzjHbt2qX+/fvryy+/dNtXaWmphg8frpEjR2rZsmW6+eab9cgjjzTpKcBPP/1UktSjRw+3evv27RUTE+NaD6ABvDvgBMDX1Xeqa9SoUebCCy90q0kycXFx5ptvvnHV3n77bSPJ9OzZ09TU1Ljqf/7zn40ks3PnTmOMMcePHzfR0dHm+uuvd9un0+k0l19+ubnyyivr7bWmpsbcfffdJigoyEgyDofDdO/e3fz3f/93nVNI5zrVtXnzZiPJzJkzx61eXFxsQkNDzdSpU121gQMHGklm2bJlbtuOHTvWBAUFmQMHDtTb7+nqO9U1duxYExISctbnJSUlmdTU1Aa/DmA7RnwANLnBgwcrLCzM9bh79+6SpCFDhsjhcNSpHzhwQJK0adMmlZWVadSoUTp58qRrqampUXp6urZu3arjx4+f83UdDoeeffZZ7d27V88884zuvPNOnThxQnPnztWll16q9evX/2Dv7777rhwOh2677Ta3HuLi4nT55ZfXmYAcHh6uX//61261jIwM1dTUaMOGDT/4eg11+ufWmHUA3HFVF4AmFx0d7fa4ZcuW9da///57SXKdRjp1GupsysrK3ELV2Vx44YW65557XI9ff/11jRgxQvfff7/+9a9/1fvcL7/8UsYYxcbGnnX9RRdd5Pb4bNvFxcVJqp1z1BTOP/98ff/99/r222/VunVrt3VlZWXq1atXk7wOYAOCDwCfERMTI6n2fjV9+/Y96zbnCiT1ufXWW5Wdnd2guTAxMTFyOBz64IMPFBISUmf9mbUz5/xItfN+pNrA0hROze3Jy8tTnz593F7nyJEjSk5ObpLXAWxA8AHgMwYMGKDzzjtPu3fv1oQJExr9/EOHDrkmKJ/um2++UXFxseLj4121UwHmu+++U2hoqKt+3XXX6bHHHtMXX3yhW2+99Qdf89ixY3rnnXfcTne99tprCgoK0tVXX93o93A26enpatWqlV566SW34PPSSy/J4XDohhtuaJLXAWxA8AHgM9q0aaN58+Zp1KhRKisr080336x27drpq6++0ieffKKvvvpKCxYsOOfzH330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/wn4+/gAAAA0FsEHAABYg+ADAACsQfABAADWIPgAAABrEHwAAIA1CD4AAMAaBB8AAGANgg8AALAGwQcAAFiD4AMAAKzhNz9SCgAA/Ft+vlRYKCUkSImJ3umBER8AAAJQfr60YoW0Z4+3O5HKyqT0dKlbN2noUCkpqfZxebnneyH4AAAQQHwpZJySkSHl5rrXcnOlESM83wvBBwCAAOJLIUOqHXlatUpyOt3rTmdt3dMjUgQfAAAChK+FDKl2Tk99Cgo808cpBB8AAAKEr4UMSeratf71CQme6eMUgg8AAAHC10KGVDvHKC1NCg52rwcH19Y9fXUXwQcAgADhayHjlJwcKSXFvZaSUlv3NO7jAwBAAMnJqZ3IvGrVv2veChmnREVJK1fWzjEqKPDufXwIPgAABBBfChlnSkz0fi8EHwAAApAvhAxfxBwfAABgDYIPAACwBsEHAABYg+ADAACsQfABAADWIPgAAABrEHwAAIA1CD4AAMAaBB8AAGANgg8AALBGo4PPypUrtXHjRtfjp59+Wj179lRGRobKy8ubtDkAAICm1Ojgc//996uyslKSlJeXpylTpmjo0KHau3evJk+e3OQNAgAANJVG/0jpvn37dMkll0iS3nzzTV133XWaNWuWPvroIw0dOrTJGwQAAGgqjR7xadmypb799ltJUm5urlJTUyVJ0dHRrpEgAAAAX9ToEZ+rrrpKkydP1oABA/Svf/1LS5culSTl5+erQ4cOTd4gAABAU2n0iM/8+fPVokULvfHGG1qwYIEuuOACSdKKFSuUnp7e5A0CAAA0FYcxxni7CV9SWVmpyMhIVVRUKCIiwtvtAACABmjo93eDTnVVVla6dvJD83gICwAAwFc1KPhERUXp0KFDateunc477zw5HI462xhj5HA45HQ6m7xJAACAptCg4LN27VpFR0e7/ny24AMAAODrmONzBub4AADgfxr6/d3oq7pmzJhx1tNZFRUVGjFiRGN3BwAA4DGNDj4vv/yyBgwYoMLCQldt3bp16tGjh/bv39+UvQEAADSpRgefnTt3qnPnzurZs6cWLVqk+++/X6mpqRo9erTbj5cCAAD4mkbfuTkyMlJLlizR9OnTdffdd6tFixZasWKFrrnmmuboDwAAoMk0esRHkubNm6e5c+dqxIgRuuiii3Tffffpk08+aereAAAAmlSjg8+QIUP08MMP6+WXX9arr76qHTt26Oqrr1bfvn31xBNPNEePAAAATaLRwefkyZPauXOnbr75ZklSaGioFixYoDfeeENz585t8gYBAACaSpPex+fIkSOKiYlpqt15BffxAQDA/zTbfXzq4++hBwAABLZGX9XldDo1d+5cvf766yoqKlJ1dbXb+rKysiZrDgAAoCk1esTn4Ycf1pNPPqlbb71VFRUVmjx5sm688UYFBQUpKyurGVoEAABoGo0OPq+++qoWLVqk3/3ud2rRooVGjBih559/Xg899JC2bNnSHD0CAAA0iUYHn9LSUvXo0UOS1KZNG1VUVEiSrrvuOr333ntN2x0AAEATanTw6dChgw4dOiRJSkhI0OrVqyVJW7duVUhISNN2BwAA0IQaHXz+8z//U++//74kaeLEiZoxY4YSExN1xx136L/+67+avEEAAICm8pPv47NlyxZt2rRJCQkJ+vWvf91UfXkN9/EBAMD/NPT7u9GXs5+pb9++6tu370/dDQAAQLP7STcwjIiI0N69e5uqFwAAgGbV4OBz8ODBOrUm/LULAACAZtfg4JOcnKxXXnmlOXsBAABoVg0OPrNmzVJmZqZuuukmHT16VJJ02223MQEYAAD4jQYHn/Hjx+uTTz5ReXm5Lr30Ur3zzjtasGABP0wKALBefr60YoW0Z4+3O8EPadRVXV26dNHatWs1f/583XTTTerevbtatHDfxUcffdSkDQIA4KvKyqSMDGnVqn/X0tKknBwpKsp7feHcGn05+4EDB/Tmm28qOjpa//Ef/1En+AAAYIuMDCk3172WmyuNGCGtXOmdnlC/RqWWRYsWacqUKUpJSdGnn36qtm3bNldfAAD4tPx895GeU5zO2vqePVJiouf7Qv0aPMcnPT1dDzzwgObPn6+33nrLp0PPM888oy5duqhVq1bq1auXPvjgA2+3BAAIMIWF9a8vKPBMH2icBgcfp9OpnTt36o477mjOfn6ypUuXatKkSZo+fbp27NihX/7ylxoyZIiKioq83RoAIIB07Vr/+oQEz/SBxvnJv9Xla/r06aMrrrhCCxYscNW6d++uG264QdnZ2T/4fH6rCwDQUOnptXN6nM5/14KDpZQU5vh4WkO/v3/ST1b4murqam3fvl2pqalu9dTUVG3atOmsz6mqqlJlZaXbAgBAQ+Tk1Iac06Wk1NbhmwLq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", - "text/plain": [ - "<Figure size 640x480 with 1 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import matplotlib.animation as animation\n", - "import numpy as np\n", - "\n", - "# Simulation class for galaxy collision using Barnes-Hut and Euler method\n", - "class GalaxyCollisionSimulation:\n", - " def __init__(self, num_particles):\n", - " # Initialize the simulation with a given number of particles\n", - " self.num_particles = num_particles\n", - " self.particles = self.initialize_particles() # Generate random particles\n", - " self.barnes_hut = MainApp() # Initialize Barnes-Hut algorithm instance\n", - " self.barnes_hut.BuildTree(self.particles) # Build the Barnes-Hut tree with particles\n", - " self.barnes_hut.rootNode.compute_center_of_mass() #Compute the center of mass of the node\n", - " self.particle_positions = {i: [(particle.x, particle.y)] for i, particle in enumerate(self.particles)} # Store particle positions for each time step\n", - " \n", - " def initialize_particles(self):\n", - " # Generate random particles within a specified range\n", - " particles = []\n", - " for _ in range(self.num_particles):\n", - " x = np.random.uniform(-50, 50)\n", - " y = np.random.uniform(-50, 50)\n", - " mass = np.random.uniform(1, 10)\n", - " particles.append(Particle(x, y, mass))\n", - " return particles\n", - "\n", - " def simulate(self, num_steps, time_step):\n", - " # Simulate the galaxy collision for a certain number of steps\n", - " for step in range(num_steps):\n", - " self.calculate_forces() # Calculate forces acting on each particle\n", - " self.integrate(time_step) # Integrate to update particle positions\n", - "\n", - " # Store particle positions for each time step\n", - " for i, particle in enumerate(self.particles):\n", - " self.particle_positions[i].append((particle.x, particle.y))\n", - " \n", - " \n", - " \n", - " def calculate_forces(self):\n", - " # Calculate forces acting on each particle using Barnes-Hut algorithm\n", - " for particle in self.particles:\n", - " force = self.barnes_hut.rootNode.CalculateForceFromTree(particle)\n", - " particle.fx, particle.fy = force\n", - "\n", - " def integrate(self, time_step):\n", - " # Integrate to update particle positions based on calculated forces\n", - " for particle in self.particles:\n", - " particle.vx += particle.fx * time_step / particle.mass # Update velocity components\n", - " particle.vy += particle.fy * time_step / particle.mass\n", - " particle.x += particle.vx * time_step # Update particle positions using velocity\n", - " particle.y += particle.vy * time_step\n", - "\n", - " def print_particle_positions(self):\n", - " \n", - " # Print the positions of all particles for each time step\n", - " for i, positions in self.particle_positions.items():\n", - " print(f\"Particle {i + 1} Positions:\")\n", - " for step, pos in enumerate(positions):\n", - " print(f\" Time Step {step}: Position ({pos[0]}, {pos[1]})\")\n", - " \n", - " \n", - " def display_snapshots(self):\n", - " # Display pictures for each time step\n", - " num_time_steps = len(next(iter(self.particle_positions.values())))\n", - " \n", - " for step in range(num_time_steps):\n", - " fig, ax = plt.subplots()\n", - " #ax.set_xlim(-60, 60)\n", - " #ax.set_ylim(-60, 60)\n", - " ax.set_xlabel('X-axis')\n", - " ax.set_ylabel('Y-axis')\n", - " ax.set_title(f'Time Step {step}')\n", - "\n", - " for particle_index, positions in self.particle_positions.items():\n", - " x, y = positions[step]\n", - " ax.scatter(x, y, c='blue', s=20) # Plot particle position for the current time step\n", - " print(x)\n", - " print(y)\n", - "\n", - " plt.show()\n", - " #plt.close()\n", - " \n", - "sim = GalaxyCollisionSimulation(num_particles=10) \n", - "sim.simulate(num_steps=10, time_step=0.1)\n", - "sim.display_snapshots()\n", - "\n", - "# def create_animation(self):\n", - "# # Create an animation to visualize particle positions\n", - "# fig, ax = plt.subplots()\n", - "# ax.set_xlim(-60, 60)\n", - "# ax.set_ylim(-60, 60)\n", - "# particles_plot, = ax.plot([], [], 'bo', ms=5)\n", - "#\n", - "# def init():\n", - "# particles_plot.set_data([], [])\n", - "# return particles_plot,\n", - "#\n", - "# def animate(i):\n", - "# particle_positions = [self.particle_positions[j][i] for j in range(self.num_particles)]\n", - "# x = [pos[0] for pos in particle_positions]\n", - "# y = [pos[1] for pos in particle_positions]\n", - "# particles_plot.set_data(x, y)\n", - "# return particles_plot,\n", - "#\n", - "# ani = animation.FuncAnimation(fig, animate, frames=len(self.particle_positions[0]),\n", - "# interval=50, blit=True, init_func=init)\n", - "#\n", - "# plt.xlabel('X-axis')\n", - "# plt.ylabel('Y-axis')\n", - "# plt.title('Galaxy Collision Simulation')\n", - "# plt.grid(True)\n", - "# plt.show()\n", - "# \n", - "#\n", - "## Example usage:\n", - "#sim = GalaxyCollisionSimulation(num_particles=5) \n", - "#sim.simulate(num_steps=100, time_step=0.1)\n", - "#sim.create_animation()\n", - "\n", - " #def create_animation(self):\n", - " # fig, ax = plt.subplots()\n", - "#\n", - " # # Setting the plot limits based on particle positions\n", - " # x_min = min(particle.x for particle in self.particles)\n", - " # x_max = max(particle.x for particle in self.particles)\n", - " # y_min = min(particle.y for particle in self.particles)\n", - " # y_max = max(particle.y for particle in self.particles)\n", - " # ax.set_xlim(x_min, x_max)\n", - " # ax.set_ylim(y_min, y_max)\n", - "#\n", - " # # Plot initial particle positions\n", - " # scatters = [ax.plot([], [], 'o')[0] for _ in range(self.num_particles)]\n", - "#\n", - " # def update(frame):\n", - " # # Update particle positions for the frame\n", - " # for i, particle in enumerate(self.particles):\n", - " # scatters[i].set_data(particle.x, particle.y)\n", - "#\n", - " # return scatters\n", - "#\n", - " # ani = animation.FuncAnimation(fig, update, frames=len(self.particle_positions[0]), interval=50, blit=True)\n", - "#\n", - " # plt.show()\n", - " # \n", - " \n", - "\n", - "#print(\"------------------------------------------------------------------------------------------------------\")\n", - "#print(\"-------------------------------------------N=1--------------------------------------------------------\")\n", - "#num_particles = 1\n", - "#simulation = GalaxyCollisionSimulation(num_particles)\n", - "#simulation.simulate(num_steps=1000, time_step=0.1)\n", - "##simulation.print_particle_positions()\n", - "#simulation.create_animation()\n", - "#\n", - "#print(\"------------------------------------------------------------------------------------------------------\")\n", - "#print(\"-------------------------------------------N=2--------------------------------------------------------\")\n", - "#num_particles = 2\n", - "#simulation = GalaxyCollisionSimulation(num_particles)\n", - "#simulation.simulate(num_steps=1000, time_step=0.1)\n", - "##simulation.print_particle_positions()\n", - "#simulation.create_animation()\n", - "#\n", - "#print(\"------------------------------------------------------------------------------------------------------\")\n", - "#print(\"-------------------------------------------N=10--------------------------------------------------------\")\n", - "#num_particles = 10\n", - "#simulation = GalaxyCollisionSimulation(num_particles)\n", - "#simulation.simulate(num_steps=1000, time_step=0.1)\n", - "#simulation.print_particle_positions()\n", - "##simulation.create_animation()\n", - "\n", - "#print(\"------------------------------------------------------------------------------------------------------\")\n", - "#print(\"-------------------------------------------N=50--------------------------------------------------------\")\n", - "#num_particles = 50\n", - "#simulation = GalaxyCollisionSimulation(num_particles)\n", - "#simulation.simulate(num_steps=1000, time_step=0.1)\n", - "#simulation.print_particle_positions()\n", - "#simulation.create_animation()\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "9701657f", - "metadata": {}, - "outputs": [], - "source": [ - "#import matplotlib.pyplot as plt\n", - "#import matplotlib.animation as animation\n", - "#\n", - "## Simulation class for galaxy collision using Barnes-Hut and Euler method\n", - "#class GalaxyCollisionSimulation:\n", - "# def __init__(self, num_particles):\n", - "# # Initialize the simulation with a given number of particles\n", - "# self.num_particles = num_particles\n", - "# self.particles = self.initialize_particles() # Generate random particles\n", - "# self.barnes_hut = MainApp() # Initialize Barnes-Hut algorithm instance\n", - "# self.barnes_hut.BuildTree(self.particles) # Build the Barnes-Hut tree with particles\n", - "# self.barnes_hut.rootNode.compute_center_of_mass() #Compute the center of mass of the node\n", - "# self.particle_positions = [{i: [(particle.x, particle.y)] for i, particle in enumerate(self.particles)}] # List to store particle positions for each time step\n", - "#\n", - "# def initialize_particles(self):\n", - "# # Generate random particles within a specified range\n", - "# particles = []\n", - "# for _ in range(self.num_particles):\n", - "# x = np.random.uniform(-50, 50)\n", - "# y = np.random.uniform(-50, 50)\n", - "# mass = np.random.uniform(1, 10)\n", - "# particles.append(Particle(x, y, mass))\n", - "# return particles\n", - "#\n", - "# def simulate(self, num_steps, time_step):\n", - "# # Simulate the galaxy collision for a certain number of steps\n", - "# for step in range(num_steps):\n", - "# self.calculate_forces() # Calculate forces acting on each particle\n", - "# self.integrate(time_step) # Integrate to update particle positions\n", - "# \n", - "# # Record particle positions at each step\n", - "# positions = [(particle.x, particle.y) for particle in self.particles]\n", - "# self.particle_positions.append(positions)\n", - "# \n", - "# def calculate_forces(self):\n", - "# # Calculate forces acting on each particle using Barnes-Hut algorithm\n", - "# for particle in self.particles:\n", - "# force = self.barnes_hut.rootNode.CalculateForceFromTree(particle)\n", - "# particle.fx, particle.fy = force\n", - "#\n", - "# def integrate(self, time_step):\n", - "# # Integrate to update particle positions based on calculated forces\n", - "# for particle in self.particles:\n", - "# particle.vx += particle.fx * time_step / particle.mass # Update velocity components\n", - "# particle.vy += particle.fy * time_step / particle.mass\n", - "# particle.x += particle.vx * time_step # Update particle positions using velocity\n", - "# particle.y += particle.vy * time_step\n", - "#\n", - "# def print_particle_positions(self):\n", - "# # Print the positions of all particles for each time step\n", - "# for i, positions in self.particle_positions.items():\n", - "# print(f\"Particle {i + 1} Positions:\")\n", - "# for step, pos in enumerate(positions):\n", - "# print(f\" Time Step {step}: Position ({pos[0]}, {pos[1]})\")\n", - "# \n", - "# \n", - "# def create_animation(self):\n", - "# fig, ax = plt.subplots()\n", - "#\n", - "# # Setting the plot limits based on particle positions\n", - "# x_min = min(particle.x for particle in self.particles)\n", - "# x_max = max(particle.x for particle in self.particles)\n", - "# y_min = min(particle.y for particle in self.particles)\n", - "# y_max = max(particle.y for particle in self.particles)\n", - "# ax.set_xlim(x_min, x_max)\n", - "# ax.set_ylim(y_min, y_max)\n", - "#\n", - "# # Plot initial particle positions\n", - "# scatters = [ax.plot([], [], 'o')[0] for _ in range(self.num_particles)]\n", - "#\n", - "# def update(frame):\n", - "# # Update particle positions for the frame\n", - "# positions = self.particle_positions[frame]\n", - "# for i, pos in enumerate(positions):\n", - "# scatters[i].set_data(pos[0], pos[1])\n", - "# \n", - "# return scatters\n", - "#\n", - "# \n", - "#\n", - "# ani = animation.FuncAnimation(fig, update, frames=len(self.particle_positions), interval=50, blit=True)\n", - "#\n", - "# plt.show()\n", - "# \n", - "# \n", - "#\n", - "##print(\"------------------------------------------------------------------------------------------------------\")\n", - "##print(\"-------------------------------------------N=1--------------------------------------------------------\")\n", - "##num_particles = 1\n", - "##simulation = GalaxyCollisionSimulation(num_particles)\n", - "##simulation.simulate(num_steps=1000, time_step=0.1)\n", - "###simulation.print_particle_positions()\n", - "##simulation.create_animation()\n", - "##\n", - "##print(\"------------------------------------------------------------------------------------------------------\")\n", - "##print(\"-------------------------------------------N=2--------------------------------------------------------\")\n", - "##num_particles = 2\n", - "##simulation = GalaxyCollisionSimulation(num_particles)\n", - "##simulation.simulate(num_steps=1000, time_step=0.1)\n", - "###simulation.print_particle_positions()\n", - "##simulation.create_animation()\n", - "##\n", - "##print(\"------------------------------------------------------------------------------------------------------\")\n", - "##print(\"-------------------------------------------N=10--------------------------------------------------------\")\n", - "##num_particles = 10\n", - "##simulation = GalaxyCollisionSimulation(num_particles)\n", - "##simulation.simulate(num_steps=1000, time_step=0.1)\n", - "###simulation.print_particle_positions()\n", - "##simulation.create_animation()\n", - "#\n", - "##print(\"------------------------------------------------------------------------------------------------------\")\n", - "##print(\"-------------------------------------------N=50--------------------------------------------------------\")\n", - "##num_particles = 50\n", - "##simulation = GalaxyCollisionSimulation(num_particles)\n", - "##simulation.simulate(num_steps=1000, time_step=0.1)\n", - "###simulation.print_particle_positions()\n", - "##simulation.create_animation()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.5" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/HelloWorld.py b/HelloWorld.py deleted file mode 100644 index 348c758ae54f708a0dcedbdebfe27edef502b200..0000000000000000000000000000000000000000 --- a/HelloWorld.py +++ /dev/null @@ -1 +0,0 @@ -print("HelloWorld") diff --git a/Instructions.txt b/Instructions.txt deleted file mode 100644 index 50a66cf4a5b7eacfb403c3fafb3948d8a5ee670e..0000000000000000000000000000000000000000 --- a/Instructions.txt +++ /dev/null @@ -1,60 +0,0 @@ - -source ~/.cache/pypoetry/virtualenvs/comp-sci-project-SyZqYvRp-py3.11/bin/activate - ---to create a branch: -git checkout -b <name of the branch> - ---put the branch online -git push --set-upstream origin na/bhtalgorithmus - ---Create the file -git add <File name> -git commit -m "comment" -git push - ---please update your local branch by following these commands: - - -git checkout main -git pull --rebase -git checkout - -git rebase main - ---man kann auch brauchen: - ---solve the conflict -git add <file name of conflict> -git rebase --continue -git push --force - ---Please try out these commands asap! - ---rebase between different branches: ---Go to the branch you want to transfer to -git rebase <branch to rebase from> -git push - ----------- -git pull origin Nicola - ------------ -In case: - -nicolaalnicola@LAPTOP-A0GOD546:/mnt/c/Users/nicol/comp-sci-project$ git push -To git.imp.fu-berlin.de:nguyed99/comp-sci-project.git - ! [rejected] na/bhtalgorithmus -> na/bhtalgorithmus (non-fast-forward) -error: failed to push some refs to 'git.imp.fu-berlin.de:nguyed99/comp-sci-project.git' -hint: Updates were rejected because the tip of your current branch is behind -hint: its remote counterpart. Integrate the remote changes (e.g. -hint: 'git pull ...') before pushing again. -hint: See the 'Note about fast-forwards' in 'git push --help' for details. - -Do the following to keep your local branch up to date before pushing: - -git fetch origin -git checkout <branchname> -git merge origin/<branchname> ---press Exceute than exit -git pull origion <branchname> - ---now you can push again diff --git a/Instructions2.txt b/Instructions2.txt deleted file mode 100644 index 0ea0d42be8e8194b2bea41c9abe15c6fc10ea255..0000000000000000000000000000000000000000 --- a/Instructions2.txt +++ /dev/null @@ -1,12 +0,0 @@ -Comments for @Natii and all: -1. Please don't change poetry.lock by hand. You should only modify pyproject.toml to add dependencies and their versions. Please check out the use of the 2 commands (https://python-poetry.org/docs/cli/): - poetry update - poetry install -2. Please don't add, commit, and push files in _pycache_ -3. Please stick to the repo structure. Implementing integrators is not a complete task. It's a job and the integrators will be called in tasks/src/direct_simulation.py -Therefore, tasks/src/integrators/integrators.py -> jobs/src/integrators.py -4. Simulation is the time evolution of the n-body system, result of which are the time-dependent positions (r) and momenta (p) of the bodies. Visualization is the plotting of the corresponding trajectories either in phase space (r,p) or real space. -5. We run simulations in these 2 scripts tasks/src/direct_simulation.py and tasks/src/ff_simulation.py. Files in jobs/src should only contain functions and dataclasses. -6. Test scripts should look like tests. Please see jobs/tests/test_a_job.py for reference. -7. (!Very important!) Please open an MR so I can comment on your commits directly there. Also it's good for tracking, feedback, updates, etc. -8. Please use docstrings for Python functions, description of module diff --git a/hallo.txt b/hallo.txt deleted file mode 100644 index ce14e053cd3f2d5348b90ee4ea157e9493ea14b7..0000000000000000000000000000000000000000 --- a/hallo.txt +++ /dev/null @@ -1 +0,0 @@ -kkkkk diff --git a/helloword b/helloword deleted file mode 100644 index 8cde7829c178ede96040e03f17c416d15bdacd01..0000000000000000000000000000000000000000 --- a/helloword +++ /dev/null @@ -1 +0,0 @@ -print("hello world")