diff --git a/ezyrb/ann.py b/ezyrb/ann.py index 36641290..17ffd7dc 100755 --- a/ezyrb/ann.py +++ b/ezyrb/ann.py @@ -99,7 +99,7 @@ def _build_model(self, points, values): layers_torch.append(nn.Linear(layers[-2], layers[-1])) self.model = nn.Sequential(*layers_torch) - def fit(self, points, values): + def fit(self, points, values, optimizer = torch.optim.Adam, learning_rate = 0.001, frequency_print = 0): """ Build the ANN given 'points' and 'values' and perform training. @@ -119,14 +119,16 @@ def fit(self, points, values): :param numpy.ndarray points: the coordinates of the given (training) points. :param numpy.ndarray values: the (training) values in the points. + :param torch.optimizer optimizer: the optimizer used for the neural network + :param float learning_rate: learning rate used in the optimizer + :param int frequency_print: the number of epochs between the print of each loss value """ self._build_model(points, values) - self.optimizer = torch.optim.Adam(self.model.parameters(), lr = 0.01) + self.optimizer = optimizer(self.model.parameters(), lr = learning_rate) points = self._convert_numpy_to_torch(points) values = self._convert_numpy_to_torch(values) - print(points.shape, values.shape) n_epoch = 1 flag = True while flag: @@ -143,7 +145,9 @@ def fit(self, points, values): elif isinstance(criteria, float): # stop criteria is float if loss.item() < criteria: flag = False - print(loss.item()) + if frequency_print != 0: + if n_epoch % frequency_print == 1: + print(loss.item()) n_epoch += 1 def predict(self, new_point): @@ -182,7 +186,6 @@ def load_state(self, filename, points, values): self._build_model(points, values) - print(self.model) self.optimizer = checkpoint['optimizer_class'] self.model.load_state_dict(checkpoint['model_state']) diff --git a/ezyrb/database.py b/ezyrb/database.py index 7863c3c1..609c8f86 100644 --- a/ezyrb/database.py +++ b/ezyrb/database.py @@ -140,7 +140,6 @@ def add(self, parameters, snapshots, space=None): raise RuntimeError('No Spatial Value given') if (self._space is not None) or (space is not None): - print(space.shape, snapshots.shape) if len(space) != len(snapshots) or len(space[0]) != len(snapshots[0]): raise RuntimeError( 'length of space and snapshots are different.') diff --git a/ezyrb/nnspod.py b/ezyrb/nnspod.py index ce5a278d..93f3d9ae 100644 --- a/ezyrb/nnspod.py +++ b/ezyrb/nnspod.py @@ -15,6 +15,11 @@ def __init__(self, method = "svd", path = None): def reshape2dto1d(self, x, y): + """ + reshapes two n by n arrays into one n^2 by 2 array + :param numpy.array x: x value of data + :param numpy.array y: y value of data + """ x = x.reshape(-1,1) y = y.reshape(-1,1) coords = np.concatenate((x, y), axis = 1) @@ -24,75 +29,52 @@ def reshape2dto1d(self, x, y): return coords def reshape1dto2d(self, snapshots): - print(len(snapshots), snapshots.shape) + """ + turns 1d list of data into 2d + :param array-like snapshots: data to be reshaped + """ return snapshots.reshape(int(np.sqrt(len(snapshots))), int(np.sqrt(len(snapshots)))) - def train_InterpNet1d(self,ref_data, interp_layers, interp_function, interp_stop_training, interp_loss, retrain = False): + def train_interpnet(self,ref_data, interp_layers, interp_function, interp_stop_training, interp_loss, retrain = False, frequency_print = 0): + """ + trains the Interpnet given 1d data: - # print("loading") + :param database ref_data: the reference data that the rest of the data will be shifted to + :param list interp_layers: list with number of neurons in each layer + :param torch.nn.modules.activation interp_function: activation function for the interpnet + :param float interp_stop_training: desired tolerance for the interp training + :param torch.nn.Module interp_loss: loss function (MSE default) + :param boolean retrain: True if the interpNetShould be retrained, False if it should be loaded + """ self.interp_net = ANN(interp_layers, interp_function, interp_stop_training, interp_loss) - if not retrain: - try: - self.interp_net = self.interp_net.load_state(self.path, ref_data.space.reshape(-1,1), ref_data.snapshots.reshape(-1,1)) - print("loaded") - except: - self.interp_net.fit(ref_data.space.reshape(-1,1), ref_data.snapshots.reshape(-1,1)) - self.interp_net.save_state(self.path) - print(self.interp_net.load_state(self.path, ref_data.space.reshape(-1,1), ref_data.snapshots.reshape(-1,1))) + if len(ref_data.space.shape) > 2: + space = ref_data.space.reshape(-1, 2) else: - self.interp_net.fit(ref_data.space.reshape(-1,1), ref_data.snapshots.reshape(-1,1)) - self.interp_net.save_state(self.path) - #plt.plot(ref_data.space, ref_data.snapshots, "o") - xi = np.linspace(0,5,1000).reshape(-1,1) - yi = self.interp_net.predict(xi) - print(xi.shape, yi.shape) - #plt.plot(xi,yi, ".") - #plt.show() - - - def train_InterpNet2d(self,ref_data, interp_layers, interp_function, interp_stop_training, interp_loss, retrain = False): - - - self.interp_net = ANN(interp_layers, interp_function, interp_stop_training, interp_loss) - space = ref_data.space.reshape(-1, 2) - snapshots = ref_data.snapshots.reshape(-1, 1) - + space = ref_data.space.reshape(-1,1) + snapshots = ref_data.snapshots.reshape(-1,1) if not retrain: try: self.interp_net = self.interp_net.load_state(self.path, space, snapshots) + print("loaded interpnet") except: - self.interp_net.fit(space, snapshots) + self.interp_net.fit(space, snapshots, frequency_print = frequency_print) self.interp_net.save_state(self.path) else: - self.interp_net.fit(space, snapshots) + self.interp_net.fit(space, snapshots, frequency_print = frequency_print) self.interp_net.save_state(self.path) - - x = np.linspace(0, 5, 256) - y = np.linspace(0, 5, 256) - gridx, gridy = np.meshgrid(x, y) - plt.pcolor(gridx,gridy,ref_data.snapshots.reshape(256, 256)) - plt.show() - res = 1000 - x = np.linspace(0, 5, res) - y = np.linspace(0, 5, res) - gridx, gridy = np.meshgrid(x, y) - input = self.reshape2dto1d(gridx, gridy) - output = self.interp_net.predict(input) - - toshow = self.reshape1dto2d(output) - plt.pcolor(gridx,gridy,toshow) - plt.show() - - - - def shift(self, x, y, shift_quantity): + """ + shifts data by shift_quanity + """ return(x+shift_quantity, y) def pre_shift(self,x,y, ref_y): + """ + moves data so that the max of y and max of ref_y are at the same x coordinate + """ maxy = 0 for i, n, in enumerate(y): if n > y[maxy]: @@ -102,10 +84,12 @@ def pre_shift(self,x,y, ref_y): if n > ref_y[maxref]: maxref = i - print( x[maxref]-x[maxy], maxref, maxy) return self.shift(x, y, x[maxref]-x[maxy])[0] def make_points(self, x, params): + """ + creates points that can be used to train and predict shiftnet + """ if len(x.shape)> 1: points = np.zeros((len(x),3)) for j, s in enumerate(x): @@ -120,9 +104,11 @@ def make_points(self, x, params): return points def build_model(self, dim = 1): + """ + builds model based on dimension of input data + """ layers = self.layers.copy() layers.insert(0, dim + 1) - print(layers, "!!!!") layers.append(dim) layers_torch = [] for i in range(len(layers) - 2): @@ -133,11 +119,20 @@ def build_model(self, dim = 1): - def train_ShiftNet1d(self, db, shift_layers, shift_function, shift_stop_training, ref_data, preshift = False): - # TODO: - # make sure neural net works no mater distance between data - # check and implement 2d functionality - # make code look better + def train_shiftnet(self, db, shift_layers, shift_function, shift_stop_training, ref_data, preshift = False): + """ + Trains and evaluates shiftnet given 1d data 'db' + + :param Database db: data at a certain parameter value + :param list shift_layers: ordered list with number of neurons in each layer + :param torch.nn.modeulse.activation shift_function: the activation function used by the shiftnet + :param int, float, or list stop_training: + int: number of epochs before stopping + float: desired tolarance before stopping training + list: a int and a float, stops when either desired epochs or tolerance is reached + :param Database db: data at the reference datapoint + :param boolean preshift: True if preshift is desired otherwise false. + """ self.layers = shift_layers self.function = shift_function self.loss_trend = [] @@ -145,11 +140,19 @@ def train_ShiftNet1d(self, db, shift_layers, shift_function, shift_stop_training x = self.pre_shift(db.space[0], db.snapshots[0], ref_data.snapshots[0]) else: x = db.space[0] + if len(db.space.shape) > 2: + x_reshaped = x.reshape(-1,2) + self.build_model(dim = 2) + else: + self.build_model(dim = 1) + x_reshaped = x.reshape(-1,1) + + values = db.snapshots.reshape(-1,1) self.stop_training = shift_stop_training points = self.make_points(x, db.parameters) - values = db.snapshots.reshape(-1,1) - self.build_model(dim = 1) + + self.optimizer = torch.optim.Adam(self.model.parameters(), 0.0001) @@ -160,12 +163,10 @@ def train_ShiftNet1d(self, db, shift_layers, shift_function, shift_stop_training while flag: shift = self.model(points) x_shift, y = self.shift( - torch.from_numpy(x.reshape(-1,1)).float(), - torch.from_numpy(db.snapshots.reshape(-1,1)).float(), + torch.from_numpy(x_reshaped).float(), + torch.from_numpy(values).float(), shift) - #print(x_shift,y) - ref_interp = self.interp_net.predict_tensor(x_shift) - #print(ref_interp) + ref_interp = self.interp_net.model(x_shift) loss = self.loss(ref_interp, y) print(loss.item()) loss.backward() @@ -179,30 +180,34 @@ def train_ShiftNet1d(self, db, shift_layers, shift_function, shift_stop_training if loss.item() < criteria: flag = False n_epoch += 1 - + new_point = self.make_points(x, db.parameters) shift = self.model(torch.from_numpy(new_point).float()) x_new = self.shift( - torch.from_numpy(x.reshape(-1,1)).float(), - torch.from_numpy(db.snapshots.reshape(-1,1)).float(), + torch.from_numpy(x_reshaped).float(), + torch.from_numpy(values).float(), shift)[0] - - plt.plot(db.space, db.snapshots, "go") - plt.plot(x_new.detach().numpy(), db.snapshots.reshape(-1,1), ".") - return shift + x_ret = x_new.detach().numpy() + return x_ret def train_ShiftNet2d(self, db, shift_layers, shift_function, shift_stop_training, ref_data, preshift = False): - # TODO: - # make sure neural net works no mater distance between data - # check and implement 2d functionality - # make code look better - # work on pre_shift for 2d data (iterate through all data until max is found) - # make sure shift works for 2d data(might only shift one part) + """ + Trains and evaluates shiftnet given 2d data 'db' + :param Database db: data at a certain parameter value + :param list shift_layers: ordered list with number of neurons in each layer + :param torch.nn.modeulse.activation shift_function: the activation function used by the shiftnet + :param int, float, or list stop_training: + int: number of epochs before stopping + float: desired tolarance before stopping training + list: a int and a float, stops when either desired epochs or tolerance is reached + :param Database db: data at the reference datapoint + :param boolean preshift: True if preshift is desired otherwise false. + """ self.layers = shift_layers self.function = shift_function self.loss_trend = [] if preshift: - x = self.pre_shift(db.space[0], db.snapshots[0], ref_data.snapshots[0]) + x = x_preshifted = self.pre_shift(db.space[0], db.snapshots[0], ref_data.snapshots[0]) else: x = db.space[0] @@ -222,9 +227,7 @@ def train_ShiftNet2d(self, db, shift_layers, shift_function, shift_stop_training torch.from_numpy(x.reshape(-1,2)).float(), torch.from_numpy(db.snapshots.reshape(-1,1)).float(), shift) - #print(x_shift,y) - ref_interp = self.interp_net.predict_tensor(x_shift) - #print(ref_interp) + ref_interp = self.interp_net.model(x_shift) loss = self.loss(ref_interp, y) print(loss.item()) loss.backward() @@ -239,30 +242,10 @@ def train_ShiftNet2d(self, db, shift_layers, shift_function, shift_stop_training flag = False n_epoch += 1 - - x = np.linspace(0, 5, 256) - y = np.linspace(0, 5, 256) - gridx, gridy = np.meshgrid(x, y) - - plt.pcolor(gridx,gridy,ref_data.snapshots.reshape(256, 256)) - plt.show() - res = 256 - x = np.linspace(0, 5, res) - y = np.linspace(0, 5, res) - gridx, gridy = np.meshgrid(x, y) - coords = self.reshape2dto1d(gridx, gridy) - new_point = self.make_points(coords, db.parameters) + new_point = self.make_points(x_preshifted, db.parameters) shift = self.model(torch.from_numpy(new_point).float()) x_new = self.shift( - torch.from_numpy(coords.reshape(-1,2)).float(), + torch.from_numpy(x_preshifted.reshape(-1,2)).float(), torch.from_numpy(db.snapshots.reshape(-1,1)).float(), shift)[0] - print(x_new.shape) - x, y = np.hsplit(x_new.detach().numpy(), 2) - x = self.reshape1dto2d(x) - y = self.reshape1dto2d(y) - snapshots = self.reshape1dto2d(db.snapshots.reshape(-1,1)) - print(x.shape, y.shape) - plt.pcolor(x,y,snapshots) - plt.show() - return shift \ No newline at end of file + return x_new \ No newline at end of file diff --git a/tutorials/interpnet1d.pth b/tutorials/interpnet1d.pth new file mode 100644 index 00000000..847f4f09 Binary files /dev/null and b/tutorials/interpnet1d.pth differ diff --git a/tutorials/interpnet2d.pth b/tutorials/interpnet2d.pth new file mode 100644 index 00000000..19bcd99f Binary files /dev/null and b/tutorials/interpnet2d.pth differ diff --git a/tutorials/tutorial-3.ipynb b/tutorials/tutorial-3.ipynb new file mode 100644 index 00000000..b65488a1 --- /dev/null +++ b/tutorials/tutorial-3.ipynb @@ -0,0 +1,4434 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# EZyRB Tutorial 3\n", + "## Use NNsPOD to help with POD\n", + "\n", + "In this tutorial we show how to set up and use the NNsPOD class in order to make all data align, allowing the use of POD." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To do this we will show a simple example where the data is a moving gaussian wave.\n", + "\n", + "the first step is to import necessary packages" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib\n", + "import torch\n", + "import torch.nn as nn\n", + "from ezyrb.nnspod import NNsPOD\n", + "from ezyrb import Database\n", + "matplotlib.use('Qt5Agg')\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1d Data\n", + "\n", + "Now we make the data we will use. We make a simple gaussian function and populate the space, snapshots, and parameters of the database" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "n_params = 15\n", + "params = np.linspace(0.5, 4.5, n_params).reshape(-1, 1) # actually the time steps\n", + "def gaussian(x, mu, sig):\n", + " return np.exp(-np.power(x - mu, 2.) / (2 * np.power(sig, 2.)))\n", + "def wave(t, res=256):\n", + " x = np.linspace(0, 5, res)\n", + " return x, gaussian(x, t, 0.1)\n", + "\n", + "db = np.array([wave(t)[1] for t in params])\n", + "db_array = np.array([wave(t)[1] for t in params])\n", + "space = wave(0)[0]\n", + "space_array = np.array([wave(t)[0] for t in params])\n", + "\n", + "database = Database(space = space_array, snapshots = db_array, parameters = params)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we make a NNsPOD class, the only value to pass in is where you want to save the interpnet, or where you want to load it from. This is especially usefull with 2d data where training can take hours depending on the size of the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "NNsPOD_tutorial = NNsPOD(path = \"interpnet1d.pth\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we train the interpnet. the data to pass in is the reference database, the shape of the layers of the NN, the trainnig function the stop training value, which can be a float(loss value to stop at), int(epoch to stop at), or both(will stop at whichever is reached first).The loss function(MSE by default). and whether you would like to retrain NN or load a saved NN. If you choose to retrain the loss value at each epoch will be printed out." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loaded interpnet\n" + ] + } + ], + "source": [ + "ref_data = 5\n", + "NNsPOD_tutorial.train_interpnet(database[ref_data], [20,20], nn.Sigmoid(), [0.000001], None, retrain = False, frequency_print = 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can graph the original reference data as well as the data we get from the interpNet after feeding it 1000 positional datapoints. The large points are the original data points, and the small points are ones created by the interpnet. It should be clear that the interpnet is able to accuratly replicate the gaussian" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(database[ref_data].space, database[ref_data].snapshots, \"o\")\n", + "xi = np.linspace(0,5,1000).reshape(-1,1)\n", + "yi = NNsPOD_tutorial.interp_net.predict(xi)\n", + "plt.plot(xi,yi, \".\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we train the shiftnet on all data besides the reference. to do this you must pass in the database at the value, the shape of the NN, the training function, the stop training value, the reference database, and if you would like the data to be preshifted. For the shiftnet it can be useful to put a loss value and epoch value to stop at, as there is a minimum level the loss value can reach, and if you put a lower value the neural net will not stop.\n", + "\n", + "Training the shiftnet also prints out the loss value at every epoch" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.003529671346768737\n", + "0.0031852859538048506\n", + "0.0028680195100605488\n", + "0.002568362047895789\n", + "0.0022835799027234316\n", + "0.00201291311532259\n", + "0.0017563779838383198\n", + "0.0015143703203648329\n", + "0.0012874887324869633\n", + "0.0010764310136437416\n", + "0.0008819691138342023\n", + "0.000704886217135936\n", + "0.0005459717358462512\n", + "0.0004060007049702108\n", + "0.00028572155861184\n", + "0.00018583123164717108\n", + "0.00010696599201764911\n", + "4.969737710780464e-05\n", + "1.4507919331663288e-05\n", + "1.7856242493508034e-06\n", + "0.004369399044662714\n", + "0.0038599835243076086\n", + "0.00339498114772141\n", + "0.0029605997260659933\n", + "0.002553206868469715\n", + "0.002172122709453106\n", + "0.0018178464379161596\n", + "0.0014914461644366384\n", + "0.0011942622950300574\n", + "0.000927790766581893\n", + "0.0006935703568160534\n", + "0.0004931420553475618\n", + "0.0003279884112998843\n", + "0.0001995009370148182\n", + "0.00010893201397266239\n", + "5.736232560593635e-05\n", + "4.56583293271251e-05\n", + "7.443208596669137e-05\n", + "0.0001440007472410798\n", + "0.0002543363661970943\n", + "0.0004050182760693133\n", + "0.0005951864295639098\n", + "0.0008234621491283178\n", + "0.0010879021137952805\n", + "0.0013859288301318884\n", + "0.001714225742034614\n", + "0.0020686802454292774\n", + "0.0024443077854812145\n", + "0.0028351712971925735\n", + "0.0032343966886401176\n", + "0.0036341820377856493\n", + "0.0040258923545479774\n", + "0.004400178790092468\n", + "0.004747222177684307\n", + "0.005056981462985277\n", + "0.005319627467542887\n", + "0.005526033695787191\n", + "0.005668374709784985\n", + "0.005740638822317123\n", + "0.005739192478358746\n", + "0.0056630689650774\n", + "0.005514101590961218\n", + "0.00529672484844923\n", + "0.005017722956836224\n", + "0.004685656167566776\n", + "0.004310447257012129\n", + "0.00390277779661119\n", + "0.003473633900284767\n", + "0.003033973276615143\n", + "0.002594418590888381\n", + "0.002165069803595543\n", + "0.001755339908413589\n", + "0.001373893697746098\n", + "0.0010285807074978948\n", + "0.0007264121668413281\n", + "0.0004735389957204461\n", + "0.0002752463915385306\n", + "0.00013595953350886703\n", + "5.922674245084636e-05\n", + "4.773830369231291e-05\n", + "0.00010332348756492138\n", + "0.0002269579708809033\n", + "0.0004187771992292255\n", + "0.0006780807161703706\n", + "0.001003358280286193\n", + "0.001392299891449511\n", + "0.0018418235704302788\n", + "0.002348095178604126\n", + "0.0029065865091979504\n", + "0.003512059571221471\n", + "0.004158656112849712\n", + "0.0048399195075035095\n", + "0.005548851098865271\n", + "0.006277947686612606\n", + "0.0070193009451031685\n", + "0.007764672860503197\n", + "0.008505540899932384\n", + "0.009233284741640091\n", + "0.00993921048939228\n", + "0.010614769533276558\n", + "0.011251618154346943\n", + "0.011841780506074429\n", + "0.01237777154892683\n", + "0.012852667830884457\n", + "0.013260310515761375\n", + "0.013595269992947578\n", + "0.013853070326149464\n", + "0.014030145481228828\n", + "0.014123985543847084\n", + "0.014133134856820107\n", + "0.014057265594601631\n", + "0.013897120021283627\n", + "0.013654598034918308\n", + "0.013332648202776909\n", + "0.012935345061123371\n", + "0.012467685155570507\n", + "0.011935614980757236\n", + "0.011345900595188141\n", + "0.010706031695008278\n", + "0.010024086572229862\n", + "0.009308602660894394\n", + "0.008568468503654003\n", + "0.007812773808836937\n", + "0.007050670683383942\n", + "0.00629124790430069\n", + "0.00554342707619071\n", + "0.004815841559320688\n", + "0.0041167354211211205\n", + "0.0034538444597274065\n", + "0.0028343703597784042\n", + "0.0022648766171187162\n", + "0.0017512304475530982\n", + "0.0012985728681087494\n", + "0.0009112864499911666\n", + "0.0005929712206125259\n", + "0.00034642385435290635\n", + "0.00017366124666295946\n", + "7.591000758111477e-05\n", + "5.363745003705844e-05\n", + "0.00010657541861291975\n", + "0.00023375599994324148\n", + "0.0004335510893724859\n", + "0.0007037295144982636\n", + "0.001041487674228847\n", + "0.0014435298508033156\n", + "0.0019061097409576178\n", + "0.0024250808637589216\n", + "0.0029959867242723703\n", + "0.0036140894517302513\n", + "0.004274433478713036\n", + "0.004971921443939209\n", + "0.005701342131942511\n", + "0.006457429379224777\n", + "0.00723493006080389\n", + "0.008028589189052582\n", + "0.008833282627165318\n", + "0.009643944911658764\n", + "0.010455697774887085\n", + "0.011263794265687466\n", + "0.01206371933221817\n", + "0.012851126492023468\n", + "0.013621937483549118\n", + "0.014372282661497593\n", + "0.015098582953214645\n", + "0.015797479078173637\n", + "0.016465887427330017\n", + "0.017100989818572998\n", + "0.017700225114822388\n", + "0.01826127991080284\n", + "0.018782129511237144\n", + "0.01926092803478241\n", + "0.019696129485964775\n", + "0.020086372271180153\n", + "0.020430490374565125\n", + "0.020727556198835373\n", + "0.02097681723535061\n", + "0.021177668124437332\n", + "0.021329691633582115\n", + "0.02143263816833496\n", + "0.021486369892954826\n", + "0.021490896120667458\n", + "0.021446427330374718\n", + "0.02135322242975235\n", + "0.021211745217442513\n", + "0.021022537723183632\n", + "0.020786363631486893\n", + "0.020504046231508255\n", + "0.020176619291305542\n", + "0.019805271178483963\n", + "0.019391313195228577\n", + "0.01893629878759384\n", + "0.018441881984472275\n", + "0.01790996640920639\n", + "0.017342599108815193\n", + "0.01674204133450985\n", + "0.016110748052597046\n", + "0.01545137818902731\n", + "0.014766762033104897\n", + "0.014059939421713352\n", + "0.013334118761122227\n", + "0.012592709623277187\n", + "0.011839252896606922\n", + "0.01107746921479702\n", + "0.01031121052801609\n", + "0.00954440888017416\n", + "0.008781125769019127\n", + "0.008025465533137321\n", + "0.007281603757292032\n", + "0.006553695071488619\n", + "0.005845888052135706\n", + "0.005162289831787348\n", + "0.00450692605227232\n", + "0.0038837064057588577\n", + "0.0032963959965854883\n", + "0.0027485908940434456\n", + "0.0022436720319092274\n", + "0.0017847829731181264\n", + "0.0013748093042522669\n", + "0.0010163469705730677\n", + "0.0007116690976545215\n", + "0.00046272281906567514\n", + "0.00027110526571050286\n", + "0.00013804493937641382\n", + "6.439758726628497e-05\n", + "5.0636910600587726e-05\n", + "9.685788973001763e-05\n", + "0.00020277014118619263\n", + "0.000367706932593137\n", + "0.0005906369187869132\n", + "0.0008701694896444678\n", + "0.001204584026709199\n", + "0.0015918371500447392\n", + "0.0020295807626098394\n", + "0.0025152042508125305\n", + "0.0030458441469818354\n", + "0.0036184173077344894\n", + "0.0042296661995351315\n", + "0.004876140039414167\n", + "0.005554295144975185\n", + "0.006260471884161234\n", + "0.006990938447415829\n", + "0.00774192763492465\n", + "0.008509674109518528\n", + "0.009290393441915512\n", + "0.010080387815833092\n", + "0.010875985957682133\n", + "0.01167360506951809\n", + "0.012469787150621414\n", + "0.013261165469884872\n", + "0.014044541865587234\n", + "0.014816852286458015\n", + "0.015575168654322624\n", + "0.016316767781972885\n", + "0.01703907921910286\n", + "0.017739711329340935\n", + "0.018416468054056168\n", + "0.019067315384745598\n", + "0.019690413028001785\n", + "0.02028411440551281\n", + "0.020846936851739883\n", + "0.0213775672018528\n", + "0.021874887868762016\n", + "0.022337937727570534\n", + "0.02276589348912239\n", + "0.023158133029937744\n", + "0.02351412922143936\n", + "0.02383352443575859\n", + "0.024116097018122673\n", + "0.024361710995435715\n", + "0.024570390582084656\n", + "0.02474222145974636\n", + "0.024877453222870827\n", + "0.024976329877972603\n", + "0.025039279833436012\n", + "0.025066768750548363\n", + "0.025059299543499947\n", + "0.025017505511641502\n", + "0.024942025542259216\n", + "0.02483360283076763\n", + "0.024692997336387634\n", + "0.024521008133888245\n", + "0.02431853488087654\n", + "0.024086464196443558\n", + "0.023825759068131447\n", + "0.02353740483522415\n", + "0.023222418501973152\n", + "0.022881848737597466\n", + "0.02251678891479969\n", + "0.02212837152183056\n", + "0.021717743948101997\n", + "0.021286064758896828\n", + "0.02083456702530384\n", + "0.02036447823047638\n", + "0.019877055659890175\n", + "0.019373586401343346\n", + "0.01885535567998886\n", + "0.01832369714975357\n", + "0.01777995564043522\n", + "0.017225481569767\n", + "0.016661636531352997\n", + "0.01608981005847454\n", + "0.01551138423383236\n", + "0.014927751384675503\n", + "0.014340300112962723\n", + "0.013750413432717323\n", + "0.013159487396478653\n", + "0.012568891979753971\n", + "0.011979986913502216\n", + "0.011394097469747066\n", + "0.010812574997544289\n", + "0.01023668423295021\n", + "0.009667708538472652\n", + "0.009106870740652084\n", + "0.00855537224560976\n", + "0.00801435299217701\n", + "0.007484932895749807\n", + "0.0069681694731116295\n", + "0.006465064827352762\n", + "0.005976582877337933\n", + "0.005503616761416197\n", + "0.00504700792953372\n", + "0.004607536364346743\n", + "0.004185913130640984\n", + "0.003782794112339616\n", + "0.003398759523406625\n", + "0.0030343402177095413\n", + "0.0026899937074631453\n", + "0.002366094384342432\n", + "0.0020629786886274815\n", + "0.0017809002893045545\n", + "0.0015200451016426086\n", + "0.001280548400245607\n", + "0.0010624835267663002\n", + "0.0008658495498821139\n", + "0.0006905948976054788\n", + "0.0005366170662455261\n", + "0.0004037464677821845\n", + "0.0002917680249083787\n", + "0.00020041628158651292\n", + "0.00012937726569361985\n", + "7.82886054366827e-05\n", + "4.674991578212939e-05\n", + "3.431779987295158e-05\n", + "4.051189171150327e-05\n", + "6.481765740318224e-05\n", + "0.00010668826143955812\n", + "0.00016554465400986373\n", + "0.0002407868450973183\n", + "0.00033178451121784747\n", + "0.00043788598850369453\n", + "0.0005584274185821414\n", + "0.0006927173817530274\n", + "0.0008400568040087819\n", + "0.0009997294982895255\n", + "0.0011710174148902297\n", + "0.0013531820150092244\n", + "0.001545487786643207\n", + "0.0017471930477768183\n", + "0.0019575522746890783\n", + "0.0021758193615823984\n", + "0.0024012525100260973\n", + "0.002633102471008897\n", + "0.0028706411831080914\n", + "0.0031131221912801266\n", + "0.0033598258160054684\n", + "0.003610040061175823\n", + "0.003863051999360323\n", + "0.00411815894767642\n", + "0.004374667536467314\n", + "0.004631916061043739\n", + "0.004889233969151974\n", + "0.0051459698006510735\n", + "0.0054014879278838634\n", + "0.005655170418322086\n", + "0.0059064049273729324\n", + "0.006154623813927174\n", + "0.0063992333598434925\n", + "0.006639678962528706\n", + "0.006875442340970039\n", + "0.007105983328074217\n", + "0.007330823224037886\n", + "0.007549453526735306\n", + "0.007761416491121054\n", + "0.007966279052197933\n", + "0.008163615129888058\n", + "0.008352999575436115\n", + "0.008534066379070282\n", + "0.00870642438530922\n", + "0.008869748562574387\n", + "0.0090236971154809\n", + "0.009167969226837158\n", + "0.009302288293838501\n", + "0.00942636001855135\n", + "0.00953996554017067\n", + "0.00964285433292389\n", + "0.009734832681715488\n", + "0.009815729223191738\n", + "0.009885363280773163\n", + "0.009943583980202675\n", + "0.009990289807319641\n", + "0.010025368072092533\n", + "0.010048751719295979\n", + "0.010060369037091732\n", + "0.010060197673738003\n", + "0.010048197582364082\n", + "0.010024413466453552\n", + "0.009988831356167793\n", + "0.009941529482603073\n", + "0.009882580488920212\n", + "0.009812063537538052\n", + "0.009730109013617039\n", + "0.009636854752898216\n", + "0.009532460011541843\n", + "0.009417115710675716\n", + "0.009291020222008228\n", + "0.00915441382676363\n", + "0.009007553569972515\n", + "0.008850707672536373\n", + "0.008684182539582253\n", + "0.008508317172527313\n", + "0.008323443122208118\n", + "0.008129945024847984\n", + "0.007928216829895973\n", + "0.007718680426478386\n", + "0.0075017791241407394\n", + "0.007277985569089651\n", + "0.007047783117741346\n", + "0.0068117124028503895\n", + "0.006570282857865095\n", + "0.006324061658233404\n", + "0.00607363972812891\n", + "0.00581960566341877\n", + "0.005562597420066595\n", + "0.005303249694406986\n", + "0.0050422376953065395\n", + "0.004780229181051254\n", + "0.0045179217122495174\n", + "0.00425603985786438\n", + "0.003995294217020273\n", + "0.0037364165764302015\n", + "0.0034801752772182226\n", + "0.003227315843105316\n", + "0.0029786063823848963\n", + "0.002734809648245573\n", + "0.002496699569746852\n", + "0.002265047514811158\n", + "0.0020406171679496765\n", + "0.0018241843208670616\n", + "0.0016164864646270871\n", + "0.0014182875165715814\n", + "0.001230310183018446\n", + "0.0010532691376283765\n", + "0.000887871312443167\n", + "0.0007347879000008106\n", + "0.0005946693127043545\n", + "0.00046813918743282557\n", + "0.00035579383256845176\n", + "0.00025819253642112017\n", + "0.00017586236936040223\n", + "0.00010928635310847312\n", + "5.8910343796014786e-05\n", + "2.513630715839099e-05\n", + "8.317826541315299e-06\n", + "0.06855497509241104\n", + "0.06844474375247955\n", + "0.06833404302597046\n", + "0.06821975111961365\n", + "0.06810055673122406\n", + "0.06797565519809723\n", + "0.06784439831972122\n", + "0.06770621240139008\n", + "0.06756056845188141\n", + "0.06740692257881165\n", + "0.067244753241539\n", + "0.06707343459129333\n", + "0.06689238548278809\n", + "0.06670090556144714\n", + "0.0664982870221138\n", + "0.06628379970788956\n", + "0.06605669856071472\n", + "0.06581618636846542\n", + "0.06556149572134018\n", + "0.06529178470373154\n", + "0.06500621140003204\n", + "0.06470385193824768\n", + "0.06438378244638443\n", + "0.06404507160186768\n", + "0.06368671357631683\n", + "0.06330769509077072\n", + "0.06290701031684875\n", + "0.06248360127210617\n", + "0.06203638017177582\n", + "0.061564259231090546\n", + "0.06106613948941231\n", + "0.06054084375500679\n", + "0.05998727306723595\n", + "0.05940426141023636\n", + "0.05879064276814461\n", + "0.058145299553871155\n", + "0.057467103004455566\n", + "0.056754935532808304\n", + "0.0560077503323555\n", + "0.05522455275058746\n", + "0.05440440773963928\n", + "0.05354645475745201\n", + "0.05264995992183685\n", + "0.05171428620815277\n", + "0.05073891580104828\n", + "0.049723487347364426\n", + "0.04866780340671539\n", + "0.04757183790206909\n", + "0.04643572121858597\n", + "0.045259829610586166\n", + "0.04404472932219505\n", + "0.04279123619198799\n", + "0.04150039330124855\n", + "0.040173523128032684\n", + "0.038812242448329926\n", + "0.03741840645670891\n", + "0.03599420562386513\n", + "0.03454213961958885\n", + "0.03306496888399124\n", + "0.03156584873795509\n", + "0.0300481878221035\n", + "0.028515737503767014\n", + "0.026972541585564613\n", + "0.02542296051979065\n", + "0.023871609941124916\n", + "0.022323455661535263\n", + "0.02078363113105297\n", + "0.01925758458673954\n", + "0.01775088906288147\n", + "0.01626935973763466\n", + "0.014818877913057804\n", + "0.013405432924628258\n", + "0.012035050429403782\n", + "0.010713719762861729\n", + "0.009447379969060421\n", + "0.008241824805736542\n", + "0.007102657109498978\n", + "0.006035242695361376\n", + "0.00504464702680707\n", + "0.004135569091886282\n", + "0.0033122957684099674\n", + "0.002578660612925887\n", + "0.0019379840232431889\n", + "0.0013930359855294228\n", + "0.0009460028959438205\n", + "0.0005984625313431025\n", + "0.0003513583797030151\n", + "0.00020498850790318102\n", + "0.00015900623111519963\n", + "0.00021241720241960138\n", + "0.000363595929229632\n", + "0.0006103019695729017\n", + "0.0009497114806436002\n", + "0.0013784437905997038\n", + "0.0018926208140328526\n", + "0.0024878792464733124\n", + "0.0031594419851899147\n", + "0.0039021968841552734\n", + "0.004710698034614325\n", + "0.005579249933362007\n", + "0.006501995027065277\n", + "0.007472907193005085\n", + "0.00848594680428505\n", + "0.009535007178783417\n", + "0.010614026337862015\n", + "0.011717049404978752\n", + "0.012838255614042282\n", + "0.01397201232612133\n", + "0.015112894587218761\n", + "0.016255725175142288\n", + "0.017395691946148872\n", + "0.01852824166417122\n", + "0.019649188965559006\n", + "0.020754709839820862\n", + "0.02184136025607586\n", + "0.02290603704750538\n", + "0.02394600212574005\n", + "0.024958863854408264\n", + "0.025942552834749222\n", + "0.02689526416361332\n", + "0.02781553938984871\n", + "0.028702156618237495\n", + "0.02955409325659275\n", + "0.030370628461241722\n", + "0.031151190400123596\n", + "0.031895361840724945\n", + "0.032602958381175995\n", + "0.033273886889219284\n", + "0.0339081697165966\n", + "0.034505993127822876\n", + "0.03506755456328392\n", + "0.03559320792555809\n", + "0.036083344370126724\n", + "0.03653834015130997\n", + "0.036958687007427216\n", + "0.037344854325056076\n", + "0.03769737109541893\n", + "0.03801671788096428\n", + "0.0383034385740757\n", + "0.03855797275900841\n", + "0.03878086805343628\n", + "0.03897256776690483\n", + "0.03913351893424988\n", + "0.03926415368914604\n", + "0.03936489671468735\n", + "0.03943607583642006\n", + "0.039478059858083725\n", + "0.03949115797877312\n", + "0.03947565704584122\n", + "0.03943181782960892\n", + "0.03935987502336502\n", + "0.03926002234220505\n", + "0.03913244977593422\n", + "0.03897732496261597\n", + "0.03879474475979805\n", + "0.03858485072851181\n", + "0.038347773253917694\n", + "0.038083575665950775\n", + "0.037792325019836426\n", + "0.0374741405248642\n", + "0.037129078060388565\n", + "0.0367572158575058\n", + "0.036358658224344254\n", + "0.03593350201845169\n", + "0.03548186272382736\n", + "0.0350039005279541\n", + "0.034499771893024445\n", + "0.033969681710004807\n", + "0.033413901925086975\n", + "0.03283267468214035\n", + "0.03222637623548508\n", + "0.03159541264176369\n", + "0.030940227210521698\n", + "0.03026135079562664\n", + "0.029559407383203506\n", + "0.02883506752550602\n", + "0.028089115396142006\n", + "0.02732241526246071\n", + "0.02653590589761734\n", + "0.025730671361088753\n", + "0.024907872080802917\n", + "0.024068772792816162\n", + "0.023214757442474365\n", + "0.022347301244735718\n", + "0.021468043327331543\n", + "0.020578667521476746\n", + "0.019681023433804512\n", + "0.01877703331410885\n", + "0.01786871999502182\n", + "0.01695825159549713\n", + "0.01604784093797207\n", + "0.015139829367399216\n", + "0.014236578717827797\n", + "0.013340587727725506\n", + "0.012454378418624401\n", + "0.01158050261437893\n", + "0.01072156522423029\n", + "0.009880198165774345\n", + "0.009059002622961998\n", + "0.008260587230324745\n", + "0.007487515918910503\n", + "0.006742281839251518\n", + "0.00602736184373498\n", + "0.00534509401768446\n", + "0.004697734955698252\n", + "0.004087410401552916\n", + "0.0035161166451871395\n", + "0.002985674887895584\n", + "0.002497756155207753\n", + "0.002053854987025261\n", + "0.0016552594024688005\n", + "0.0013030682457610965\n", + "0.0009981603361666203\n", + "0.0007412109989672899\n", + "0.0005326794344000518\n", + "0.00037280318792909384\n", + "0.0002616044075693935\n", + "0.0001988925796467811\n", + "0.00018426947644911706\n", + "0.00021713202295359224\n", + "0.00029668252682313323\n", + "0.0004219413094688207\n", + "0.0005917497328482568\n", + "0.0008047929732128978\n", + "0.0010595964267849922\n", + "0.001354562002234161\n", + "0.0016879639588296413\n", + "0.0020579625852406025\n", + "0.002462641103193164\n", + "0.002899992046877742\n", + "0.003367943689227104\n", + "0.0038643931038677692\n", + "0.004387172404676676\n", + "0.004934124648571014\n", + "0.0055030714720487595\n", + "0.006091821473091841\n", + "0.0066982172429561615\n", + "0.007320130709558725\n", + "0.00795544870197773\n", + "0.008602114394307137\n", + "0.009258128702640533\n", + "0.009921517223119736\n", + "0.010590407997369766\n", + "0.011262987740337849\n", + "0.011937501840293407\n", + "0.012612288817763329\n", + "0.013285739347338676\n", + "0.013956359587609768\n", + "0.014622732996940613\n", + "0.015283486805856228\n", + "0.015937386080622673\n", + "0.016583245247602463\n", + "0.017219990491867065\n", + "0.017846595495939255\n", + "0.018462149426341057\n", + "0.019065795466303825\n", + "0.019656779244542122\n", + "0.020234407857060432\n", + "0.02079807221889496\n", + "0.021347228437662125\n", + "0.021881405264139175\n", + "0.022400204092264175\n", + "0.02290327474474907\n", + "0.02339034713804722\n", + "0.023861192166805267\n", + "0.024315625429153442\n", + "0.024753522127866745\n", + "0.025174802169203758\n", + "0.0255794208496809\n", + "0.025967348366975784\n", + "0.02633863314986229\n", + "0.026693299412727356\n", + "0.02703140862286091\n", + "0.02735305204987526\n", + "0.027658332139253616\n", + "0.027947379276156425\n", + "0.028220299631357193\n", + "0.02847723662853241\n", + "0.028718341141939163\n", + "0.028943751007318497\n", + "0.029153604060411453\n", + "0.02934807538986206\n", + "0.02952730841934681\n", + "0.029691467061638832\n", + "0.029840731993317604\n", + "0.029975200071930885\n", + "0.030095063149929047\n", + "0.03020045906305313\n", + "0.030291534960269928\n", + "0.03036845102906227\n", + "0.030431339517235756\n", + "0.03048035502433777\n", + "0.030515611171722412\n", + "0.030537260696291924\n", + "0.03054543025791645\n", + "0.030540231615304947\n", + "0.030521821230649948\n", + "0.030490301549434662\n", + "0.030445802956819534\n", + "0.03038845583796501\n", + "0.030318334698677063\n", + "0.030235610902309418\n", + "0.030140362679958344\n", + "0.030032701790332794\n", + "0.02991275116801262\n", + "0.029780618846416473\n", + "0.02963641844689846\n", + "0.029480263590812683\n", + "0.029312264174222946\n", + "0.029132526367902756\n", + "0.028941171243786812\n", + "0.02873830869793892\n", + "0.028524072840809822\n", + "0.02829856052994728\n", + "0.028061900287866592\n", + "0.027814237400889397\n", + "0.02755570225417614\n", + "0.027286408469080925\n", + "0.027006521821022034\n", + "0.02671617828309536\n", + "0.026415538042783737\n", + "0.026104753836989403\n", + "0.02578398585319519\n", + "0.025453433394432068\n", + "0.025113271549344063\n", + "0.024763675406575203\n", + "0.02440486289560795\n", + "0.02403704822063446\n", + "0.02366044744849205\n", + "0.023275287821888924\n", + "0.02288181520998478\n", + "0.022480301558971405\n", + "0.02207099087536335\n", + "0.02165418490767479\n", + "0.02123017981648445\n", + "0.020799264311790466\n", + "0.02036178484559059\n", + "0.019918052479624748\n", + "0.019468437880277634\n", + "0.019013304263353348\n", + "0.018553026020526886\n", + "0.01808800734579563\n", + "0.017618656158447266\n", + "0.017145400866866112\n", + "0.016668671742081642\n", + "0.016188932582736015\n", + "0.015706658363342285\n", + "0.015222320333123207\n", + "0.014736421406269073\n", + "0.014249472878873348\n", + "0.013762007467448711\n", + "0.0132745411247015\n", + "0.012787625193595886\n", + "0.012301815673708916\n", + "0.011817682534456253\n", + "0.011335790157318115\n", + "0.010856732726097107\n", + "0.01038107555359602\n", + "0.009909425862133503\n", + "0.009442370384931564\n", + "0.008980506099760532\n", + "0.008524421602487564\n", + "0.008074745535850525\n", + "0.007632038090378046\n", + "0.0071969060227274895\n", + "0.00676993653178215\n", + "0.006351710297167301\n", + "0.0059427982196211815\n", + "0.005543768405914307\n", + "0.0051551698707044125\n", + "0.004777540918439627\n", + "0.004411425907164812\n", + "0.004057321697473526\n", + "0.0037157272454351187\n", + "0.003387125674635172\n", + "0.003071966813877225\n", + "0.002770697930827737\n", + "0.0024837302044034004\n", + "0.0022114550229161978\n", + "0.001954242354258895\n", + "0.0017124356236308813\n", + "0.0014863481046631932\n", + "0.0012762657133862376\n", + "0.0010824532946571708\n", + "0.0009051378001458943\n", + "0.0007445196388289332\n", + "0.000600766739808023\n", + "0.00047402066411450505\n", + "0.00036438455572351813\n", + "0.00027193326968699694\n", + "0.00019670772599056363\n", + "0.00013871589908376336\n", + "9.793635399546474e-05\n", + "7.431306585203856e-05\n", + "6.775646033929661e-05\n", + "7.814571290509775e-05\n", + "0.00010533149907132611\n", + "0.00014912914775777608\n", + "0.0002093256771331653\n", + "0.00028567417757585645\n", + "0.0003779086982831359\n", + "0.00048572104424238205\n", + "0.0006087880465202034\n", + "0.0007467538816854358\n", + "0.0008992346120066941\n", + "0.0010658310493454337\n", + "0.0012461146106943488\n", + "0.001439640182070434\n", + "0.0016459389589726925\n", + "0.0018645180389285088\n", + "0.002094870898872614\n", + "0.0023364881053566933\n", + "0.0025888243690133095\n", + "0.002851332537829876\n", + "0.003123461501672864\n", + "0.00340463244356215\n", + "0.0036942714359611273\n", + "0.003991786390542984\n", + "0.00429657893255353\n", + "0.004608076065778732\n", + "0.00492566404864192\n", + "0.005248733796179295\n", + "0.00557670509442687\n", + "0.005908961407840252\n", + "0.006244920194149017\n", + "0.0065839774906635284\n", + "0.006925548426806927\n", + "0.00726903835311532\n", + "0.007613878697156906\n", + "0.007959499955177307\n", + "0.008305341005325317\n", + "0.008650856092572212\n", + "0.008995486423373222\n", + "0.00933871977031231\n", + "0.009680039249360561\n", + "0.010018900036811829\n", + "0.010354849509894848\n", + "0.010687395930290222\n", + "0.011016062460839748\n", + "0.011340402066707611\n", + "0.011659961193799973\n", + "0.011974324472248554\n", + "0.012283071875572205\n", + "0.012585819698870182\n", + "0.012882164679467678\n", + "0.01317176315933466\n", + "0.013454236090183258\n", + "0.013729264959692955\n", + "0.013996534049510956\n", + "0.014255695976316929\n", + "0.014506503939628601\n", + "0.014748652465641499\n", + "0.014981876127421856\n", + "0.015205932781100273\n", + "0.015420593321323395\n", + "0.015625622123479843\n", + "0.0158208180218935\n", + "0.016005992889404297\n", + "0.016180967912077904\n", + "0.016345564275979996\n", + "0.016499632969498634\n", + "0.016643043607473373\n", + "0.016775663942098618\n", + "0.016897382214665413\n", + "0.017008084803819656\n", + "0.01710769720375538\n", + "0.017196131870150566\n", + "0.01727333478629589\n", + "0.017339251935482025\n", + "0.017393851652741432\n", + "0.01743708923459053\n", + "0.01746896281838417\n", + "0.01748945564031601\n", + "0.017498567700386047\n", + "0.01749633625149727\n", + "0.017482778057456017\n", + "0.017457956448197365\n", + "0.01742188073694706\n", + "0.01737465336918831\n", + "0.017316322773694992\n", + "0.01724698394536972\n", + "0.017166724428534508\n", + "0.01707564666867256\n", + "0.01697387918829918\n", + "0.01686152070760727\n", + "0.016738738864660263\n", + "0.016605664044618607\n", + "0.016462460160255432\n", + "0.016309281811118126\n", + "0.01614631712436676\n", + "0.015973743051290512\n", + "0.01579175516963005\n", + "0.015600580722093582\n", + "0.015400407835841179\n", + "0.015191477723419666\n", + "0.014974037185311317\n", + "0.014748308807611465\n", + "0.014514569193124771\n", + "0.014273075386881828\n", + "0.014024123549461365\n", + "0.013767966069281101\n", + "0.01350492425262928\n", + "0.013235299848020077\n", + "0.012959406711161137\n", + "0.012677580118179321\n", + "0.012390147894620895\n", + "0.012097452767193317\n", + "0.011799859814345837\n", + "0.01149772759526968\n", + "0.011191443540155888\n", + "0.01088138110935688\n", + "0.010567935183644295\n", + "0.01025149691849947\n", + "0.009932495653629303\n", + "0.009611330926418304\n", + "0.009288438595831394\n", + "0.00896425824612379\n", + "0.008639206178486347\n", + "0.008313744328916073\n", + "0.007988330908119678\n", + "0.007663399912416935\n", + "0.0073394253849983215\n", + "0.0070168678648769855\n", + "0.006696206983178854\n", + "0.006377893965691328\n", + "0.006062416359782219\n", + "0.005750236567109823\n", + "0.005441830959171057\n", + "0.005137663334608078\n", + "0.004838210996240377\n", + "0.004543928895145655\n", + "0.00425530131906271\n", + "0.003972762264311314\n", + "0.0036967680789530277\n", + "0.003427766263484955\n", + "0.0031661977991461754\n", + "0.0029124771244823933\n", + "0.002667027758434415\n", + "0.0024302536621689796\n", + "0.0022025443613529205\n", + "0.0019842875190079212\n", + "0.0017758433241397142\n", + "0.001577560557052493\n", + "0.0013897726312279701\n", + "0.0012128038797527552\n", + "0.0010469489498063922\n", + "0.000892491196282208\n", + "0.0007496880134567618\n", + "0.0006187795661389828\n", + "0.0004999878583475947\n", + "0.00039351434679701924\n", + "0.00029953039484098554\n", + "0.00021819298854097724\n", + "0.00014963331341277808\n", + "9.396027598995715e-05\n", + "5.125706593389623e-05\n", + "2.1585461581707932e-05\n", + "4.9826899157778826e-06\n", + "0.064991295337677\n", + "0.06461557000875473\n", + "0.06424005329608917\n", + "0.06385430693626404\n", + "0.0634542852640152\n", + "0.06303764879703522\n", + "0.06260279566049576\n", + "0.06214839220046997\n", + "0.06167329102754593\n", + "0.06117645278573036\n", + "0.06065687537193298\n", + "0.060113586485385895\n", + "0.059545665979385376\n", + "0.058952223509550095\n", + "0.05833231285214424\n", + "0.05768508091568947\n", + "0.05700966343283653\n", + "0.05630522593855858\n", + "0.05557098239660263\n", + "0.0548061840236187\n", + "0.054010018706321716\n", + "0.05318178981542587\n", + "0.05232074856758118\n", + "0.0514262355864048\n", + "0.05049768090248108\n", + "0.049534667283296585\n", + "0.04853685200214386\n", + "0.04750410467386246\n", + "0.0464363768696785\n", + "0.04533383622765541\n", + "0.044196855276823044\n", + "0.04302597790956497\n", + "0.04182196408510208\n", + "0.040585752576589584\n", + "0.03931853175163269\n", + "0.038021672517061234\n", + "0.03669679909944534\n", + "0.03534573316574097\n", + "0.03397054225206375\n", + "0.03257353603839874\n", + "0.031157314777374268\n", + "0.029724664986133575\n", + "0.028278611600399017\n", + "0.02682245709002018\n", + "0.025359734892845154\n", + "0.02389424853026867\n", + "0.0224299356341362\n", + "0.020971078425645828\n", + "0.01952209323644638\n", + "0.01808765158057213\n", + "0.016672620549798012\n", + "0.015282019041478634\n", + "0.013921046629548073\n", + "0.012595021165907383\n", + "0.011309347115457058\n", + "0.010069473646581173\n", + "0.008880870416760445\n", + "0.007748936768621206\n", + "0.006679017096757889\n", + "0.005676278378814459\n", + "0.004745738115161657\n", + "0.0038921432569622993\n", + "0.0031199571676552296\n", + "0.0024332781322300434\n", + "0.0018358228262513876\n", + "0.001330857863649726\n", + "0.0009211414726451039\n", + "0.0006089084199629724\n", + "0.00039581325836479664\n", + "0.00028290721820667386\n", + "0.0002706117811612785\n", + "0.0003587061073631048\n", + "0.000546304858289659\n", + "0.000831865705549717\n", + "0.001213200856000185\n", + "0.0016874632565304637\n", + "0.002251195255666971\n", + "0.002900338266044855\n", + "0.0036302772350609303\n", + "0.004435869865119457\n", + "0.00531149934977293\n", + "0.006251117214560509\n", + "0.007248308043926954\n", + "0.008296352811157703\n", + "0.009388270787894726\n", + "0.010516906157135963\n", + "0.011674990877509117\n", + "0.012855219654738903\n", + "0.014050316996872425\n", + "0.015253161080181599\n", + "0.0164568442851305\n", + "0.017654720693826675\n", + "0.01884056068956852\n", + "0.020008571445941925\n", + "0.021153459325432777\n", + "0.022270442917943\n", + "0.02335532382130623\n", + "0.024404412135481834\n", + "0.025414546951651573\n", + "0.026383107528090477\n", + "0.02730792574584484\n", + "0.028187235817313194\n", + "0.029019730165600777\n", + "0.029804406687617302\n", + "0.030540592968463898\n", + "0.031227895990014076\n", + "0.0318661667406559\n", + "0.03245542570948601\n", + "0.03299591690301895\n", + "0.033487990498542786\n", + "0.03393210470676422\n", + "0.03432885557413101\n", + "0.0346788726747036\n", + "0.034982845187187195\n", + "0.03524153307080269\n", + "0.03545569255948067\n", + "0.03562609851360321\n", + "0.03575354814529419\n", + "0.0358387790620327\n", + "0.035882607102394104\n", + "0.0358857624232769\n", + "0.03584900125861168\n", + "0.035773053765296936\n", + "0.035658590495586395\n", + "0.03550633415579796\n", + "0.03531695529818535\n", + "0.0350910946726799\n", + "0.03482944145798683\n", + "0.0345325842499733\n", + "0.034201208502054214\n", + "0.03383591026067734\n", + "0.033437371253967285\n", + "0.03300623968243599\n", + "0.03254320099949837\n", + "0.03204891458153725\n", + "0.03152415528893471\n", + "0.03096967190504074\n", + "0.03038627654314041\n", + "0.029774831607937813\n", + "0.029136212542653084\n", + "0.028471412137150764\n", + "0.027781469747424126\n", + "0.027067475020885468\n", + "0.0263306125998497\n", + "0.02557213418185711\n", + "0.024793414399027824\n", + "0.02399585209786892\n", + "0.02318098396062851\n", + "0.022350408136844635\n", + "0.021505843847990036\n", + "0.020649077370762825\n", + "0.019782016053795815\n", + "0.018906626850366592\n", + "0.01802499033510685\n", + "0.017139265313744545\n", + "0.016251666471362114\n", + "0.015364517457783222\n", + "0.014480175450444221\n", + "0.013601075857877731\n", + "0.012729699723422527\n", + "0.011868526227772236\n", + "0.01102012861520052\n", + "0.010187029838562012\n", + "0.00937176775187254\n", + "0.008576889522373676\n", + "0.0078048789873719215\n", + "0.00705818273127079\n", + "0.006339195650070906\n", + "0.005650235339999199\n", + "0.00499350018799305\n", + "0.00437111547216773\n", + "0.0037850697990506887\n", + "0.003237204859033227\n", + "0.0027292324230074883\n", + "0.0022627031430602074\n", + "0.0018389757024124265\n", + "0.001459250575862825\n", + "0.0011245179921388626\n", + "0.0008355884347110987\n", + "0.0005930621409788728\n", + "0.00039734362508170307\n", + "0.00024861868587322533\n", + "0.00014687638031318784\n", + "9.189922275254503e-05\n", + "8.326720126206055e-05\n", + "0.0001203638021252118\n", + "0.0002023835841100663\n", + "0.0003283369296696037\n", + "0.0004970658337697387\n", + "0.0007072411244735122\n", + "0.0009573897696100175\n", + "0.0012458967976272106\n", + "0.0015710181323811412\n", + "0.0019308958435431123\n", + "0.0023235781118273735\n", + "0.002747036051005125\n", + "0.003199139377102256\n", + "0.0036777257919311523\n", + "0.00418059853836894\n", + "0.004705504514276981\n", + "0.005250191316008568\n", + "0.00581240514293313\n", + "0.006389886140823364\n", + "0.006980403326451778\n", + "0.00758177787065506\n", + "0.008191811852157116\n", + "0.0088084377348423\n", + "0.009429560974240303\n", + "0.010053197853267193\n", + "0.010677428916096687\n", + "0.011300413869321346\n", + "0.011920370161533356\n", + "0.012535618618130684\n", + "0.013144547119736671\n", + "0.013745635747909546\n", + "0.01433747261762619\n", + "0.014918697066605091\n", + "0.015488065779209137\n", + "0.016044408082962036\n", + "0.016586637124419212\n", + "0.01711374521255493\n", + "0.017624838277697563\n", + "0.018119042739272118\n", + "0.0185956209897995\n", + "0.019053874537348747\n", + "0.019493188709020615\n", + "0.01991298235952854\n", + "0.020312774926424026\n", + "0.02069213055074215\n", + "0.021050674840807915\n", + "0.021388081833720207\n", + "0.021704036742448807\n", + "0.021998342126607895\n", + "0.022270794957876205\n", + "0.022521212697029114\n", + "0.0227495189756155\n", + "0.02295560948550701\n", + "0.023139428347349167\n", + "0.02330094948410988\n", + "0.023440171033143997\n", + "0.023557135835289955\n", + "0.023651860654354095\n", + "0.02372443862259388\n", + "0.023774947971105576\n", + "0.02380349673330784\n", + "0.023810189217329025\n", + "0.023795198649168015\n", + "0.023758646100759506\n", + "0.023700708523392677\n", + "0.023621585220098495\n", + "0.02352146804332733\n", + "0.0234005656093359\n", + "0.023259112611413002\n", + "0.023097366094589233\n", + "0.022915547713637352\n", + "0.02271396666765213\n", + "0.0224929079413414\n", + "0.02225269004702568\n", + "0.021993650123476982\n", + "0.021716121584177017\n", + "0.02142048068344593\n", + "0.0211071465164423\n", + "0.02077651210129261\n", + "0.02042904496192932\n", + "0.02006520703434944\n", + "0.01968551054596901\n", + "0.019290465861558914\n", + "0.01888067089021206\n", + "0.018456704914569855\n", + "0.018019184470176697\n", + "0.017568791285157204\n", + "0.01710621826350689\n", + "0.0166321974247694\n", + "0.01614750362932682\n", + "0.015652954578399658\n", + "0.015149392187595367\n", + "0.014637701213359833\n", + "0.014118815772235394\n", + "0.013593688607215881\n", + "0.013063316233456135\n", + "0.012528739869594574\n", + "0.011991004459559917\n", + "0.0114512387663126\n", + "0.010910551063716412\n", + "0.01037009246647358\n", + "0.009831061586737633\n", + "0.009294639341533184\n", + "0.00876205787062645\n", + "0.008234556764364243\n", + "0.007713365368545055\n", + "0.007199734449386597\n", + "0.006694929674267769\n", + "0.006200181785970926\n", + "0.005716739222407341\n", + "0.005245833192020655\n", + "0.004788663238286972\n", + "0.004346406552940607\n", + "0.003920223563909531\n", + "0.0035112465266138315\n", + "0.003120535984635353\n", + "0.00274913152679801\n", + "0.0023980115074664354\n", + "0.002068108879029751\n", + "0.0017602959414944053\n", + "0.00147537630982697\n", + "0.001214085379615426\n", + "0.0009770930046215653\n", + "0.0007649908657185733\n", + "0.000578292878344655\n", + "0.0004174372006673366\n", + "0.0002827793068718165\n", + "0.0001745957270031795\n", + "9.307559230364859e-05\n", + "3.832831862382591e-05\n", + "1.037848323903745e-05\n", + "9.170142220682465e-06\n", + "0.006289209704846144\n", + "0.0056764245964586735\n", + "0.0051098596304655075\n", + "0.004573033191263676\n", + "0.00406139949336648\n", + "0.003573930123820901\n", + "0.003110993653535843\n", + "0.002673627808690071\n", + "0.0022632540203630924\n", + "0.0018814833601936698\n", + "0.0015300484374165535\n", + "0.0012107176007702947\n", + "0.0009252667659893632\n", + "0.0006754262140020728\n", + "0.00046284974087029696\n", + "0.0002890863106586039\n", + "0.00015553887351416051\n", + "6.344307621475309e-05\n", + "1.3826763279212173e-05\n", + "7.483821718778927e-06\n", + "0.00012013658852083609\n", + "6.984934589127079e-05\n", + "5.607515049632639e-05\n", + "7.844217907404527e-05\n", + "0.00013387802755460143\n", + "0.00019773845269810408\n", + "0.0002176685957238078\n", + "0.00019006160437129438\n", + "0.00014287747035268694\n", + "9.635213064029813e-05\n", + "6.293623300734907e-05\n", + "5.09540295752231e-05\n", + "6.635695172008127e-05\n", + "0.00011328264372423291\n", + "0.00019383011385798454\n", + "0.00030698516638949513\n", + "0.0004463851801119745\n", + "0.0005969335907138884\n", + "0.0007326715858653188\n", + "0.0008223403128795326\n", + "0.0008449505548924208\n", + "0.0008006960852071643\n", + "0.000705501064658165\n", + "0.000579938234295696\n", + "0.00044298861757852137\n", + "0.0003103828930761665\n", + "0.00019482550851535052\n", + "0.00010656409722287208\n", + "5.389324724092148e-05\n", + "4.3472740799188614e-05\n", + "8.049314783420414e-05\n", + "0.00016870908439159393\n", + "0.0003103686321992427\n", + "0.0005060261464677751\n", + "0.0007542585371993482\n", + "0.0010512518929317594\n", + "0.0013902727514505386\n", + "0.0017610351787880063\n", + "0.002149054780602455\n", + "0.00253529055044055\n", + "0.0028963489457964897\n", + "0.003206106135621667\n", + "0.0034387880004942417\n", + "0.0035733492113649845\n", + "0.0035976460203528404\n", + "0.003510740352794528\n", + "0.003322188276797533\n", + "0.0030492949299514294\n", + "0.0027134940028190613\n", + "0.002337369369342923\n", + "0.001942704082466662\n", + "0.001549390028230846\n", + "0.0011750628473237157\n", + "0.0008350154967047274\n", + "0.0005423236289061606\n", + "0.0003079561865888536\n", + "0.00014093836944084615\n", + "4.8452649934915826e-05\n", + "3.5930519516114146e-05\n", + "0.00010711480717873201\n", + "0.0002640930761117488\n", + "0.0005073287757113576\n", + "0.000835676328279078\n", + "0.0012463860912248492\n", + "0.0017351157730445266\n", + "0.0022959550842642784\n", + "0.0029214031528681517\n", + "0.003602423472329974\n", + "0.004328449256718159\n", + "0.005087441299110651\n", + "0.005865972489118576\n", + "0.006649304181337357\n", + "0.007421595975756645\n", + "0.008166162297129631\n", + "0.00886581465601921\n", + "0.009503338485956192\n", + "0.010062146000564098\n", + "0.01052686758339405\n", + "0.010884111747145653\n", + "0.01112312451004982\n", + "0.011236397549510002\n", + "0.011220065876841545\n", + "0.011074126698076725\n", + "0.010802509263157845\n", + "0.010412732139229774\n", + "0.009915530681610107\n", + "0.009324265643954277\n", + "0.008654283359646797\n", + "0.007922321557998657\n", + "0.0071458593010902405\n", + "0.006342605222016573\n", + "0.005530095659196377\n", + "0.004725303500890732\n", + "0.0039443522691726685\n", + "0.003202310763299465\n", + "0.002513028448447585\n", + "0.0018889802740886807\n", + "0.0013411999680101871\n", + "0.0008792043663561344\n", + "0.0005109347403049469\n", + "0.00024275045143440366\n", + "7.94098450569436e-05\n", + "2.4082384697976522e-05\n", + "7.837797602405772e-05\n", + "0.00024238726473413408\n", + "0.0005147424526512623\n", + "0.0008926887530833483\n", + "0.0013721808791160583\n", + "0.0019479604670777917\n", + "0.0026136867236346006\n", + "0.003362072864547372\n", + "0.004184959921985865\n", + "0.005073492415249348\n", + "0.006018271204084158\n", + "0.007009426131844521\n", + "0.008036819286644459\n", + "0.009090137667953968\n", + "0.010159035213291645\n", + "0.011233272030949593\n", + "0.012302819639444351\n", + "0.013357962481677532\n", + "0.014389405027031898\n", + "0.015388350933790207\n", + "0.016346530988812447\n", + "0.017256293445825577\n", + "0.01811060681939125\n", + "0.018903091549873352\n", + "0.019628025591373444\n", + "0.020280398428440094\n", + "0.020855790004134178\n", + "0.021350529044866562\n", + "0.021761545911431313\n", + "0.022086407989263535\n", + "0.022323399782180786\n", + "0.022471340373158455\n", + "0.02252969890832901\n", + "0.022498518228530884\n", + "0.022378455847501755\n", + "0.022170724347233772\n", + "0.021877063438296318\n", + "0.02149982564151287\n", + "0.0210418663918972\n", + "0.0205065980553627\n", + "0.019898027181625366\n", + "0.019220605492591858\n", + "0.018479393795132637\n", + "0.017679931595921516\n", + "0.01682828925549984\n", + "0.01593095064163208\n", + "0.01499492209404707\n", + "0.014027533121407032\n", + "0.013036506250500679\n", + "0.0120298583060503\n", + "0.011015811935067177\n", + "0.010002736002206802\n", + "0.008999079465866089\n", + "0.00801326334476471\n", + "0.00705359922721982\n", + "0.006128211505711079\n", + "0.00524492934346199\n", + "0.004411218222230673\n", + "0.003634081454947591\n", + "0.002919976133853197\n", + "0.002274777740240097\n", + "0.001703691203147173\n", + "0.001211192924529314\n", + "0.0008010084857232869\n", + "0.0004760769079439342\n", + "0.0002385218976996839\n", + "8.9661029051058e-05\n", + "3.0000608603586443e-05\n", + "5.924725701333955e-05\n", + "0.00017634099640417844\n", + "0.0003794878430198878\n", + "0.0006662023370154202\n", + "0.001033356529660523\n", + "0.0014772438444197178\n", + "0.0019936366006731987\n", + "0.002577848732471466\n", + "0.0032248161733150482\n", + "0.00392915029078722\n", + "0.004685225896537304\n", + "0.005487227812409401\n", + "0.006329229101538658\n", + "0.007205275818705559\n", + "0.008109379559755325\n", + "0.00903565064072609\n", + "0.009978306479752064\n", + "0.010931715369224548\n", + "0.011890427209436893\n", + "0.012849250808358192\n", + "0.01380322128534317\n", + "0.014747661538422108\n", + "0.015678193420171738\n", + "0.016590729355812073\n", + "0.0174814835190773\n", + "0.01834699884057045\n", + "0.019184153527021408\n", + "0.019990069791674614\n", + "0.02076219581067562\n", + "0.021498318761587143\n", + "0.022196434438228607\n", + "0.02285481058061123\n", + "0.023471983149647713\n", + "0.02404673770070076\n", + "0.02457800693809986\n", + "0.02506500668823719\n", + "0.02550705149769783\n", + "0.02590368688106537\n", + "0.026254549622535706\n", + "0.026559486985206604\n", + "0.02681841515004635\n", + "0.02703135833144188\n", + "0.02719848044216633\n", + "0.02731996402144432\n", + "0.027396177873015404\n", + "0.027427474036812782\n", + "0.027414336800575256\n", + "0.027357278391718864\n", + "0.027256915345788002\n", + "0.027113890275359154\n", + "0.026928935199975967\n", + "0.026702845469117165\n", + "0.02643646113574505\n", + "0.026130717247724533\n", + "0.025786612182855606\n", + "0.025405220687389374\n", + "0.024987690150737762\n", + "0.02453525736927986\n", + "0.024049244821071625\n", + "0.023531053215265274\n", + "0.022982211783528328\n", + "0.022404272109270096\n", + "0.02179895155131817\n", + "0.02116800658404827\n", + "0.020513344556093216\n", + "0.019836928695440292\n", + "0.01914081536233425\n", + "0.018427157774567604\n", + "0.017698198556900024\n", + "0.016956249251961708\n", + "0.01620369218289852\n", + "0.015442948788404465\n", + "0.014676524326205254\n", + "0.013906932435929775\n", + "0.01313675194978714\n", + "0.012368551455438137\n", + "0.011604896746575832\n", + "0.010848366655409336\n", + "0.010101497173309326\n", + "0.009366791695356369\n", + "0.008646669797599316\n", + "0.007943551056087017\n", + "0.00725970882922411\n", + "0.006597355008125305\n", + "0.0059585729613900185\n", + "0.005345355253666639\n", + "0.004759533330798149\n", + "0.0042028240859508514\n", + "0.0036767879500985146\n", + "0.0031828214414417744\n", + "0.002722175093367696\n", + "0.0022959334310144186\n", + "0.001905000419355929\n", + "0.0015501281013712287\n", + "0.001231876201927662\n", + "0.0009506514179520309\n", + "0.0007066943217068911\n", + "0.0005000719102099538\n", + "0.00033069608616642654\n", + "0.0001983211113838479\n", + "0.00010255869710817933\n", + "4.2874256905633956e-05\n", + "1.8601938791107386e-05\n", + "2.8947117243660614e-05\n", + "7.300038123503327e-05\n", + "0.00014974403893575072\n", + "0.0002580595901235938\n", + "0.0003967364609707147\n", + "0.0005644942866638303\n", + "0.0007599649834446609\n", + "0.0009817337850108743\n", + "0.0012283268151804805\n", + "0.0014982209540903568\n", + "0.0017898747464641929\n", + "0.0021016905084252357\n", + "0.0024320888333022594\n", + "0.002779454691335559\n", + "0.003142164321616292\n", + "0.0035186137538403273\n", + "0.003907191567122936\n", + "0.004306321032345295\n", + "0.0047144219279289246\n", + "0.005129942204803228\n", + "0.005551379639655352\n", + "0.005977247841656208\n", + "0.00640608835965395\n", + "0.006836506072431803\n", + "0.007267138920724392\n", + "0.00769664766266942\n", + "0.008123773150146008\n", + "0.008547285571694374\n", + "0.008965990506112576\n", + "0.009378795512020588\n", + "0.009784577414393425\n", + "0.010182349942624569\n", + "0.010571125894784927\n", + "0.010949984192848206\n", + "0.011318042874336243\n", + "0.011674479581415653\n", + "0.012018519453704357\n", + "0.012349444441497326\n", + "0.012666573747992516\n", + "0.012969261035323143\n", + "0.0132569195702672\n", + "0.013529022224247456\n", + "0.013785053975880146\n", + "0.014024549163877964\n", + "0.014247084967792034\n", + "0.014452271163463593\n", + "0.014639775268733501\n", + "0.014809290878474712\n", + "0.0149605181068182\n", + "0.015093234367668629\n", + "0.015207218006253242\n", + "0.01530231162905693\n", + "0.01537836529314518\n", + "0.015435248613357544\n", + "0.015472916886210442\n", + "0.015491276048123837\n", + "0.015490343794226646\n", + "0.015470107086002827\n", + "0.015430660918354988\n", + "0.01537201926112175\n", + "0.015294311568140984\n", + "0.015197689644992352\n", + "0.015082329511642456\n", + "0.01494841929525137\n", + "0.014796210452914238\n", + "0.01462598703801632\n", + "0.014438041485846043\n", + "0.014232756569981575\n", + "0.014010479673743248\n", + "0.013771661557257175\n", + "0.013516777195036411\n", + "0.01324631366878748\n", + "0.012960842810571194\n", + "0.012660935521125793\n", + "0.012347233481705189\n", + "0.012020421214401722\n", + "0.011681197211146355\n", + "0.011330352164804935\n", + "0.01096868235617876\n", + "0.010597043670713902\n", + "0.010216319002211094\n", + "0.009827464818954468\n", + "0.009431451559066772\n", + "0.009029301814734936\n", + "0.008622068911790848\n", + "0.008210866712033749\n", + "0.007796816062182188\n", + "0.007381103001534939\n", + "0.006964887026697397\n", + "0.006549409590661526\n", + "0.006135927513241768\n", + "0.005725701339542866\n", + "0.00532001256942749\n", + "0.004920163191854954\n", + "0.0045274426229298115\n", + "0.004143170081079006\n", + "0.003768639639019966\n", + "0.0034051481634378433\n", + "0.003053981112316251\n", + "0.0027163908816874027\n", + "0.002393623348325491\n", + "0.002086878288537264\n", + "0.0017973235808312893\n", + "0.001526092761196196\n", + "0.0012742587132379413\n", + "0.001042851828970015\n", + "0.0008328341646119952\n", + "0.0006451049703173339\n", + "0.0004805024655070156\n", + "0.00033977744169533253\n", + "0.0002236091677332297\n", + "0.0001325932244071737\n", + "6.723905971739441e-05\n", + "2.7966048946836963e-05\n", + "1.510143465566216e-05\n", + "2.8878012017230503e-05\n", + "6.943393964320421e-05\n", + "0.00013680967094842345\n", + "0.00023094768403097987\n", + "0.0003516943834256381\n", + "0.0004987989086657763\n", + "0.0006719166995026171\n", + "0.0008706102380529046\n", + "0.0010943416273221374\n", + "0.0013425005599856377\n", + "0.0016143863322213292\n", + "0.0019092042930424213\n", + "0.0022261012345552444\n", + "0.0025641336105763912\n", + "0.0029223128221929073\n", + "0.0032995680812746286\n", + "0.0036947804037481546\n", + "0.004106770735234022\n", + "0.004534331616014242\n", + "0.004976206459105015\n", + "0.005431091412901878\n", + "0.005897685885429382\n", + "0.00637464364990592\n", + "0.006860607303678989\n", + "0.00735421571880579\n", + "0.007854094728827477\n", + "0.008358882740139961\n", + "0.008867205120623112\n", + "0.009377716109156609\n", + "0.009889080189168453\n", + "0.01039997860789299\n", + "0.010909130796790123\n", + "0.0114152692258358\n", + "0.011917154304683208\n", + "0.012413589283823967\n", + "0.012903427705168724\n", + "0.013385538011789322\n", + "0.013858860358595848\n", + "0.014322355389595032\n", + "0.014775021001696587\n", + "0.015215953812003136\n", + "0.015644242987036705\n", + "0.01605905033648014\n", + "0.016459591686725616\n", + "0.01684512197971344\n", + "0.0172149408608675\n", + "0.017568392679095268\n", + "0.017904924228787422\n", + "0.018223954364657402\n", + "0.01852498948574066\n", + "0.018807584419846535\n", + "0.019071312621235847\n", + "0.019315827637910843\n", + "0.019540797919034958\n", + "0.019745923578739166\n", + "0.019930975511670113\n", + "0.02009577304124832\n", + "0.02024013362824917\n", + "0.02036391571164131\n", + "0.020467042922973633\n", + "0.020549457520246506\n", + "0.02061113528907299\n", + "0.020652074366807938\n", + "0.020672334358096123\n", + "0.02067197486758232\n", + "0.02065109834074974\n", + "0.020609868690371513\n", + "0.020548399537801743\n", + "0.020466914400458336\n", + "0.0203656405210495\n", + "0.020244833081960678\n", + "0.020104745402932167\n", + "0.019945712760090828\n", + "0.019768087193369865\n", + "0.019572211429476738\n", + "0.01935850828886032\n", + "0.01912739686667919\n", + "0.018879354000091553\n", + "0.018614834174513817\n", + "0.018334392458200455\n", + "0.018038563430309296\n", + "0.017727931961417198\n", + "0.017403095960617065\n", + "0.017064683139324188\n", + "0.016713377088308334\n", + "0.016349846497178078\n", + "0.015974845737218857\n", + "0.015589077025651932\n", + "0.015193337574601173\n", + "0.014788412488996983\n", + "0.014375096186995506\n", + "0.013954236172139645\n", + "0.013526679947972298\n", + "0.013093307614326477\n", + "0.012654970400035381\n", + "0.012212594971060753\n", + "0.011767061427235603\n", + "0.011319281533360481\n", + "0.010870168916881084\n", + "0.010420647449791431\n", + "0.009971621446311474\n", + "0.009524000808596611\n", + "0.009078689850866795\n", + "0.008636572398245335\n", + "0.008198521099984646\n", + "0.007765415124595165\n", + "0.0073380726389586926\n", + "0.006917331367731094\n", + "0.006503993179649115\n", + "0.006098813842982054\n", + "0.005702529102563858\n", + "0.005315851420164108\n", + "0.0049394601956009865\n", + "0.004573972895741463\n", + "0.004220006056129932\n", + "0.0038781187031418085\n", + "0.0035488177090883255\n", + "0.00323258969001472\n", + "0.0029298742301762104\n", + "0.0026410468854010105\n", + "0.0023664662148803473\n", + "0.002106430707499385\n", + "0.001861200900748372\n", + "0.0016309943748638034\n", + "0.0014159854035824537\n", + "0.001216291100718081\n", + "0.0010320051806047559\n", + "0.000863176304847002\n", + "0.0007098098867572844\n", + "0.0005718670436181128\n", + "0.00044928136048838496\n", + "0.0003419470740482211\n", + "0.0002497202076483518\n", + "0.00017242955800611526\n", + "0.00010986959387082607\n", + "6.180784839671105e-05\n", + "2.7983327527181245e-05\n", + "8.108250767691061e-06\n", + "0.057883795350790024\n", + "0.05733007937669754\n", + "0.056778714060783386\n", + "0.056214552372694016\n", + "0.05563177913427353\n", + "0.05502711236476898\n", + "0.054398324340581894\n", + "0.053743764758110046\n", + "0.05306210368871689\n", + "0.05235213413834572\n", + "0.051612868905067444\n", + "0.05084330588579178\n", + "0.05004260689020157\n", + "0.04921003431081772\n", + "0.04834490641951561\n", + "0.04744666814804077\n", + "0.04651482403278351\n", + "0.045549068599939346\n", + "0.04454918950796127\n", + "0.043515101075172424\n", + "0.04244694113731384\n", + "0.04134492203593254\n", + "0.04020952433347702\n", + "0.03904138505458832\n", + "0.037841349840164185\n", + "0.03661051020026207\n", + "0.03535018488764763\n", + "0.03406196087598801\n", + "0.03274765983223915\n", + "0.03140941262245178\n", + "0.03004956990480423\n", + "0.028670836240053177\n", + "0.027276169508695602\n", + "0.025868825614452362\n", + "0.024452315643429756\n", + "0.023030510172247887\n", + "0.021607480943202972\n", + "0.020187627524137497\n", + "0.018775518983602524\n", + "0.017376016825437546\n", + "0.015994146466255188\n", + "0.014635147526860237\n", + "0.013304373249411583\n", + "0.012007278390228748\n", + "0.01074942946434021\n", + "0.009536371566355228\n", + "0.008373655378818512\n", + "0.0072667780332267284\n", + "0.006221093237400055\n", + "0.005241801962256432\n", + "0.004333892837166786\n", + "0.0035020532086491585\n", + "0.002750661224126816\n", + "0.0020837169140577316\n", + "0.0015047818887978792\n", + "0.0010169456945732236\n", + "0.0006227904232218862\n", + "0.0003243373357690871\n", + "0.0001230267807841301\n", + "1.9690971384989098e-05\n", + "1.453863842471037e-05\n", + "0.00010714487871155143\n", + "0.0002964484738186002\n", + "0.0005807624547742307\n", + "0.0009577753953635693\n", + "0.001424596644937992\n", + "0.0019777556881308556\n", + "0.0026132664643228054\n", + "0.0033266630489379168\n", + "0.004113009665161371\n", + "0.004967032931745052\n", + "0.005883097182959318\n", + "0.006855309009552002\n", + "0.007877593860030174\n", + "0.008943676017224789\n", + "0.010047269985079765\n", + "0.011182003654539585\n", + "0.012341582216322422\n", + "0.013519811443984509\n", + "0.014710628427565098\n", + "0.01590817980468273\n", + "0.017106879502534866\n", + "0.018301380798220634\n", + "0.01948671229183674\n", + "0.020658202469348907\n", + "0.02181152254343033\n", + "0.02294274792075157\n", + "0.02404828555881977\n", + "0.025124892592430115\n", + "0.026169709861278534\n", + "0.027180194854736328\n", + "0.028154106810688972\n", + "0.029089616611599922\n", + "0.029985081404447556\n", + "0.03083924576640129\n", + "0.031651049852371216\n", + "0.03241969272494316\n", + "0.03314465656876564\n", + "0.03382551670074463\n", + "0.034462153911590576\n", + "0.03505449742078781\n", + "0.03560265898704529\n", + "0.03610688075423241\n", + "0.03656744956970215\n", + "0.03698475658893585\n", + "0.03735923767089844\n", + "0.037691373378038406\n", + "0.037981629371643066\n", + "0.03823051601648331\n", + "0.03843853622674942\n", + "0.03860616311430931\n", + "0.03873386234045029\n", + "0.03882209584116936\n", + "0.03887123614549637\n", + "0.03888168931007385\n", + "0.03885379433631897\n", + "0.03878786787390709\n", + "0.03868415951728821\n", + "0.03854295238852501\n", + "0.038364436477422714\n", + "0.03814880549907684\n", + "0.03789622336626053\n", + "0.03760688379406929\n", + "0.03728088364005089\n", + "0.03691835701465607\n", + "0.03651946783065796\n", + "0.0360843800008297\n", + "0.03561323136091232\n", + "0.035106245428323746\n", + "0.03456368297338486\n", + "0.03398580104112625\n", + "0.03337297588586807\n", + "0.03272563964128494\n", + "0.03204427286982536\n", + "0.031329505145549774\n", + "0.030582047998905182\n", + "0.029802750796079636\n", + "0.0289925467222929\n", + "0.028152601793408394\n", + "0.027284154668450356\n", + "0.02638864330947399\n", + "0.025467688217759132\n", + "0.024523066356778145\n", + "0.023556772619485855\n", + "0.022570982575416565\n", + "0.02156807668507099\n", + "0.020550625398755074\n", + "0.01952139288187027\n", + "0.01848335936665535\n", + "0.017439646646380424\n", + "0.01639358326792717\n", + "0.015348645858466625\n", + "0.014308464713394642\n", + "0.01327679492533207\n", + "0.012257466092705727\n", + "0.011254392564296722\n", + "0.010271573439240456\n", + "0.009313001297414303\n", + "0.008382654748857021\n", + "0.007484466768801212\n", + "0.006622291635721922\n", + "0.005799885839223862\n", + "0.005020833108574152\n", + "0.004288539290428162\n", + "0.0036062218714505434\n", + "0.0029768096283078194\n", + "0.0024030134081840515\n", + "0.0018871930660679936\n", + "0.001431421609595418\n", + "0.0010374131379649043\n", + "0.0007065421668812633\n", + "0.0004398121382109821\n", + "0.0002378586505074054\n", + "0.00010094744357047603\n", + "2.8970222047064453e-05\n", + "2.1459802155732177e-05\n", + "7.759900472592562e-05\n", + "0.00019623065600171685\n", + "0.0003758828970603645\n", + "0.0006147808744572103\n", + "0.0009108786471188068\n", + "0.001261880504898727\n", + "0.0016652735648676753\n", + "0.0021183425560593605\n", + "0.002618219470605254\n", + "0.0031618820503354073\n", + "0.003746224567294121\n", + "0.004368055146187544\n", + "0.005024123936891556\n", + "0.00571117689833045\n", + "0.006425933912396431\n", + "0.007165172137320042\n", + "0.007925689220428467\n", + "0.008704355917870998\n", + "0.009498115628957748\n", + "0.010304050520062447\n", + "0.011119289323687553\n", + "0.011941111646592617\n", + "0.012766947969794273\n", + "0.013594314455986023\n", + "0.014420909807085991\n", + "0.015244568698108196\n", + "0.016063246876001358\n", + "0.01687508262693882\n", + "0.01767829619348049\n", + "0.018471330404281616\n", + "0.019252698868513107\n", + "0.020021092146635056\n", + "0.020775310695171356\n", + "0.021514281630516052\n", + "0.022237051278352737\n", + "0.022942781448364258\n", + "0.023630721494555473\n", + "0.024300239980220795\n", + "0.02495080605149269\n", + "0.025581959635019302\n", + "0.02619330957531929\n", + "0.026784555986523628\n", + "0.027355460450053215\n", + "0.02790585160255432\n", + "0.028435613960027695\n", + "0.028944656252861023\n", + "0.02943294309079647\n", + "0.029900522902607918\n", + "0.030347436666488647\n", + "0.030773725360631943\n", + "0.031179551035165787\n", + "0.03156498074531555\n", + "0.031930189579725266\n", + "0.03227534145116806\n", + "0.03260062262415886\n", + "0.03290620446205139\n", + "0.03319227695465088\n", + "0.03345905989408493\n", + "0.03370673209428787\n", + "0.03393552079796791\n", + "0.03414560854434967\n", + "0.03433722257614136\n", + "0.03451056778430939\n", + "0.03466583043336868\n", + "0.034803204238414764\n", + "0.03492287918925285\n", + "0.03502504527568817\n", + "0.03510986641049385\n", + "0.035177525132894516\n", + "0.035228192806243896\n", + "0.03526201844215393\n", + "0.03527914360165596\n", + "0.03527971729636192\n", + "0.03526386618614197\n", + "0.03523172065615654\n", + "0.03518339619040489\n", + "0.03511901944875717\n", + "0.03503868356347084\n", + "0.03494248539209366\n", + "0.034830521792173386\n", + "0.03470290079712868\n", + "0.03455967828631401\n", + "0.03440095856785774\n", + "0.034226782619953156\n", + "0.0340372771024704\n", + "0.03383249789476395\n", + "0.03361247852444649\n", + "0.03337734565138817\n", + "0.03312712907791138\n", + "0.03286192566156387\n", + "0.03258182108402252\n", + "0.032286882400512695\n", + "0.03197720646858215\n", + "0.031652867794036865\n", + "0.03131398931145668\n", + "0.030960656702518463\n", + "0.030593013390898705\n", + "0.030211191624403\n", + "0.02981529012322426\n", + "0.02940552681684494\n", + "0.02898203209042549\n", + "0.02854500524699688\n", + "0.028094636276364326\n", + "0.027631202712655067\n", + "0.02715490385890007\n", + "0.026665998622775078\n", + "0.026164820417761803\n", + "0.025651663541793823\n", + "0.025126874446868896\n", + "0.02459082193672657\n", + "0.024043899029493332\n", + "0.023486552760004997\n", + "0.022919226437807083\n", + "0.022342421114444733\n", + "0.021756663918495178\n", + "0.0211624912917614\n", + "0.020560532808303833\n", + "0.019951364025473595\n", + "0.01933569647371769\n", + "0.018714211881160736\n", + "0.018087636679410934\n", + "0.017456769943237305\n", + "0.016822371631860733\n", + "0.01618531160056591\n", + "0.015546450391411781\n", + "0.014906715601682663\n", + "0.014267029240727425\n", + "0.013628365471959114\n", + "0.01299173105508089\n", + "0.012358136475086212\n", + "0.011728638783097267\n", + "0.011104315519332886\n", + "0.010486266575753689\n", + "0.009875594638288021\n", + "0.009273428469896317\n", + "0.008680899627506733\n", + "0.008099157363176346\n", + "0.007529345341026783\n", + "0.006972606293857098\n", + "0.006430094130337238\n", + "0.005902914330363274\n", + "0.005392209626734257\n", + "0.004899076651781797\n", + "0.004424580838531256\n", + "0.003969784826040268\n", + "0.0035357021261006594\n", + "0.003123317379504442\n", + "0.002733567962422967\n", + "0.0023673574905842543\n", + "0.002025520894676447\n", + "0.0017088593449443579\n", + "0.0014180983416736126\n", + "0.0011539130937308073\n", + "0.0009169098921120167\n", + "0.0007076188921928406\n", + "0.0005265142535790801\n", + "0.0003739806415978819\n", + "0.00025033234851434827\n", + "0.00015580713807139546\n", + "9.055865666596219e-05\n", + "5.466204311233014e-05\n", + "4.811225880985148e-05\n", + "7.081874355208129e-05\n", + "0.00012261417577974498\n", + "0.00020324729848653078\n", + "0.00031238942756317556\n", + "0.0004496361070778221\n", + "0.0006145028746686876\n", + "0.000806438853032887\n", + "0.0010248142061755061\n", + "0.0012689384166151285\n", + "0.0015380564145743847\n", + "0.0018313518958166242\n", + "0.00214795651845634\n", + "0.002486941870301962\n", + "0.0028473427519202232\n", + "0.003228150773793459\n", + "0.0036283149383962154\n", + "0.004046752117574215\n", + "0.0044823563657701015\n", + "0.0049339779652655125\n", + "0.0054004983976483345\n", + "0.005880727432668209\n", + "0.0063735065050423145\n", + "0.006877658888697624\n", + "0.007392002735286951\n", + "0.007915357127785683\n", + "0.008446591906249523\n", + "0.008984536863863468\n", + "0.009528057649731636\n", + "0.010076033882796764\n", + "0.01062739361077547\n", + "0.011181045323610306\n", + "0.011735976673662663\n", + "0.012291155755519867\n", + "0.01284562423825264\n", + "0.013398419134318829\n", + "0.013948644511401653\n", + "0.014495429582893848\n", + "0.015037930570542812\n", + "0.015575357712805271\n", + "0.016106916591525078\n", + "0.016631947830319405\n", + "0.01714971289038658\n", + "0.017659584060311317\n", + "0.018160969018936157\n", + "0.018653254956007004\n", + "0.019135933369398117\n", + "0.019608499482274055\n", + "0.020070485770702362\n", + "0.02052147313952446\n", + "0.020961033180356026\n", + "0.021388810127973557\n", + "0.02180447056889534\n", + "0.022207681089639664\n", + "0.022598182782530785\n", + "0.02297569252550602\n", + "0.023339981213212013\n", + "0.023690856993198395\n", + "0.0240281093865633\n", + "0.0243515782058239\n", + "0.024661097675561905\n", + "0.02495654486119747\n", + "0.025237813591957092\n", + "0.02550477162003517\n", + "0.02575736679136753\n", + "0.025995491072535515\n", + "0.026219116523861885\n", + "0.026428166776895523\n", + "0.026622595265507698\n", + "0.026802394539117813\n", + "0.026967525482177734\n", + "0.02711796760559082\n", + "0.02725372463464737\n", + "0.027374761179089546\n", + "0.027481118217110634\n", + "0.02757277525961399\n", + "0.027649754658341408\n", + "0.027712058275938034\n", + "0.027759717777371407\n", + "0.02779274433851242\n", + "0.027811173349618912\n", + "0.027815023437142372\n", + "0.02780432626605034\n", + "0.027779124677181244\n", + "0.027739442884922028\n", + "0.02768530510365963\n", + "0.027616804465651512\n", + "0.02753392979502678\n", + "0.027436763048171997\n", + "0.02732534520328045\n", + "0.02719973400235176\n", + "0.027059990912675858\n", + "0.02690618857741356\n", + "0.026738394051790237\n", + "0.026556672528386116\n", + "0.026361120864748955\n", + "0.026151815429329872\n", + "0.02592887543141842\n", + "0.025692392140626907\n", + "0.025442492216825485\n", + "0.025179283693432808\n", + "0.024902908131480217\n", + "0.024613546207547188\n", + "0.02431131899356842\n", + "0.02399640530347824\n", + "0.02366899698972702\n", + "0.02332931011915207\n", + "0.0229775533080101\n", + "0.022613972425460815\n", + "0.02223881334066391\n", + "0.021852347999811172\n", + "0.021454868838191032\n", + "0.02104669250547886\n", + "0.02062816359102726\n", + "0.020199619233608246\n", + "0.0197614599019289\n", + "0.019314084202051163\n", + "0.01885790377855301\n", + "0.018393388018012047\n", + "0.017921021208167076\n", + "0.01744130440056324\n", + "0.01695474423468113\n", + "0.01646193489432335\n", + "0.01596345566213131\n", + "0.01545988954603672\n", + "0.014951903373003006\n", + "0.014440133236348629\n", + "0.01392528135329485\n", + "0.013408075086772442\n", + "0.012889224104583263\n", + "0.012369506061077118\n", + "0.011849697679281235\n", + "0.011330608278512955\n", + "0.010813038796186447\n", + "0.010297847911715508\n", + "0.009785892441868782\n", + "0.00927803386002779\n", + "0.008775146678090096\n", + "0.008278126828372478\n", + "0.007787867449223995\n", + "0.0073052700608968735\n", + "0.006831230130046606\n", + "0.006366661284118891\n", + "0.005912431515753269\n", + "0.0054694488644599915\n", + "0.005038576666265726\n", + "0.004620678722858429\n", + "0.0042166030034422874\n", + "0.0038271560333669186\n", + "0.0034531475976109505\n", + "0.0030953509267419577\n", + "0.002754504792392254\n", + "0.00243130954913795\n", + "0.0021264466922730207\n", + "0.0018405340379104018\n", + "0.0015741788083687425\n", + "0.0013279069680720568\n", + "0.00110223691444844\n", + "0.0008975934470072389\n", + "0.0007143973489291966\n", + "0.0005529810441657901\n", + "0.00041363900527358055\n", + "0.00029661445296369493\n", + "0.00020208135538268834\n", + "0.00013017220771871507\n", + "8.094943768810481e-05\n", + "5.4426003771368414e-05\n", + "5.055920337326825e-05\n", + "6.924594345036894e-05\n", + "0.00011033134069293737\n", + "0.00017360600759275258\n", + "0.0002588040952105075\n", + "0.00036561687011271715\n", + "0.0004936754703521729\n", + "0.0006425747415050864\n", + "0.0008118555415421724\n", + "0.0010010201949626207\n", + "0.0012095305137336254\n", + "0.0014368100091814995\n", + "0.0016822436591610312\n", + "0.0019451919943094254\n", + "0.0022249806206673384\n", + "0.002520914189517498\n", + "0.0028322655707597733\n", + "0.0031582906376570463\n", + "0.003498238977044821\n", + "0.003851329442113638\n", + "0.004216780420392752\n", + "0.004593796096742153\n", + "0.00498158298432827\n", + "0.005379330366849899\n", + "0.005786236375570297\n", + "0.006201496347784996\n", + "0.006624327972531319\n", + "0.00705393310636282\n", + "0.007489531300961971\n", + "0.007930351421236992\n", + "0.0083756223320961\n", + "0.00882462877780199\n", + "0.009276608005166054\n", + "0.009730877354741096\n", + "0.010186734609305859\n", + "0.01064347568899393\n", + "0.011100489646196365\n", + "0.011557118967175484\n", + "0.012012760154902935\n", + "0.01246679201722145\n", + "0.012918700464069843\n", + "0.013367891311645508\n", + "0.013813883066177368\n", + "0.014256149530410767\n", + "0.014694225043058395\n", + "0.015127649530768394\n", + "0.01555600669234991\n", + "0.015978867188096046\n", + "0.016395865008234978\n", + "0.01680663228034973\n", + "0.0172108244150877\n", + "0.017608117312192917\n", + "0.017998211085796356\n", + "0.01838083192706108\n", + "0.0187557190656662\n", + "0.01912260241806507\n", + "0.01948130875825882\n", + "0.019831577315926552\n", + "0.020173240453004837\n", + "0.0205061174929142\n", + "0.0208300594240427\n", + "0.02114490605890751\n", + "0.021450508385896683\n", + "0.021746791899204254\n", + "0.022033601999282837\n", + "0.02231087163090706\n", + "0.022578496485948563\n", + "0.02283640205860138\n", + "0.023084543645381927\n", + "0.023322850465774536\n", + "0.023551255464553833\n", + "0.023769745603203773\n", + "0.023978274315595627\n", + "0.024176809936761856\n", + "0.02436533197760582\n", + "0.02454383298754692\n", + "0.024712296202778816\n", + "0.02487071603536606\n", + "0.025019098073244095\n", + "0.025157436728477478\n", + "0.025285743176937103\n", + "0.025404036045074463\n", + "0.02551231160759926\n", + "0.02561059594154358\n", + "0.025698915123939514\n", + "0.02577727474272251\n", + "0.02584570273756981\n", + "0.025904232636094093\n", + "0.025952883064746857\n", + "0.025991683825850487\n", + "0.026020662859082222\n", + "0.026039861142635345\n", + "0.026049289852380753\n", + "0.026049019768834114\n", + "0.026039056479930878\n", + "0.026019450277090073\n", + "0.025990234687924385\n", + "0.0259514432400465\n", + "0.02590312249958515\n", + "0.02584531344473362\n", + "0.025778062641620636\n", + "0.025701399892568588\n", + "0.0256153866648674\n", + "0.025520067662000656\n", + "0.025415487587451935\n", + "0.025301698595285416\n", + "0.025178764015436172\n", + "0.025046728551387787\n", + "0.024905655533075333\n", + "0.024755612015724182\n", + "0.02459663711488247\n", + "0.024428820237517357\n", + "0.02425222098827362\n", + "0.024066917598247528\n", + "0.023872997611761093\n", + "0.02367052249610424\n", + "0.023459583520889282\n", + "0.023240268230438232\n", + "0.0230126790702343\n", + "0.022776931524276733\n", + "0.022533096373081207\n", + "0.022281307727098465\n", + "0.02202167734503746\n", + "0.021754339337348938\n", + "0.021479407325387\n", + "0.021197013556957245\n", + "0.020907331258058548\n", + "0.02061048336327076\n", + "0.020306633785367012\n", + "0.01999596320092678\n", + "0.019678648561239243\n", + "0.019354863092303276\n", + "0.0190248042345047\n", + "0.01868867315351963\n", + "0.01834668032824993\n", + "0.017999060451984406\n", + "0.017646031454205513\n", + "0.017287829890847206\n", + "0.016924714669585228\n", + "0.01655694842338562\n", + "0.016184791922569275\n", + "0.015808546915650368\n", + "0.01542848814278841\n", + "0.015044912695884705\n", + "0.014658153988420963\n", + "0.014268524013459682\n", + "0.013876358047127724\n", + "0.013481996022164822\n", + "0.0130858039483428\n", + "0.012688127346336842\n", + "0.012289346195757389\n", + "0.011889846995472908\n", + "0.01149002369493246\n", + "0.011090266518294811\n", + "0.010691000148653984\n", + "0.010292623192071915\n", + "0.009895560331642628\n", + "0.009500250220298767\n", + "0.009107126854360104\n", + "0.008716634474694729\n", + "0.008329207077622414\n", + "0.007945308461785316\n", + "0.007565379608422518\n", + "0.00718990433961153\n", + "0.006819302681833506\n", + "0.006454057525843382\n", + "0.006094629410654306\n", + "0.005741462577134371\n", + "0.005395025014877319\n", + "0.005055758636444807\n", + "0.004724128637462854\n", + "0.004400565288960934\n", + "0.00408550538122654\n", + "0.0037794033996760845\n", + "0.0034826593473553658\n", + "0.0031956892926245928\n", + "0.002918907208368182\n", + "0.002652699127793312\n", + "0.0023974506184458733\n", + "0.0021535255946218967\n", + "0.001921268762089312\n", + "0.0017010316951200366\n", + "0.0014931279001757503\n", + "0.0012978584272786975\n", + "0.0011155231622979045\n", + "0.0009463777532801032\n", + "0.0007906725513748825\n", + "0.0006486363126896322\n", + "0.0005204750341363251\n", + "0.0004063722735736519\n", + "0.0003064937482122332\n", + "0.00022097586770541966\n", + "0.00014993903459981084\n", + "9.347437298856676e-05\n", + "5.165099719306454e-05\n", + "2.45160554186441e-05\n", + "1.2090762538718991e-05\n", + "1.4372479199664667e-05\n", + "3.133447535219602e-05\n", + "6.292553734965622e-05\n", + "0.00010907103569479659\n", + "0.00016967274132184684\n", + "0.0002446086145937443\n", + "0.00033373397309333086\n", + "0.000436880043707788\n", + "0.000553858932107687\n", + "0.00068445730721578\n", + "0.0008284468785859644\n", + "0.0009855694370344281\n", + "0.001155558042228222\n", + "0.0013381215976551175\n", + "0.001532949274405837\n", + "0.001739721279591322\n", + "0.001958083361387253\n", + "0.002187692793086171\n", + "0.0024281716905534267\n", + "0.002679144497960806\n", + "0.0029402044601738453\n", + "0.0032109469175338745\n", + "0.0034909602254629135\n", + "0.0037798085249960423\n", + "0.004077070392668247\n", + "0.004382295534014702\n", + "0.004695039242506027\n", + "0.005014859139919281\n", + "0.0053412760607898235\n", + "0.005673857405781746\n", + "0.006012121681123972\n", + "0.00635563163086772\n", + "0.006703896913677454\n", + "0.007056484930217266\n", + "0.007412916049361229\n", + "0.007772751152515411\n", + "0.00813552550971508\n", + "0.008500806987285614\n", + "0.008868133649230003\n", + "0.009237071499228477\n", + "0.009607195854187012\n", + "0.009978082962334156\n", + "0.01034931093454361\n", + "0.010720464400947094\n", + "0.011091162450611591\n", + "0.011460989713668823\n", + "0.011829568073153496\n", + "0.01219653058797121\n", + "0.012561504729092121\n", + "0.012924144975841045\n", + "0.013284103944897652\n", + "0.013641047291457653\n", + "0.013994645327329636\n", + "0.014344582334160805\n", + "0.014690564014017582\n", + "0.015032291412353516\n", + "0.015369492582976818\n", + "0.015701886266469955\n", + "0.01602921634912491\n", + "0.016351230442523956\n", + "0.016667691990733147\n", + "0.016978370025753975\n", + "0.01728304848074913\n", + "0.017581509426236153\n", + "0.017873553559184074\n", + "0.01815900020301342\n", + "0.018437666818499565\n", + "0.018709369003772736\n", + "0.018973959609866142\n", + "0.019231274724006653\n", + "0.019481167197227478\n", + "0.019723517820239067\n", + "0.01995816081762314\n", + "0.02018500491976738\n", + "0.020403925329446793\n", + "0.020614830777049065\n", + "0.020817598327994347\n", + "0.021012142300605774\n", + "0.021198391914367676\n", + "0.021376240998506546\n", + "0.021545616909861565\n", + "0.021706467494368553\n", + "0.02185872569680214\n", + "0.022002335637807846\n", + "0.022137243300676346\n", + "0.022263389080762863\n", + "0.022380739450454712\n", + "0.02248925343155861\n", + "0.022588906809687614\n", + "0.02267964743077755\n", + "0.022761452943086624\n", + "0.02283434569835663\n", + "0.02289825864136219\n", + "0.022953199222683907\n", + "0.022999132052063942\n", + "0.02303609438240528\n", + "0.023064039647579193\n", + "0.023082977160811424\n", + "0.023092936724424362\n", + "0.02309390716254711\n", + "0.02308589778840542\n", + "0.02306891232728958\n", + "0.02304297871887684\n", + "0.023008104413747787\n", + "0.02296433225274086\n", + "0.022911658510565758\n", + "0.02285013534128666\n", + "0.022779792547225952\n", + "0.022700659930706024\n", + "0.022612785920500755\n", + "0.022516196593642235\n", + "0.02241094782948494\n", + "0.022297102957963943\n", + "0.022174697369337082\n", + "0.022043799981474876\n", + "0.02190445549786091\n", + "0.021756764501333237\n", + "0.021600766107439995\n", + "0.021436575800180435\n", + "0.02126423642039299\n", + "0.021083839237689972\n", + "0.020895497873425484\n", + "0.02069929428398609\n", + "0.02049531601369381\n", + "0.020283693447709084\n", + "0.02006453089416027\n", + "0.019837964326143265\n", + "0.01960410363972187\n", + "0.01936308667063713\n", + "0.019115043804049492\n", + "0.018860135227441788\n", + "0.018598509952425957\n", + "0.01833033189177513\n", + "0.018055761232972145\n", + "0.017774974927306175\n", + "0.017488164827227592\n", + "0.01719551905989647\n", + "0.016897231340408325\n", + "0.016593515872955322\n", + "0.016284584999084473\n", + "0.015970665961503983\n", + "0.015651986002922058\n", + "0.015328803099691868\n", + "0.015001342631876469\n", + "0.014669865369796753\n", + "0.014334658160805702\n", + "0.013995968736708164\n", + "0.013654106296598911\n", + "0.013309330679476261\n", + "0.012961983680725098\n", + "0.012612328864634037\n", + "0.01226071547716856\n", + "0.011907448060810566\n", + "0.011552865616977215\n", + "0.011197291314601898\n", + "0.010841085575520992\n", + "0.010484588332474232\n", + "0.010128173977136612\n", + "0.009772172197699547\n", + "0.009416983462870121\n", + "0.009062961675226688\n", + "0.008710496127605438\n", + "0.008359964936971664\n", + "0.00801174808293581\n", + "0.007666232995688915\n", + "0.007323800586163998\n", + "0.0069848583079874516\n", + "0.006649787537753582\n", + "0.006318981293588877\n", + "0.0059928204864263535\n", + "0.005671710707247257\n", + "0.0053560142405331135\n", + "0.005046146921813488\n", + "0.004742461256682873\n", + "0.0044453442096710205\n", + "0.004155161790549755\n", + "0.0038722758181393147\n", + "0.0035970527678728104\n", + "0.003329833969473839\n", + "0.003070954931899905\n", + "0.002820755820721388\n", + "0.0025795409455895424\n", + "0.002347633708268404\n", + "0.002125325845554471\n", + "0.001912904204800725\n", + "0.0017106403829529881\n", + "0.0015187837416306138\n", + "0.0013375873677432537\n", + "0.0011672695400193334\n", + "0.0010080481879413128\n", + "0.0008601144654676318\n", + "0.0007236461970023811\n", + "0.0005988076445646584\n", + "0.0004857379535678774\n", + "0.00038456503534689546\n", + "0.00029539293609559536\n", + "0.00021830902551300824\n", + "0.00015338418597821146\n", + "0.00010066567483590916\n", + "6.018495332682505e-05\n", + "3.195099634467624e-05\n", + "1.5957783034536988e-05\n", + "1.217623685079161e-05\n", + "2.056035737041384e-05\n", + "4.1043851524591446e-05\n", + "7.354396802838892e-05\n", + "0.00011795580940088257\n", + "0.0001741608721204102\n", + "0.00024201902851928025\n", + "0.00032137599191628397\n", + "0.00041205555316992104\n", + "0.0005138741107657552\n", + "0.000626622058916837\n", + "0.0007500766078010201\n", + "0.000884011504240334\n", + "0.0010281759314239025\n", + "0.001182300504297018\n", + "0.0013461147900670767\n", + "0.0015193411381915212\n", + "0.001701670465990901\n", + "0.0018927999772131443\n", + "0.0020924119744449854\n", + "0.0023001779336482286\n", + "0.002515763510018587\n", + "0.00273882900364697\n", + "0.0029690200462937355\n", + "0.0032059981022030115\n", + "0.00344939436763525\n", + "0.003698840970173478\n", + "0.003953990992158651\n", + "0.0042144483886659145\n", + "0.00447987113147974\n", + "0.004749863874167204\n", + "0.005024072248488665\n", + "0.005302106495946646\n", + "0.005583616904914379\n", + "0.005868214648216963\n", + "0.006155547220259905\n", + "0.006445244885981083\n", + "0.006736946292221546\n", + "0.0070302835665643215\n", + "0.007324929349124432\n", + "0.007620502728968859\n", + "0.007916697300970554\n", + "0.008213127963244915\n", + "0.00850951112806797\n", + "0.008805484510958195\n", + "0.009100744500756264\n", + "0.009394981898367405\n", + "0.009687887504696846\n", + "0.009979168884456158\n", + "0.01026852335780859\n", + "0.010555678978562355\n", + "0.010840351693332195\n", + "0.011122293770313263\n", + "0.011401228606700897\n", + "0.011676918715238571\n", + "0.011949107050895691\n", + "0.012217573821544647\n", + "0.012482088059186935\n", + "0.012742439284920692\n", + "0.012998414225876331\n", + "0.013249808922410011\n", + "0.013496441766619682\n", + "0.01373810600489378\n", + "0.013974661938846111\n", + "0.014205919578671455\n", + "0.01443171314895153\n", + "0.01465191226452589\n", + "0.014866353943943977\n", + "0.01507491059601307\n", + "0.015277455560863018\n", + "0.01547385472804308\n", + "0.015664003789424896\n", + "0.01584779843688011\n", + "0.016025124117732048\n", + "0.01619590073823929\n", + "0.016360048204660416\n", + "0.01651744358241558\n", + "0.016668055206537247\n", + "0.016811789944767952\n", + "0.016948595643043518\n", + "0.017078407108783722\n", + "0.017201179638504982\n", + "0.01731685921549797\n", + "0.017425399273633957\n", + "0.017526762560009956\n", + "0.01762092486023903\n", + "0.017707856371998787\n", + "0.017787542194128036\n", + "0.017859933897852898\n", + "0.017925048246979713\n", + "0.017982857301831245\n", + "0.01803336665034294\n", + "0.01807655207812786\n", + "0.018112439662218094\n", + "0.01814100332558155\n", + "0.018162289634346962\n", + "0.018176281824707985\n", + "0.01818300038576126\n", + "0.01818247325718403\n", + "0.018174707889556885\n", + "0.018159735947847366\n", + "0.018137581646442413\n", + "0.018108291551470757\n", + "0.018071886152029037\n", + "0.018028397113084793\n", + "0.017977885901927948\n", + "0.01792038045823574\n", + "0.017855945974588394\n", + "0.017784608528017998\n", + "0.017706459388136864\n", + "0.017621509730815887\n", + "0.017529841512441635\n", + "0.01743154413998127\n", + "0.017326634377241135\n", + "0.017215227708220482\n", + "0.017097385600209236\n", + "0.01697317324578762\n", + "0.016842680051922798\n", + "0.016705995425581932\n", + "0.016563212499022484\n", + "0.016414407640695572\n", + "0.0162596944719553\n", + "0.016099173575639725\n", + "0.015932930633425713\n", + "0.015761088579893112\n", + "0.015583759173750877\n", + "0.015401061624288559\n", + "0.01521310769021511\n", + "0.01502004824578762\n", + "0.014821979217231274\n", + "0.014619049616158009\n", + "0.014411399140954018\n", + "0.014199184253811836\n", + "0.013982528820633888\n", + "0.01376158744096756\n", + "0.013536541722714901\n", + "0.013307517394423485\n", + "0.013074716553092003\n", + "0.012838281691074371\n", + "0.012598385103046894\n", + "0.01235523447394371\n", + "0.012108981609344482\n", + "0.011859826743602753\n", + "0.011607973836362362\n", + "0.01135360449552536\n", + "0.01109692919999361\n", + "0.010838150046765804\n", + "0.010577470064163208\n", + "0.010315103456377983\n", + "0.010051270946860313\n", + "0.009786190465092659\n", + "0.009520086459815502\n", + "0.009253179654479027\n", + "0.008985713124275208\n", + "0.008717909455299377\n", + "0.00845000334084034\n", + "0.00818224623799324\n", + "0.007914860732853413\n", + "0.0076481010764837265\n", + "0.0073822070844471455\n", + "0.007117425091564655\n", + "0.006854004226624966\n", + "0.00659219129011035\n", + "0.0063322363421320915\n", + "0.006074388977140188\n", + "0.005818897858262062\n", + "0.005566004663705826\n", + "0.005315967835485935\n", + "0.005069035571068525\n", + "0.004825445357710123\n", + "0.004585449583828449\n", + "0.004349284339696169\n", + "0.004117195028811693\n", + "0.0038894126191735268\n", + "0.003666182979941368\n", + "0.003447716822847724\n", + "0.0032342567574232817\n", + "0.003026022110134363\n", + "0.0028232329059392214\n", + "0.0026260963641107082\n", + "0.0024348231963813305\n", + "0.0022496157325804234\n", + "0.0020706672221422195\n", + "0.0018981662578880787\n", + "0.001732302363961935\n", + "0.0015732483007013798\n", + "0.0014211664674803615\n", + "0.0012762279948219657\n", + "0.001138580497354269\n", + "0.001008364255540073\n", + "0.0008857235079631209\n", + "0.000770780083257705\n", + "0.000663657090626657\n", + "0.0005644597113132477\n", + "0.0004732901288662106\n", + "0.0003902377502527088\n", + "0.0003153847937937826\n", + "0.00024880244745872915\n", + "0.00019055027223657817\n", + "0.00014068189193494618\n", + "9.923661855282262e-05\n", + "6.624692468903959e-05\n", + "4.1733073885552585e-05\n", + "2.5705165171530098e-05\n", + "1.8164653738494962e-05\n", + "1.9102004443993792e-05\n", + "2.8497626772150397e-05\n", + "4.6321914851432666e-05\n", + "7.25349091226235e-05\n", + "0.00010708758782129735\n", + "0.00014992212527431548\n", + "0.00020096972002647817\n", + "0.00026015256298705935\n", + "0.00032738453592173755\n", + "0.0004025663947686553\n", + "0.0004855991282965988\n", + "0.0005763644585385919\n", + "0.0006747463485226035\n", + "0.0007806156645528972\n", + "0.0008938303799368441\n", + "0.001014252658933401\n", + "0.0011417281348258257\n", + "0.0012760964455083013\n", + "0.0014171944931149483\n", + "0.0015648596454411745\n", + "0.0017189037753269076\n", + "0.0018791602924466133\n", + "0.002045427681878209\n", + "0.0022175146732479334\n", + "0.0023952373303472996\n", + "0.0025783877354115248\n", + "0.0027667658869177103\n", + "0.0029601636342704296\n", + "0.0031583725940436125\n", + "0.0033611764665693045\n", + "0.0035683654714375734\n", + "0.003779719350859523\n", + "0.003995019011199474\n", + "0.004214046522974968\n", + "0.004436589311808348\n", + "0.004662415012717247\n", + "0.004891307558864355\n", + "0.0051230378448963165\n", + "0.005357407499104738\n", + "0.005594176240265369\n", + "0.005833120085299015\n", + "0.006074040196835995\n", + "0.006316702347248793\n", + "0.006560899317264557\n", + "0.006806420162320137\n", + "0.007053046952933073\n", + "0.00730057992041111\n", + "0.0075487978756427765\n", + "0.007797505706548691\n", + "0.008046502247452736\n", + "0.008295586332678795\n", + "0.008544567972421646\n", + "0.008793246932327747\n", + "0.009041456505656242\n", + "0.009288984350860119\n", + "0.009535670280456543\n", + "0.009781318716704845\n", + "0.010025770403444767\n", + "0.010268854908645153\n", + "0.010510404594242573\n", + "0.010750255547463894\n", + "0.010988243855535984\n", + "0.011224227957427502\n", + "0.011458044871687889\n", + "0.011689581908285618\n", + "0.011918652802705765\n", + "0.012145159766077995\n", + "0.012368935160338879\n", + "0.012589883990585804\n", + "0.012807865627110004\n", + "0.01302275713533163\n", + "0.013234447687864304\n", + "0.013442816212773323\n", + "0.013647777959704399\n", + "0.013849207200109959\n", + "0.014047002419829369\n", + "0.014241078868508339\n", + "0.014431345276534557\n", + "0.014617710374295712\n", + "0.014800071716308594\n", + "0.014978377148509026\n", + "0.015152521431446075\n", + "0.015322456136345863\n", + "0.015488077886402607\n", + "0.015649348497390747\n", + "0.015806207433342934\n", + "0.01595855876803398\n", + "0.01610637456178665\n", + "0.016249584034085274\n", + "0.016388144344091415\n", + "0.016522007063031197\n", + "0.01665112003684044\n", + "0.01677544414997101\n", + "0.016894938424229622\n", + "0.017009563744068146\n", + "0.017119277268648148\n", + "0.01722406968474388\n", + "0.017323872074484825\n", + "0.01741868630051613\n", + "0.017508490011096\n", + "0.017593247815966606\n", + "0.017672929912805557\n", + "0.017747532576322556\n", + "0.01781703718006611\n", + "0.01788143254816532\n", + "0.017940694466233253\n", + "0.017994821071624756\n", + "0.01804378256201744\n", + "0.018087610602378845\n", + "0.018126290291547775\n", + "0.01815979741513729\n", + "0.018188145011663437\n", + "0.01821133866906166\n", + "0.018229365348815918\n", + "0.01824224554002285\n", + "0.018249982967972755\n", + "0.018252592533826828\n", + "0.01825006678700447\n", + "0.018242424353957176\n", + "0.018229683861136436\n", + "0.018211860209703445\n", + "0.01818898506462574\n", + "0.018161028623580933\n", + "0.01812806725502014\n", + "0.018090099096298218\n", + "0.018047142773866653\n", + "0.017999228090047836\n", + "0.017946405336260796\n", + "0.01788867637515068\n", + "0.01782607100903988\n", + "0.017758654430508614\n", + "0.017686428502202034\n", + "0.01760944351553917\n", + "0.017527736723423004\n", + "0.017441365867853165\n", + "0.0173503365367651\n", + "0.017254739999771118\n", + "0.01715458370745182\n", + "0.01704993098974228\n", + "0.016940850764513016\n", + "0.016827376559376717\n", + "0.01670955866575241\n", + "0.01658746600151062\n", + "0.01646115817129612\n", + "0.01633067987859249\n", + "0.016196127980947495\n", + "0.01605754718184471\n", + "0.015914998948574066\n", + "0.015768563374876976\n", + "0.01561832707375288\n", + "0.015464351512491703\n", + "0.01530670840293169\n", + "0.015145489014685154\n", + "0.01498076505959034\n", + "0.014812623150646687\n", + "0.014641155488789082\n", + "0.014466457068920135\n", + "0.014288598671555519\n", + "0.014107698574662209\n", + "0.013923831284046173\n", + "0.013737112283706665\n", + "0.013547630980610847\n", + "0.013355476781725883\n", + "0.013160783797502518\n", + "0.012963645160198212\n", + "0.012764187529683113\n", + "0.012562482617795467\n", + "0.012358682230114937\n", + "0.012152882292866707\n", + "0.011945202015340328\n", + "0.011735771782696247\n", + "0.011524700559675694\n", + "0.011312111280858517\n", + "0.01109814178198576\n", + "0.010882897302508354\n", + "0.010666531510651112\n", + "0.010449154302477837\n", + "0.010230902582406998\n", + "0.010011903941631317\n", + "0.009792296215891838\n", + "0.009572219103574753\n", + "0.00935179740190506\n", + "0.009131170809268951\n", + "0.008910475298762321\n", + "0.00868985429406166\n", + "0.00846943724900484\n", + "0.008249363861978054\n", + "0.008029783144593239\n", + "0.007810814306139946\n", + "0.007592607289552689\n", + "0.007375301327556372\n", + "0.007159024942666292\n", + "0.006943939253687859\n", + "0.0067301481030881405\n", + "0.006517814472317696\n", + "0.006307060830295086\n", + "0.006098014768213034\n", + "0.005890815984457731\n", + "0.005685607437044382\n", + "0.005482503678649664\n", + "0.005281634628772736\n", + "0.005083132069557905\n", + "0.004887120798230171\n", + "0.0046937232837080956\n", + "0.004503054544329643\n", + "0.004315238445997238\n", + "0.004130381625145674\n", + "0.003948603756725788\n", + "0.0037700168322771788\n", + "0.0035947223659604788\n", + "0.0034228290896862745\n", + "0.003254433861002326\n", + "0.00308963842689991\n", + "0.00292853731662035\n", + "0.00277122063562274\n", + "0.0026177759282290936\n", + "0.0024682849179953337\n", + "0.0023228288628160954\n", + "0.0021814885549247265\n", + "0.0020443382672965527\n", + "0.0019114370224997401\n", + "0.0017828679410740733\n", + "0.0016586699057370424\n", + "0.0015389103209599853\n", + "0.0014236479764804244\n", + "0.0013129228027537465\n", + "0.001206786371767521\n", + "0.001105274073779583\n", + "0.0010084256064146757\n", + "0.0009162761270999908\n", + "0.0008288457756862044\n", + "0.000746165809687227\n", + "0.0006682533421553671\n", + "0.0005951261846348643\n", + "0.0005267980159260333\n", + "0.0004632717464119196\n", + "0.0004045531968586147\n", + "0.0003506443463265896\n", + "0.0003015407710336149\n", + "0.00025723205180838704\n", + "0.0002177095739170909\n", + "0.00018295776681043208\n", + "0.00015295653429348022\n", + "0.0001276853436138481\n", + "0.00010711866343626752\n", + "9.122451592702419e-05\n", + "7.997204374987632e-05\n", + "7.332643872359768e-05\n", + "7.124726107576862e-05\n", + "7.36930305720307e-05\n", + "8.061923290370032e-05\n", + "9.19774902286008e-05\n", + "0.00010771832603495568\n", + "0.00012778757081832737\n", + "0.0001521312806289643\n", + "0.0001806877990020439\n", + "0.00021340037346817553\n", + "0.00025020603789016604\n", + "0.0002910369075834751\n", + "0.00033583014737814665\n", + "0.00038451547152362764\n", + "0.0004370209062471986\n", + "0.0004932779120281339\n", + "0.000553207763005048\n", + "0.000616739911492914\n", + "0.0006837962428107858\n", + "0.0007542975945398211\n", + "0.0008281671907752752\n", + "0.000905320281162858\n", + "0.0009856828255578876\n", + "0.0010691697243601084\n", + "0.0011556952958926558\n", + "0.0012451778165996075\n", + "0.001337534631602466\n", + "0.0014326816890388727\n", + "0.0015305312117561698\n", + "0.0016310010105371475\n", + "0.001734003541059792\n", + "0.0018394499784335494\n", + "0.0019472631393000484\n", + "0.0020573476795107126\n", + "0.0021696272306144238\n", + "0.0022840097080916166\n", + "0.002400406403467059\n", + "0.0025187362916767597\n", + "0.0026389167178422213\n", + "0.0027608643285930157\n", + "0.002884483663365245\n", + "0.003009697888046503\n", + "0.00313642923720181\n", + "0.00326458434574306\n", + "0.00339408777654171\n", + "0.0035248585045337677\n", + "0.0036568129435181618\n", + "0.0037898714654147625\n", + "0.003923955373466015\n", + "0.0040589808486402035\n", + "0.004194886889308691\n", + "0.004331578034907579\n", + "0.004468989092856646\n", + "0.004607043229043484\n", + "0.004745656158775091\n", + "0.004884770140051842\n", + "0.005024304613471031\n", + "0.005164189264178276\n", + "0.00530436122789979\n", + "0.005444741807878017\n", + "0.005585269071161747\n", + "0.005725869443267584\n", + "0.005866484250873327\n", + "0.006007049698382616\n", + "0.006147499196231365\n", + "0.006287766620516777\n", + "0.006427792366594076\n", + "0.006567521020770073\n", + "0.006706889718770981\n", + "0.0068458374589681625\n", + "0.006984309293329716\n", + "0.007122254464775324\n", + "0.0072596101090312\n", + "0.00739632360637188\n", + "0.007532356306910515\n", + "0.007667639292776585\n", + "0.007802131585776806\n", + "0.007935767062008381\n", + "0.00806852150708437\n", + "0.008200332522392273\n", + "0.008331159129738808\n", + "0.00846095196902752\n", + "0.0085896672680974\n", + "0.00871727429330349\n", + "0.008843718096613884\n", + "0.008968953043222427\n", + "0.009092945605516434\n", + "0.009215658530592918\n", + "0.009337048046290874\n", + "0.009457089006900787\n", + "0.009575738571584225\n", + "0.009692943654954433\n", + "0.009808694943785667\n", + "0.009922944940626621\n", + "0.010035674087703228\n", + "0.010146836750209332\n", + "0.010256405919790268\n", + "0.010364354588091373\n", + "0.01047065295279026\n", + "0.01057526282966137\n", + "0.010678169317543507\n", + "0.010779337026178837\n", + "0.010878745466470718\n", + "0.010976366698741913\n", + "0.011072174645960331\n", + "0.011166144162416458\n", + "0.0112582603469491\n", + "0.011348499916493893\n", + "0.011436831206083298\n", + "0.011523249559104443\n", + "0.011607707478106022\n", + "0.011690209619700909\n", + "0.011770736426115036\n", + "0.011849258095026016\n", + "0.011925754137337208\n", + "0.012000218033790588\n", + "0.012072645127773285\n", + "0.012142999097704887\n", + "0.012211265973746777\n", + "0.01227743923664093\n", + "0.012341499328613281\n", + "0.012403440661728382\n", + "0.012463250197470188\n", + "0.012520909309387207\n", + "0.012576397508382797\n", + "0.012629728764295578\n", + "0.012680871412158012\n", + "0.012729819864034653\n", + "0.012776568531990051\n", + "0.012821103446185589\n", + "0.012863430194556713\n", + "0.01290352176874876\n", + "0.012941389344632626\n", + "0.012977014295756817\n", + "0.013010387308895588\n", + "0.013041505590081215\n", + "0.013070369139313698\n", + "0.013096962124109268\n", + "0.01312129758298397\n", + "0.013143357820808887\n", + "0.013163141906261444\n", + "0.01318063773214817\n", + "0.013195876032114029\n", + "0.01320881862193346\n", + "0.013219473883509636\n", + "0.013227850198745728\n", + "0.013233931735157967\n", + "0.013237743638455868\n", + "0.01323925331234932\n", + "0.013238483108580112\n", + "0.0132354237139225\n", + "0.013230092823505402\n", + "0.013222475536167622\n", + "0.013212569989264011\n", + "0.013200396671891212\n", + "0.013185955584049225\n", + "0.013169258832931519\n", + "0.013150278478860855\n", + "0.01312904991209507\n", + "0.013105569407343864\n", + "0.013079844415187836\n", + "0.013051869347691536\n", + "0.013021668419241905\n", + "0.012989241629838943\n", + "0.012954596430063248\n", + "0.012917747721076012\n", + "0.012878693640232086\n", + "0.012837447226047516\n", + "0.0127940122038126\n", + "0.012748428620398045\n", + "0.012700670398771763\n", + "0.012650769203901291\n", + "0.012598724104464054\n", + "0.012544562108814716\n", + "0.012488292530179024\n", + "0.012429917231202126\n", + "0.012369468808174133\n", + "0.01230695005506277\n", + "0.012242382392287254\n", + "0.01217577327042818\n", + "0.012107150629162788\n", + "0.012036513537168503\n", + "0.011963905766606331\n", + "0.011889331042766571\n", + "0.011812809854745865\n", + "0.011734357103705406\n", + "0.011653999797999859\n", + "0.011571752838790417\n", + "0.011487641371786594\n", + "0.011401686817407608\n", + "0.011313917115330696\n", + "0.011224355548620224\n", + "0.011133003979921341\n", + "0.011039921082556248\n", + "0.010945119895040989\n", + "0.01084860973060131\n", + "0.010750435292720795\n", + "0.01065062265843153\n", + "0.010549193248152733\n", + "0.010446188971400261\n", + "0.010341627523303032\n", + "0.01023553404957056\n", + "0.010127955116331577\n", + "0.010018914937973022\n", + "0.009908447973430157\n", + "0.00979659054428339\n", + "0.009683366864919662\n", + "0.009568814188241959\n", + "0.009452980943024158\n", + "0.009335878305137157\n", + "0.009217576123774052\n", + "0.009098091162741184\n", + "0.008977462537586689\n", + "0.00885574147105217\n", + "0.008732957765460014\n", + "0.008609154261648655\n", + "0.008484371937811375\n", + "0.008358660154044628\n", + "0.00823204405605793\n", + "0.008104590699076653\n", + "0.007976343855261803\n", + "0.007847318425774574\n", + "0.007717600092291832\n", + "0.007587210275232792\n", + "0.00745620159432292\n", + "0.007324627600610256\n", + "0.007192544639110565\n", + "0.007059982046484947\n", + "0.006927007809281349\n", + "0.006793670356273651\n", + "0.006660019047558308\n", + "0.0065261018462479115\n", + "0.006391983479261398\n", + "0.006257705856114626\n", + "0.006123331841081381\n", + "0.00598891731351614\n", + "0.005854516755789518\n", + "0.005720183253288269\n", + "0.005585975479334593\n", + "0.005451951641589403\n", + "0.00531818438321352\n", + "0.0051847114227712154\n", + "0.005051599815487862\n", + "0.0049189114943146706\n", + "0.004786713048815727\n", + "0.004655047319829464\n", + "0.004523993469774723\n", + "0.004393605515360832\n", + "0.004263942129909992\n", + "0.004135077353566885\n", + "0.004007062874734402\n", + "0.0038799706380814314\n", + "0.0037538520991802216\n", + "0.003628786653280258\n", + "0.0035048257559537888\n", + "0.0033820392563939095\n", + "0.003260484430938959\n", + "0.0031402285676449537\n", + "0.0030213373247534037\n", + "0.0029038763605058193\n", + "0.0027879104018211365\n", + "0.002673498587682843\n", + "0.002560707740485668\n", + "0.0024496030528098345\n", + "0.002340239007025957\n", + "0.0022326940670609474\n", + "0.0021270124707370996\n", + "0.0020232717506587505\n", + "0.001921527087688446\n", + "0.0018218440236523747\n", + "0.0017242784379050136\n", + "0.0016288966871798038\n", + "0.0015357492957264185\n", + "0.001444905181415379\n", + "0.0013564240653067827\n", + "0.0012703557731583714\n", + "0.0011867579305544496\n", + "0.0011056920047849417\n", + "0.001027207588776946\n", + "0.0009513606200926006\n", + "0.0008782043005339801\n", + "0.0008077897364273667\n", + "0.0007401694310829043\n", + "0.0006753888446837664\n", + "0.0006135006551630795\n", + "0.0005545472376979887\n", + "0.0004985755658708513\n", + "0.0004456297610886395\n", + "0.00039575190749019384\n", + "0.00034898301237262785\n", + "0.00030536067788489163\n", + "0.0002649245143402368\n", + "0.0002277072489960119\n", + "0.00019374449038878083\n", + "0.00016306787438225\n", + "0.000135706621222198\n", + "0.00011168889614054933\n", + "9.104203491006047e-05\n", + "7.378779991995543e-05\n", + "5.994935054332018e-05\n", + "4.9546302761882544e-05\n", + "4.259576598997228e-05\n", + "3.9113376260502264e-05\n", + "3.9112012018449605e-05\n", + "4.260144123691134e-05\n", + "4.9591646529734135e-05\n", + "6.008696436765604e-05\n", + "7.409247336909175e-05\n", + "9.160656918538734e-05\n", + "0.00011263007036177441\n", + "0.0001371597172692418\n", + "0.000165187957463786\n", + "0.00019670455367304385\n", + "0.00023170129861682653\n", + "0.0002701594203244895\n", + "0.00031206716084852815\n", + "0.00035740394378080964\n", + "0.0004061450017616153\n", + "0.00045826987479813397\n", + "0.0005137505359016359\n", + "0.0005725549999624491\n", + "0.0006346561713144183\n", + "0.0007000124314799905\n", + "0.0007685934542678297\n", + "0.0008403574465774\n", + "0.0009152586571872234\n", + "0.0009932564571499825\n", + "0.0010743006132543087\n", + "0.0011583463056012988\n", + "0.001245337538421154\n", + "0.0013352205278351903\n", + "0.00142794125713408\n", + "0.001523435115814209\n", + "0.0016216426156461239\n", + "0.0017225065967068076\n", + "0.001825954532250762\n", + "0.0019319234415888786\n", + "0.002040339633822441\n", + "0.0021511318627744913\n", + "0.002264229115098715\n", + "0.0023795522283762693\n", + "0.0024970320519059896\n", + "0.002616577548906207\n", + "0.0027381207328289747\n", + "0.002861565910279751\n", + "0.0029868409037590027\n", + "0.003113862592726946\n", + "0.0032425220124423504\n", + "0.0033727630507200956\n", + "0.0035044709220528603\n", + "0.0036375601775944233\n", + "0.003771951887756586\n", + "0.003907543141394854\n", + "0.0040442440658807755\n", + "0.004181956872344017\n", + "0.0043205879628658295\n", + "0.0044600446708500385\n", + "0.004600228741765022\n", + "0.00474103819578886\n", + "0.004882379900664091\n", + "0.0050241644494235516\n", + "0.005166278220713139\n", + "0.005308628082275391\n", + "0.0054511199705302715\n", + "0.005593650508671999\n", + "0.005736132618039846\n", + "0.005878448020666838\n", + "0.006020504515618086\n", + "0.0061622136272490025\n", + "0.006303473375737667\n", + "0.006444179452955723\n", + "0.006584241520613432\n", + "0.006723552010953426\n", + "0.0068620298989117146\n", + "0.006999573670327663\n", + "0.007136087398976088\n", + "0.007271471433341503\n", + "0.007405642420053482\n", + "0.007538498844951391\n", + "0.007669943384826183\n", + "0.007799903396517038\n", + "0.0079282745718956\n", + "0.008054971694946289\n", + "0.008179906755685806\n", + "0.008302999660372734\n", + "0.008424151688814163\n", + "0.008543290197849274\n", + "0.00866032112389803\n", + "0.008775174617767334\n", + "0.008887761272490025\n", + "0.008998003788292408\n", + "0.009105825796723366\n", + "0.009211151860654354\n", + "0.009313898161053658\n", + "0.00941400695592165\n", + "0.009511399082839489\n", + "0.009605992585420609\n", + "0.00969773530960083\n", + "0.00978654995560646\n", + "0.00987238623201847\n", + "0.009955158457159996\n", + "0.01003482099622488\n", + "0.010111307725310326\n", + "0.010184558108448982\n", + "0.010254512540996075\n", + "0.010321129113435745\n", + "0.010384351946413517\n", + "0.01044410653412342\n", + "0.010500370524823666\n", + "0.010553092695772648\n", + "0.010602210648357868\n", + "0.010647694580256939\n", + "0.01068949420005083\n", + "0.010727581568062305\n", + "0.010761916637420654\n", + "0.010792447254061699\n", + "0.010819167830049992\n", + "0.010842012241482735\n", + "0.010860984213650227\n", + "0.010876046493649483\n", + "0.01088715996593237\n", + "0.010894328355789185\n", + "0.01089748926460743\n", + "0.01089666597545147\n", + "0.01089183147996664\n", + "0.010882960632443428\n", + "0.010870047844946384\n", + "0.010853102430701256\n", + "0.01083209179341793\n", + "0.01080702431499958\n", + "0.01077790092676878\n", + "0.010744708590209484\n", + "0.010707476176321507\n", + "0.010666199028491974\n", + "0.010620871558785439\n", + "0.010571524500846863\n", + "0.010518169961869717\n", + "0.010460827499628067\n", + "0.010399513877928257\n", + "0.010334252379834652\n", + "0.010265063494443893\n", + "0.010192006826400757\n", + "0.010115067474544048\n", + "0.010034319013357162\n", + "0.009949777275323868\n", + "0.009861500933766365\n", + "0.009769534692168236\n", + "0.00967390462756157\n", + "0.009574685245752335\n", + "0.009471933357417583\n", + "0.009365699253976345\n", + "0.009256034158170223\n", + "0.009143022820353508\n", + "0.009026710875332355\n", + "0.008907202631235123\n", + "0.008784547448158264\n", + "0.008658831007778645\n", + "0.008530146442353725\n", + "0.008398556150496006\n", + "0.008264169096946716\n", + "0.008127073757350445\n", + "0.007987366989254951\n", + "0.007845152169466019\n", + "0.007700514979660511\n", + "0.007553589530289173\n", + "0.007404470816254616\n", + "0.007253280840814114\n", + "0.007100121583789587\n", + "0.006945127621293068\n", + "0.006788414437323809\n", + "0.006630121264606714\n", + "0.0064703854732215405\n", + "0.006309302523732185\n", + "0.006147049367427826\n", + "0.005983753129839897\n", + "0.005819554906338453\n", + "0.005654597654938698\n", + "0.005489037837833166\n", + "0.005323024000972509\n", + "0.005156705621629953\n", + "0.004990243352949619\n", + "0.004823798313736916\n", + "0.004657526034861803\n", + "0.0044915927574038506\n", + "0.00432616425678134\n", + "0.00416139792650938\n", + "0.003997471183538437\n", + "0.003834546310827136\n", + "0.003672804683446884\n", + "0.0035124062560498714\n", + "0.00335352448746562\n", + "0.003196337027475238\n", + "0.003041010582819581\n", + "0.0028877209406346083\n", + "0.002736637368798256\n", + "0.0025879419408738613\n", + "0.0024417932145297527\n", + "0.0022983760572969913\n", + "0.0021578434389084578\n", + "0.002020377665758133\n", + "0.0018861442804336548\n", + "0.0017553018406033516\n", + "0.0016280190320685506\n", + "0.0015044501051306725\n", + "0.001384758623316884\n", + "0.0012690930161625147\n", + "0.0011576145188882947\n", + "0.0010504625970497727\n", + "0.0009477882995270193\n", + "0.00084972835611552\n", + "0.0007564204279333353\n", + "0.0006679952493868768\n", + "0.0005845834384672344\n", + "0.0005063024000264704\n", + "0.00043327119783498347\n", + "0.00036560630542226136\n", + "0.00030341072124429047\n", + "0.00024678310728631914\n", + "0.00019582101958803833\n", + "0.00015061085287015885\n", + "0.0001112366298912093\n", + "7.777060818625614e-05\n", + "5.0284219469176605e-05\n", + "2.883777597162407e-05\n", + "1.3487062460626476e-05\n", + "4.278894266462885e-06\n", + "0.0007807625224813819\n", + "0.0005944783333688974\n", + "0.00044020049972459674\n", + "0.0003129637916572392\n", + "0.00021204435324762017\n", + "0.00013793224934488535\n", + "9.155299630947411e-05\n", + "7.394401472993195e-05\n", + "8.605668699601665e-05\n", + "0.00012856499233748764\n", + "0.00020162531291134655\n", + "0.0003045278135687113\n", + "0.0004351809329818934\n", + "0.0005893462803214788\n", + "0.000759595597628504\n", + "0.0009342427947558463\n", + "0.0010968752903863788\n", + "0.0012279333313927054\n", + "0.0013092863373458385\n", + "0.001330249011516571\n", + "0.0012907625641673803\n", + "0.0011997056426480412\n", + "0.0010705786990001798\n", + "0.0009177529136650264\n", + "0.0007544502150267363\n", + "0.0005920436815358698\n", + "0.0004400618781801313\n", + "0.00030640335171483457\n", + "0.000197581946849823\n", + "0.00011894273484358564\n", + "7.482431101379916e-05\n", + "6.864528404548764e-05\n", + "0.00010297345579601824\n", + "0.0001795405405573547\n", + "0.0002992378722410649\n", + "0.00046207947889342904\n", + "0.0006671547307632864\n", + "0.0009125459473580122\n", + "0.0011952309869229794\n", + "0.0015109835658222437\n", + "0.001854237518273294\n", + "0.002217974979430437\n", + "0.0025936616584658623\n", + "0.0029712305404245853\n", + "0.003339208196848631\n", + "0.0036849842872470617\n", + "0.0039952523075044155\n", + "0.00425672298297286\n", + "0.004457089118659496\n", + "0.004586156457662582\n", + "0.004636876285076141\n", + "0.004606186877936125\n", + "0.004495297092944384\n", + "0.0043094889260828495\n", + "0.004057413432747126\n", + "0.0037501975893974304\n", + "0.003400425659492612\n", + "0.003021296113729477\n", + "0.0026259298902004957\n", + "0.0022268956527113914\n", + "0.0018359128152951598\n", + "0.001463665277697146\n", + "0.0011197514832019806\n", + "0.0008126517641358078\n", + "0.000549716001842171\n", + "0.00033722640364430845\n", + "0.00018040936265606433\n", + "8.346372487721965e-05\n", + "4.959537909599021e-05\n", + "8.104173321044073e-05\n", + "0.00017908323206938803\n", + "0.0003440712171141058\n", + "0.0005754278972744942\n", + "0.0008716775337234139\n", + "0.0012304421979933977\n", + "0.001648464472964406\n", + "0.0021216156892478466\n", + "0.002644925843924284\n", + "0.003212601412087679\n", + "0.0038180702831596136\n", + "0.004453998524695635\n", + "0.005112380720674992\n", + "0.005784595850855112\n", + "0.006461551412940025\n", + "0.007133753038942814\n", + "0.007791477255523205\n", + "0.00842492189258337\n", + "0.009024319238960743\n", + "0.009580179117619991\n", + "0.010083387605845928\n", + "0.010525468736886978\n", + "0.01089877262711525\n", + "0.011196641251444817\n", + "0.011413680389523506\n", + "0.011545831337571144\n", + "0.011590608395636082\n", + "0.011547061614692211\n", + "0.011415893211960793\n", + "0.0111993458122015\n", + "0.010901276022195816\n", + "0.010526878759264946\n", + "0.010082632303237915\n", + "0.009576112031936646\n", + "0.009015761315822601\n", + "0.008410741575062275\n", + "0.0077706812880933285\n", + "0.007105507887899876\n", + "0.006425260566174984\n", + "0.005739889107644558\n", + "0.00505913095548749\n", + "0.004392368718981743\n", + "0.0037485016509890556\n", + "0.0031358522828668356\n", + "0.0025620905216783285\n", + "0.002034178003668785\n", + "0.0015582937048748136\n", + "0.0011398331262171268\n", + "0.0007833390263840556\n", + "0.0004925441462546587\n", + "0.00027031725039705634\n", + "0.00011870547314174473\n", + "3.893696703016758e-05\n", + "3.14500903186854e-05\n", + "9.592231072019786e-05\n", + "0.00023131586203817278\n", + "0.0004359165614005178\n", + "0.0007073860615491867\n", + "0.0010428107343614101\n", + "0.0014387592673301697\n", + "0.001891330466605723\n", + "0.0023962119594216347\n", + "0.002948736073449254\n", + "0.0035439198836684227\n", + "0.004176529124379158\n", + "0.004841112531721592\n", + "0.005532069131731987\n", + "0.006243700161576271\n", + "0.006970277987420559\n", + "0.007706121075898409\n", + "0.008445674553513527\n", + "0.009183580987155437\n", + "0.009914737194776535\n", + "0.010634307749569416\n", + "0.01133772823959589\n", + "0.012020719237625599\n", + "0.012679279781877995\n", + "0.013309676200151443\n", + "0.013908417895436287\n", + "0.01447231788188219\n", + "0.014998487196862698\n", + "0.015484270639717579\n", + "0.015927381813526154\n", + "0.016325801610946655\n", + "0.01667783595621586\n", + "0.01698208600282669\n", + "0.0172374676913023\n", + "0.01744316890835762\n", + "0.017598716542124748\n", + "0.017703866586089134\n", + "0.01775866001844406\n", + "0.017763394862413406\n", + "0.017718639224767685\n", + "0.01762513443827629\n", + "0.01748393103480339\n", + "0.017296208068728447\n", + "0.017063438892364502\n", + "0.016787240281701088\n", + "0.01646941713988781\n", + "0.016111986711621284\n", + "0.01571713015437126\n", + "0.01528716180473566\n", + "0.014824592508375645\n", + "0.014332031831145287\n", + "0.013812227174639702\n", + "0.013268064707517624\n", + "0.012702487409114838\n", + "0.012118551880121231\n", + "0.011519383639097214\n", + "0.010908138938248158\n", + "0.010288034565746784\n", + "0.009662267751991749\n", + "0.009034083224833012\n", + "0.008406666107475758\n", + "0.00778316892683506\n", + "0.007166694849729538\n", + "0.006560301408171654\n", + "0.0059669045731425285\n", + "0.005389353260397911\n", + "0.004830368794500828\n", + "0.004292543977499008\n", + "0.0037783058360219\n", + "0.003289954736828804\n", + "0.0028296043165028095\n", + "0.0023991945199668407\n", + "0.002000492298975587\n", + "0.0016350732184946537\n", + "0.0013043130747973919\n", + "0.0010094038443639874\n", + "0.0007513205055147409\n", + "0.000530859746504575\n", + "0.0003486048080958426\n", + "0.00020494319323915988\n", + "0.00010007184027926996\n", + "3.398711851332337e-05\n", + "6.500583822344197e-06\n", + "0.026918120682239532\n", + "0.02577018365263939\n", + "0.024665068835020065\n", + "0.023572536185383797\n", + "0.022483179345726967\n", + "0.02139369212090969\n", + "0.02030331641435623\n", + "0.01921255700290203\n", + "0.0181227158755064\n", + "0.017035625874996185\n", + "0.01595352776348591\n", + "0.014878977090120316\n", + "0.013814768753945827\n", + "0.012763991951942444\n", + "0.011729862540960312\n", + "0.01071582268923521\n", + "0.009725422598421574\n", + "0.008762327022850513\n", + "0.00783031340688467\n", + "0.006933177821338177\n", + "0.006074771750718355\n", + "0.005258907563984394\n", + "0.004489390179514885\n", + "0.003769882954657078\n", + "0.0031039996538311243\n", + "0.0024951414670795202\n", + "0.0019465414807200432\n", + "0.0014611955266445875\n", + "0.001041817246004939\n", + "0.0006908211507834494\n", + "0.0004102794628124684\n", + "0.00020189605129417032\n", + "6.696028140140697e-05\n", + "6.342441338347271e-06\n" + ] + } + ], + "source": [ + "i = 0\n", + "while i < 10:\n", + " x_new = NNsPOD_tutorial.train_shiftnet(database[i], [20,20,20], nn.Tanh(), [10000, 0.00001], database[ref_data], preshift = True) \n", + " db = database[i] \n", + " plt.plot(db.space, db.snapshots, \"go\")\n", + " plt.plot(x_new, db.snapshots.reshape(-1,1), \".\")\n", + " i+=1\n", + " if i == ref_data:\n", + " i +=1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we plot and show all the data. The original positions is represented by green circles, the reference data is the blue plusmarks, and the different shifted data is represented by the smaller dots. It should be clear that all of the data has been moved to allign with the reference data" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(database[0].space, database[ref_data].snapshots, \"b+\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2d Data\n", + "\n", + "Now we do the same but with 2d data and implement some basic functions to help with shaping the data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def reshape2dto1d(x, y):\n", + " x = x.reshape(-1,1)\n", + " y = y.reshape(-1,1)\n", + " coords = np.concatenate((x, y), axis = 1)\n", + " coords = np.array(coords).reshape(-1,2)\n", + " \n", + " return coords\n", + "\n", + "def reshape1dto2d(snapshots):\n", + " return snapshots.reshape(int(np.sqrt(len(snapshots))), int(np.sqrt(len(snapshots))))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we create the 2d gaussian and populate the database" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.5 0.5]\n", + "[0.94444444 0.94444444]\n", + "[1.38888889 1.38888889]\n", + "[1.83333333 1.83333333]\n", + "[2.27777778 2.27777778]\n", + "[2.72222222 2.72222222]\n", + "[3.16666667 3.16666667]\n", + "[3.61111111 3.61111111]\n", + "[4.05555556 4.05555556]\n", + "[4.5 4.5]\n", + "[0 0]\n" + ] + } + ], + "source": [ + "\n", + "n_params = 10\n", + "params = np.linspace(0.5, 4.5, n_params).reshape(-1, 1) # actually the time steps\n", + "\n", + "def gaussian(x, mu, sig):\n", + " print(mu)\n", + " gaussx, gaussy = np.exp(-np.power(x - mu, 2.) / (2 * np.power(sig, 2.))).T\n", + " return gaussx * gaussy\n", + "def wave(t, res=256):\n", + " x = np.linspace(0, 5, res)\n", + " return x, gaussian(x, t, 0.1)\n", + "def wave2D(t, res=256):\n", + " x = np.linspace(0, 5, res)\n", + " y = np.linspace(0, 5, res)\n", + " gridx, gridy = np.meshgrid(x, y)\n", + " gridx, gridy = gridx.reshape(-1,1), gridy.reshape(-1,1)\n", + " wave = gaussian(np.hstack([gridx, gridy]), t*np.array([1, 1]), 0.1)\n", + " return gridx, gridy, wave\n", + "db = np.array([wave2D(t)[2] for t in params])\n", + "db_array = db.reshape(n_params, -1, 1)\n", + "gridx, gridy = wave2D(0)[0 :2]\n", + "space = reshape2dto1d(gridx,gridy)\n", + "space_array = np.array([space.copy() for t in params])\n", + "\n", + "database = Database(space = space_array, snapshots = db_array, parameters = params)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "NNsPOD_tutorial = NNsPOD(path = \"interpnet2d.pth\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we put the value for the reference data and train the interpnet. If you want to change this it will need to retrain the interpnet, which can take a long time for 2d data, especially is the loss value is very low." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loaded interpnet\n" + ] + } + ], + "source": [ + "\n", + "ref_data = 5\n", + "NNsPOD_tutorial.train_interpnet(database[ref_data], [40,40], nn.Sigmoid(), [10000000,0.000001], None, retrain = False, frequency_print = 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we graph the reference data" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "x = np.linspace(0, 5, 256)\n", + "y = np.linspace(0, 5, 256)\n", + "gridx, gridy = np.meshgrid(x, y)\n", + " \n", + "plt.pcolor(gridx,gridy,database[ref_data].snapshots.reshape(256, 256))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we graph the interpolated data. it should be visisble that we get the same function, but with better resolution" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "res = 1000\n", + "x = np.linspace(0, 5, res)\n", + "y = np.linspace(0, 5, res)\n", + "gridx, gridy = np.meshgrid(x, y)\n", + "input = NNsPOD_tutorial.reshape2dto1d(gridx, gridy)\n", + "output = NNsPOD_tutorial.interp_net.predict(input)\n", + "\n", + "toshow = NNsPOD_tutorial.reshape1dto2d(output)\n", + "plt.pcolor(gridx,gridy,toshow)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we use the shiftnet and graph the shifted data. For each parameter we first graph the refrence data, then the input data, then it will take some time to shift it, and finally it will graph the shifted data. The loss value at every epoch will be printed out as well." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.00041707023046910763\n" + ] + }, + { + "ename": "AttributeError", + "evalue": "'numpy.ndarray' object has no attribute 'detach'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32mc:\\Users\\mrowk\\OneDrive\\Documents\\GitHub\\EZyRB\\tutorial-3.ipynb Cell 28\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 10\u001b[0m plt\u001b[39m.\u001b[39mshow()\n\u001b[0;32m 11\u001b[0m x_new \u001b[39m=\u001b[39m NNsPOD_tutorial\u001b[39m.\u001b[39mtrain_shiftnet(database[i], [\u001b[39m20\u001b[39m,\u001b[39m20\u001b[39m,\u001b[39m20\u001b[39m], nn\u001b[39m.\u001b[39mPReLU(), [\u001b[39m0.001\u001b[39m], database[ref_data], preshift \u001b[39m=\u001b[39m \u001b[39mTrue\u001b[39;00m)\n\u001b[1;32m---> 12\u001b[0m x, y \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39mhsplit(x_new\u001b[39m.\u001b[39;49mdetach()\u001b[39m.\u001b[39mnumpy(), \u001b[39m2\u001b[39m)\n\u001b[0;32m 13\u001b[0m x \u001b[39m=\u001b[39m NNsPOD_tutorial\u001b[39m.\u001b[39mreshape1dto2d(x)\n\u001b[0;32m 14\u001b[0m y \u001b[39m=\u001b[39m NNsPOD_tutorial\u001b[39m.\u001b[39mreshape1dto2d(y)\n", + "\u001b[1;31mAttributeError\u001b[0m: 'numpy.ndarray' object has no attribute 'detach'" + ] + } + ], + "source": [ + "i = 0\n", + "x = np.linspace(0, 5, 256)\n", + "y = np.linspace(0, 5, 256)\n", + "gridx, gridy = np.meshgrid(x, y)\n", + "while i < 10:\n", + " db = database[i]\n", + " plt.pcolor(gridx,gridy,database[ref_data].snapshots.reshape(256, 256))\n", + " plt.show()\n", + " plt.pcolor(gridx,gridy,database[i].snapshots.reshape(256, 256))\n", + " plt.show()\n", + " x_new = NNsPOD_tutorial.train_shiftnet(database[i], [20,20,20], nn.PReLU(), [0.001], database[ref_data], preshift = True)\n", + " x, y = np.hsplit(x_new, 2)\n", + " x = NNsPOD_tutorial.reshape1dto2d(x)\n", + " y = NNsPOD_tutorial.reshape1dto2d(y)\n", + " snapshots = NNsPOD_tutorial.reshape1dto2d(db.snapshots.reshape(-1,1))\n", + " plt.pcolor(x,y,snapshots)\n", + " plt.show()\n", + " res = 256\n", + " i+=1\n", + " if i == ref_data:\n", + " i +=1\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.4 64-bit", + "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.10.4" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "c3571620c9e7a2ef712c686809cf2d92a9d8fa44cb30698f5938f17078c44765" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}