ex1

exercise1.pdf PDF document, 96 KB

ex2_3.py

ex2_3.py Python Source, 4 KB

File contents

#-----------------------------------
# Solution to exercise 2, problem 3 in Model-based identification and estimation
# SS2019, A. Schaum
#-----------------------------------
# Python code for simulation of linear continuous-time dynamics and the discrete-time counterpart
#-----------------------------------

# Import relevant python libraries
import numpy as np
import scipy.linalg as linalg
from scipy.integrate import ode
import matplotlib.pyplot as plt

# Define classes for setting system parameters and defining the rhs of the model equation

# Definition of class to handle the system structure, time vector and input signal
class simStruct:
  def __init__(self,A,B,C,D,u,t):
    self.A = A
    self.B = B
    self.C = C
    self.D = D
    self.u = u
    self.t = t

# Definition of the rhs-function
def dxdt(t,x,s):
  #determine the index for the evaluation of the input (u is defined on the discrete-time vector tn, while here the ode is solved over a larger time grid..)
  ind = np.abs(t-s.t).argmin()
  if s.t[ind]> t:
    ind = ind-1
  #declaring variable for output of the function
  dx = np.zeros(2)
  A = s.A
  b = s.B.transpose()
  u = s.u[ind]
  return A.dot(x) + b*u

#--------------------------------------
# Preparation of the necessary variables containing system structure and parameters, as well as simulation parameters
#--------------------------------------

# System matrices
A = np.array([[-1.0,1.0],[-4.0,-1.0]])
B = np.array([[0.0],[1.0]])
C = np.array([1.0,0.0])
D = np.array([0.0])

# Simulation parameters:
# Sampling period
dta = 0.4 
# Initial condition
x0 = np.array([[1.0],[-1.0]])
# Simulation time
Tsim = 10.0

#-----------------------------------------
# Solution of the discrete-time model
#-----------------------------------------
# Determine discrete-time analog (exact version!, based on analytic formulae)
Ad = linalg.expm(A*dta)
Bd =-linalg.inv(A).dot(np.eye(2)-linalg.expm(A*dta)).dot(B)

# Time vector for discrete-time simulation
tn = np.linspace(0.0,Tsim,Tsim/dta+1)
# Sampled input signal
un = 1.5*np.sin(2.5*tn)#ones(tn.size) for Heaviside step function

# Declaration of state variable 
xd = np.zeros(shape = (2,1,tn.size))

# Passing the initial condition
xd[:,:,0] = x0


# Iteration for determining the solution
for i in range(1,tn.size): #starts at second entry (!) of the solution matrix xd
  xd[:,:,i] = Ad.dot(xd[:,:,i-1]) + Bd*(un[i-1])

#----------------------------------------
# Solution of the continuous-time model
#----------------------------------------
# Set-up of structure for passing the system parameters, time vector and associated input signal
struct = simStruct(A,B,C,D,un,tn)

# Setting the structure of the simulation object according tp scipy.integrate.ode standard
ss = ode(dxdt, jac=None) #No explicit Jacobian of the dynamics used
ss.set_integrator('lsoda',method='bdf',max_step=0.001)#alternatively 'dopri5' for 5th order Runge-Kutta method
ss.set_initial_value(x0)
ss.set_f_params(struct)

# Determining the solution between prescribed points (the ones later used for the graphical output)
i = 1
ts = np.linspace(0,Tsim,500)
dt = ts[1]-ts[0]
# Declaring the state variable
xs = np.zeros(shape = (2,1,ts.size))
# Setting the initial condition
xs[:,0,0] = x0.transpose()
# Loop for solution over all time intervals in ts-vector
while ss.successful() and i < ts.size:
    ss.integrate(ss.t + dt)
    xs[:,:,i] = ss.y
    i += 1 

#--------------------------------------
# Graphical output
#--------------------------------------
fig = plt.figure(figsize=(6,6))
# Plot x1
ax1 = fig.add_subplot(3,1,1)
p = ax1.plot(ts,xs[0,0,:],tn,xd[0,0,:],'*')
ax1.grid()
ax1.set_ylabel(r'$x_1$')
# Plot x2
ax2 = fig.add_subplot(3,1,2)
p = ax2.plot(ts,xs[1,0,:],tn,xd[1,0,:],'*')
ax2.grid()
ax2.set_ylabel(r'$x_2$')
# Plot u
# Cast the input signal (defined on tn) to the continuous-time vector ts
us = np.zeros(ts.size)
# determine index for the evaluation of the input
for i in range(0,ts.size):
  ind = np.abs(tn-ts[i]).argmin()
  if tn[ind]> ts[i]:
    ind = ind-1
  us[i] = un[ind]

ax3 = fig.add_subplot(3,1,3)
p = ax3.plot(ts,us)
ax3.grid()
ax3.set_xlabel('$t$')
ax3.set_ylabel('$u$')

plt.show() #Needed to show the figure..

ex3dataset

ex3_3_data.csv text/comma-separated-values, 20 KB

File contents

0.0,0.0,0.0
0.0080160320641282558,0.0,0.0
0.016032064128256512,0.0,0.0
0.024048096192384766,0.0,0.0
0.032064128256513023,0.0,0.0
0.040080160320641281,0.0,0.0
0.048096192384769532,0.0,0.0
0.056112224448897789,0.0,0.0
0.064128256513026047,0.0,0.0
0.072144288577154297,0.0,0.0
0.080160320641282562,0.0,0.0
0.088176352705410813,0.0,0.0
0.096192384769539063,0.0,0.0
0.10420841683366733,0.0,0.0
0.11222444889779558,0.0,0.0
0.12024048096192384,0.0,0.0
0.12825651302605209,0.0,0.0
0.13627254509018036,0.0,0.0
0.14428857715430859,0.0,0.0
0.15230460921843686,0.0,0.0
0.16032064128256512,0.0,0.0
0.16833667334669336,0.0,0.0
0.17635270541082163,0.0,0.0
0.18436873747494989,0.0,0.0
0.19238476953907813,0.0,0.0
0.20040080160320639,0.0,0.0
0.20841683366733466,0.0,0.0
0.21643286573146292,0.0,0.0
0.22444889779559116,0.0,0.0
0.23246492985971942,0.0,0.0
0.24048096192384769,0.0,0.0
0.24849699398797592,0.0,0.0
0.25651302605210419,0.0,0.0
0.26452905811623245,0.0,0.0
0.27254509018036072,0.0,0.0
0.28056112224448898,0.0,0.0
0.28857715430861719,0.0,0.0
0.29659318637274545,0.0,0.0
0.30460921843687372,0.0,0.0
0.31262525050100198,0.0,0.0
0.32064128256513025,0.0,0.0
0.32865731462925851,0.0,0.0
0.33667334669338672,0.0,0.0
0.34468937875751499,0.0,0.0
0.35270541082164325,0.0,0.0
0.36072144288577151,0.0,0.0
0.36873747494989978,0.0,0.0
0.37675350701402804,0.0,0.0
0.38476953907815625,0.0,0.0
0.39278557114228452,0.0,0.0
0.40080160320641278,2.0,6.4222101004657298e-05
0.40881763527054105,2.0,0.0077245638578151577
0.41683366733466931,2.0,0.027955920588831843
0.42484969939879758,2.0,0.06042946533898292
0.43286573146292584,2.0,0.10474360554541783
0.44088176352705405,2.0,0.16042769887712524
0.44889779559118231,2.0,0.22694614989512152
0.45691382765531058,2.0,0.30370285537660285
0.46492985971943884,2.0,0.39004596443653361
0.47294589178356711,2.0,0.48527291811318035
0.48096192384769537,2.0,0.5886357318655796
0.48897795591182358,2.0,0.69934648346466111
0.49699398797595185,2.0,0.81658296804787767
0.50501002004008011,2.0,0.93949448165020943
0.51302605210420837,2.0,1.0672076943211797
0.52104208416833664,2.0,1.1988325739852648
0.5290581162324649,2.0,1.3334683224975903
0.53707414829659317,2.0,1.470209285882154
0.54509018036072143,2.0,1.6081508015088766
0.5531062124248497,2.0,1.7463949459598853
0.56112224448897796,2.0,1.8840561485446605
0.56913827655310611,2.0,2.0202666368369173
0.57715430861723438,2.0,2.1541816822111168
0.58517034068136264,2.0,2.284984615139988
0.59318637274549091,2.0,2.4118915819622098
0.60120240480961917,2.0,2.5341560169264845
0.60921843687374744,2.0,2.6510728055487687
0.6172344689378757,2.0,2.7619821176672206
0.62525050100200397,2.0,2.8662728910275641
0.63326653306613223,2.0,2.9633859487628813
0.6412825651302605,2.0,3.0528167367289116
0.64929859719438876,2.0,3.1341176693011112
0.65731462925851702,2.0,3.2069000749154566
0.66533066132264529,2.0,3.2708357353236477
0.67334669338677344,2.0,3.3256580152177464
0.68136272545090171,2.0,3.3711625815422233
0.68937875751502997,2.0,3.4072077144363746
0.69739478957915824,2.0,3.4337142143208861
0.7054108216432865,2.0,3.4506649121435125
0.71342685370741477,2.0,3.4581037922155744
0.72144288577154303,2.0,3.4561347393891406
0.72945891783567129,2.0,3.4449199245312498
0.73747494989979956,2.0,3.4246778443339743
0.74549098196392782,2.0,3.3956810334462726
0.75350701402805609,2.0,3.3582534687151804
0.76152304609218435,2.0,3.3127676869707674
0.76953907815631251,2.0,3.2596416392734038
0.77755511022044077,2.0,3.1993353058563812
0.78557114228456904,2.0,3.1323470971361593
0.7935871743486973,2.0,3.0592100671219304
0.80160320641282556,2.0,2.9804879663326331
0.80961923847695383,2.0,2.8967711619209155
0.81763527054108209,2.0,2.8086724531090268
0.82565130260521036,2.0,2.7168228102616019
0.83366733466933862,2.0,2.6218670659563394
0.84168336673346689,2.0,2.5244595862683306
0.84969939879759515,2.0,2.4252599501610925
0.85771543086172342,2.0,2.3249286643821163
0.86573146292585168,2.0,2.2241229405987704
0.87374749498997983,2.0,2.1234925606886952
0.8817635270541081,2.0,2.0236758551249929
0.88977955911823636,2.0,1.9252958182793705
0.89779559118236463,2.0,1.8289563832151774
0.90581162324649289,2.0,1.7352388771671785
0.91382765531062116,2.0,1.644698677416621
0.92184368737474942,2.0,1.5578620856799887
0.92985971943887769,2.0,1.4752234374495079
0.93787575150300595,2.0,1.3972424609651579
0.94589178356713421,2.0,1.3243418986740596
0.95390781563126248,2.0,1.2569054021563308
0.96192384769539074,2.0,1.1952757095796278
0.96993987975951901,2.0,1.1397531128004599
0.97795591182364716,2.0,1.0905942192718141
0.98597194388777543,2.0,1.0480110119563399
0.99398797595190369,2.0,1.0121702084948718
1.002004008016032,2.0,0.98319291895361083
1.0100200400801602,2.0,0.96115459958181293
1.0180360721442885,2.0,0.94608529816676801
1.0260521042084167,2.0,0.93797018478527061
1.034068136272545,2.0,0.9367503600311462
1.0420841683366733,2.0,0.94232393115654023
1.0501002004008015,2.0,0.95454734500987859
1.0581162324649298,2.0,0.97323696519415903
1.0661322645290581,2.0,0.99817087951330929
1.0741482965931863,2.0,1.0290909225287659
1.0821643286573146,2.0,1.0657048969193375
1.0901803607214429,2.0,1.1076889763301911
1.0981963927855711,2.0,1.1546902715158907
1.1062124248496994,2.0,1.2063295408314443
1.1142284569138277,2.0,1.2622040255070015
1.1222444889779559,2.0,1.3218903896579841
1.130260521042084,2.0,1.3849477446340273
1.1382765531062122,2.0,1.4509207370971615
1.1462925851703405,2.0,1.5193426801414414
1.1543086172344688,2.0,1.5897387068210089
1.162324649298597,2.0,1.6616289256389936
1.1703406813627253,2.0,1.7345315578623384
1.1783567134268536,2.0,1.8079660369636767
1.1863727454909818,2.0,1.8814560510459555
1.1943887775551101,2.0,1.9545325097732504
1.2024048096192383,2.0,2.026736418106029
1.2104208416833666,2.0,2.0976216400144199
1.2184368737474949,2.0,2.1667575363115947
1.2264529058116231,2.0,2.2337314618035826
1.2344689378757514,2.0,2.2981511080835495
1.2424849699398797,2.0,2.3596466794994511
1.2505010020040079,2.0,2.417872891085139
1.2585170340681362,2.0,2.4725107785575897
1.2665330661322645,2.0,2.5232693118376432
1.2745490981963927,2.0,2.5698868049392751
1.282565130260521,2.0,2.6121321164835618
1.2905811623246493,2.0,2.6498056365187699
1.2985971943887775,2.0,2.6827400567581625
1.3066132264529058,2.0,2.7108009227728744
1.314629258517034,2.0,2.7338869680896662
1.3226452905811623,2.0,2.7519302315336485
1.3306613226452906,2.0,2.7648959605156915
1.3386773547094186,2.0,2.7727823042850828
1.3466933867735469,2.0,2.775619802442153
1.3547094188376752,2.0,2.7734706752258229
1.3627254509018034,2.0,2.7664279232502755
1.3707414829659317,2.0,2.7546142454569305
1.3787575150300599,2.0,2.7381807850666275
1.3867735470941882,2.0,2.7173057142571171
1.3947895791583165,2.0,2.6921926691478713
1.4028056112224447,2.0,2.6630690474437273
1.410821643286573,2.0,2.6301841817674294
1.4188376753507013,2.0,2.5938074022958943
1.4268537074148295,2.0,2.5542260028037411
1.4348697394789578,2.0,2.5117431246087243
1.4428857715430861,2.0,2.466675573206218
1.4509018036072143,2.0,2.4193515825735701
1.4589178356713426,2.0,2.3701085422202781
1.4669338677354709,2.0,2.3192907020575295
1.4749498997995991,2.0,2.2672468700622046
1.4829659318637274,2.0,2.2143281175181913
1.4909819639278556,2.0,2.1608855063344943
1.4989979959919839,2.0,2.1072678525683304
1.5070140280561122,2.0,2.053819539826073
1.5150300601202404,2.0,2.0008783956796528
1.5230460921843687,2.0,1.948773643625622
1.531062124248497,2.0,1.8978239424335746
1.539078156312625,2.0,1.848335523985414
1.5470941883767533,2.0,1.8006004399029449
1.5551102204408815,2.0,1.7548949264043692
1.5631262525050098,2.0,1.7114778959269075
1.5711422845691381,2.0,1.670589563109333
1.5791583166332663,2.0,1.6324502117514439
1.5871743486973946,2.0,1.5972591083640726
1.5951903807615229,2.0,1.5651935669000381
1.6032064128256511,2.0,1.5364081682202393
1.6112224448897794,2.0,1.5110341368067595
1.6192384769539077,2.0,1.4891788761930655
1.6272545090180359,2.0,1.4709256635468151
1.6352705410821642,2.0,1.4563335028198929
1.6432865731462925,2.0,1.4454371348793746
1.6513026052104207,2.0,1.4382472020582089
1.659318637274549,2.0,1.4347505636213354
1.6673346693386772,2.0,1.4349107577371956
1.6753507014028055,2.0,1.4386686046813513
1.6833667334669338,2.0,1.4459429451829933
1.691382765531062,2.0,1.4566315070609617
1.6993987975951903,2.0,1.4706118925875744
1.7074148296593186,2.0,1.4877426783696546
1.7154308617234468,2.0,1.5078646189498759
1.7234468937875751,2.0,1.5308019448106633
1.7314629258517034,2.0,1.5563637450096157
1.7394789579158316,2.0,1.5843454242916475
1.7474949899799597,2.0,1.6145302242100432
1.7555110220440879,2.0,1.6466907975473111
1.7635270541082162,2.0,1.6805908251574471
1.7715430861723445,2.0,1.7159866642539972
1.7795591182364727,2.0,1.7526290171424861
1.787575150300601,2.0,1.7902646094405268
1.7955911823647293,2.0,1.8286378669427206
1.8036072144288575,2.0,1.8674925804685485
1.8116232464929858,2.0,1.9065735482775747
1.819639278557114,2.0,1.9456281859448634
1.8276553106212423,2.0,1.9844080939575595
1.8356713426853706,2.0,2.0226705737178512
1.8436873747494988,2.0,2.0601800831143602
1.8517034068136271,2.0,2.096709623349589
1.8597194388777554,2.0,2.1320420492812375
1.8677354709418836,2.0,2.1659712961456035
1.8757515030060119,2.0,2.19830351617746
1.8837675350701402,2.0,2.2288581193180024
1.8917835671342684,2.0,2.2574687129058755
1.8997995991983967,2.0,2.2839839359711038
1.907815631262525,2.0,2.3082681844928379
1.9158316633266532,2.0,2.3302022247344465
1.9238476953907815,2.0,2.3496836925284046
1.9318637274549098,2.0,2.3666274771439029
1.939879759519038,2.0,2.3809659891271742
1.9478957915831663,2.0,2.3926493122534418
1.9559118236472943,2.0,2.4016452404655069
1.9639278557114226,2.0,2.4079392013928533
1.9719438877755509,2.0,2.4115340687423665
1.9799599198396791,2.0,2.4124498665233518
1.9879759519038074,2.0,2.4107233687115395
1.9959919839679356,2.0,2.4064075985655715
2.0040080160320639,2.0,2.3995712323818248
2.0120240480961922,2.0,2.3902979130060644
2.0200400801603204,2.0,2.3786854789108447
2.0280561122244487,2.0,2.3648451150930714
2.036072144288577,2.0,2.34890043244478
2.0440881763527052,2.0,2.3309864826000677
2.0521042084168335,2.0,2.3112487155608119
2.0601202404809618,2.0,2.2898418876522482
2.06813627254509,2.0,2.266928927555806
2.0761523046092183,2.0,2.2426797683105013
2.0841683366733466,2.0,2.2172701532654724
2.0921843687374748,2.0,2.1908804240052757
2.1002004008016031,2.0,2.1636942982567957
2.1082164328657313,2.0,2.1358976457231131
2.1162324649298596,2.0,2.1076772696764912
2.1242484969939879,2.0,2.0792197019813914
2.1322645290581161,2.0,2.0507100190108822
2.1402805611222444,2.0,2.0223306856679604
2.1482965931863727,2.0,1.9942604344295893
2.1563126252505009,2.0,1.9666731859980802
2.1643286573146292,2.0,1.9397370177746491
2.1723446893787575,2.0,1.9136131859664622
2.1803607214428857,2.0,1.888455206704347
2.188376753507014,2.0,1.8644080010868882
2.1963927855711423,2.0,1.8416071085811507
2.2044088176352705,2.0,1.8201779727043184
2.2124248496993988,2.0,1.8002353023876208
2.2204408817635271,2.0,1.7818825118876493
2.2284569138276553,2.0,1.7652112415641665
2.2364729458917836,2.0,1.7503009612914313
2.2444889779559118,2.0,1.7372186577154893
2.2525050100200401,2.0,1.7260186060164258
2.2605210420841679,2.0,1.7167422262856915
2.2685370741482962,2.0,1.7094180240877999
2.2765531062124245,2.0,1.7040616142461809
2.2845691382765527,2.0,1.7006758263780428
2.292585170340681,2.0,1.6992508902057133
2.3006012024048093,2.0,1.69976469819506
2.3086172344689375,2.0,1.7021831426178753
2.3166332665330658,2.0,1.7064605237071435
2.324649298597194,2.0,1.7125400251741405
2.3326653306613223,2.0,1.720354252986489
2.3406813627254506,2.0,1.7298258329684877
2.3486973947895788,2.0,1.740868062480857
2.3567134268537071,2.0,1.7533856111679416
2.3647294589178354,2.0,1.7672752655275032
2.3727454909819636,2.0,1.7824267118624675
2.3807615230460919,2.0,1.798723352015978
2.3887775551102202,2.0,1.8160431461712891
2.3967935871743484,2.0,1.8342594769165539
2.4048096192384767,2.0,1.8532420287313156
2.412825651302605,2.0,1.8728576770462042
2.4208416833667332,2.0,1.892971381059352
2.4288577154308615,2.0,1.9134470745616246
2.4368737474949898,2.0,1.9341485491268569
2.444889779559118,2.0,1.9549403241616952
2.4529058116232463,2.0,1.9756884984809153
2.4609218436873745,2.0,1.9962615782766313
2.4689378757515028,2.0,2.0165312765818184
2.4769539078156311,2.0,2.036373279588092
2.4849699398797593,2.0,2.055667975462681
2.4929859719438876,2.0,2.0743011416177004
2.5010020040080159,2.0,2.0921645867138801
2.5090180360721441,2.0,2.1091567440284602
2.5170340681362724,2.0,2.1251832131803825
2.5250501002004007,2.0,2.1401572475827866
2.5330661322645289,2.0,2.1540001853803905
2.5410821643286572,2.0,2.1666418220250714
2.5490981963927855,2.0,2.1780207230441628
2.5571142284569137,2.0,2.1880844759599922
2.565130260521042,2.0,2.1967898807234305
2.5731462925851702,2.0,2.2041030784260816
2.5811623246492985,2.0,2.2099996184527169
2.5891783567134268,2.0,2.2144644646251774
2.597194388777555,2.0,2.2174919412689036
2.6052104208416833,2.0,2.2190856205011795
2.6132264529058116,2.0,2.2192581523940227
2.6212424849699398,2.0,2.2180310400022623
2.6292585170340681,2.0,2.2154343615670222
2.6372745490981964,2.0,2.2115064425045601
2.6452905811623246,2.0,2.2062934800688776
2.6533066132264529,2.0,2.1998491238320681
2.6613226452905812,2.0,2.1922340153578643
2.669338677354709,2.0,2.1835152906501292
2.6773547094188372,2.0,2.1737660491382518
2.6853707414829655,2.0,2.1630647931147631
2.6933867735470938,2.0,2.1514948416664614
2.701402805611222,2.0,2.1391437232385719
2.7094188376753503,2.0,2.1261025510417584
2.7174348697394786,2.0,2.1124653855541649
2.7254509018036068,2.0,2.0983285883852405
2.7334669338677351,2.0,2.0837901717552887
2.7414829659318634,2.0,2.0689491478049535
2.7494989979959916,2.0,2.0539048818829246
2.7575150300601199,2.0,2.038756453868797
2.7655310621242482,2.0,2.0236020314723437
2.7735470941883764,2.0,2.0085382593114391
2.7815631262525047,2.0,1.9936596674098963
2.7895791583166329,2.0,1.9790581025748384
2.7975951903807612,2.0,1.9648221859124286
2.8056112224448895,2.0,1.9510367995224374
2.8136272545090177,2.0,1.9377826051778615
2.821643286573146,2.0,1.9251355975474045
2.8296593186372743,2.0,1.9131666942578733
2.8376753507014025,2.0,1.9019413648223067
2.8456913827655308,2.0,1.8915193001798143
2.8537074148296591,2.0,1.8819541243065998
2.8617234468937873,2.0,1.8732931490663931
2.8697394789579156,2.0,1.8655771731744597
2.8777555110220439,2.0,1.8588403258543973
2.8857715430861721,2.0,1.8531099554729835
2.8937875751503004,2.0,1.8484065631472448
2.9018036072144286,2.0,1.8447437810314882
2.9098196392785569,2.0,1.842128394712031
2.9178356713426852,2.0,1.8405604088654495
2.9258517034068134,2.0,1.8400331550739617
2.9338677354709417,2.0,1.8405334404405806
2.94188376753507,2.0,1.8420417354083016
2.9498997995991982,2.0,1.8445323989632298
2.9579158316633265,2.0,1.847973939192296
2.9659318637274548,2.0,1.852329306973256
2.973947895791583,2.0,1.8575562203989244
2.9819639278557113,2.0,1.8636075173799207
2.9899799599198396,2.0,1.87043153373132
2.9979959919839678,2.0,1.8779725039291211
3.0060120240480961,2.0,1.886170981622737
3.0140280561122244,2.0,1.894964276910216
3.0220440881763526,2.0,1.9042869073236981
3.0300601202404809,2.0,1.9140710594338159
3.0380761523046091,2.0,1.9242470579632542
3.0460921843687374,2.0,1.9347438393013088
3.0541082164328657,2.0,1.9454894263326714
3.0621242484969939,2.0,1.9564114015343932
3.0701402805611222,2.0,1.9674373753544518
3.07815631262525,2.0,1.9784954469629126
3.0861723446893783,2.0,1.9895146545615321
3.0941883767535066,2.0,2.000425412548934
3.1022044088176348,2.0,2.0111599329652141
3.1102204408817631,2.0,2.0216526287809642
3.1182364729458913,2.0,2.0318404967500983
3.1262525050100196,2.0,2.0416634777123357
3.1342685370741479,2.0,2.0510647924084919
3.1422845691382761,2.0,2.0599912510585296
3.1503006012024044,2.0,2.0683935351473322
3.1583166332665327,2.0,2.0762264500649472
3.1663326653306609,2.0,2.0834491474552514
3.1743486973947892,2.0,2.0900253163382203
3.1823647294589175,2.0,2.0959233422847636
3.1903807615230457,2.0,2.1011164341382056
3.198396793587174,2.0,2.1055827179910489
3.2064128256513023,2.0,2.109305298339232
3.2144288577154305,2.0,2.1122722865461934
3.2224448897795588,2.0,2.1144767969553451
3.230460921843687,2.0,2.1159169111902343
3.2384769539078153,2.0,2.1165956113757534
3.2464929859719436,2.0,2.1165206832002532
3.2545090180360718,2.0,2.1157045899156701
3.2625250501002001,2.0,2.1141643185407055
3.2705410821643284,2.0,2.1119211996889686
3.2785571142284566,2.0,2.1090007025894417
3.2865731462925849,2.0,2.1054322069997444
3.2945891783567132,2.0,2.1012487538328517
3.3026052104208414,2.0,2.0964867764245598
3.3106212424849697,2.0,2.0911858144617241
3.318637274549098,2.0,2.0853882126695837
3.3266533066132262,2.0,2.0791388064202532
3.3346693386773545,2.0,2.0724845964733825
3.3426853707414828,2.0,2.0654744150940698
3.350701402805611,2.0,2.058158585812337
3.3587174348697393,2.0,2.050588579092973
3.3667334669338675,2.0,2.0428166661745371
3.3747494989979958,2.0,2.0348955733120233
3.3827655310621241,2.0,2.0268781386196166
3.3907815631262523,2.0,2.018816973658438
3.3987975951903806,2.0,2.0107641318498573
3.4068136272545089,2.0,2.0027707857183605
3.4148296593186371,2.0,1.9948869148798472
3.4228456913827654,2.0,1.9871610065922884
3.4308617234468937,2.0,1.9796397705767561
3.4388777555110219,2.0,1.9723678696987448
3.4468937875751502,2.0,1.9653876679733815
3.4549098196392785,2.0,1.958738997224464
3.4629258517034067,2.0,1.9524589435872772
3.470941883767535,2.0,1.9465816548997807
3.4789579158316633,2.0,1.9411381698770735
3.4869739478957915,2.0,1.9361562698110262
3.4949899799599193,2.0,1.9316603533816608
3.5030060120240476,2.0,1.9276713350102666
3.5110220440881759,2.0,1.9242065670274571
3.5190380761523041,2.0,1.9212797857732902
3.5270541082164324,2.0,1.9189010815921863
3.5350701402805607,2.0,1.9170768925338117
3.5430861723446889,2.0,1.91581002142301
3.5511022044088172,2.0,1.9150996758184182
3.5591182364729455,2.0,1.9149415302410697
3.5671342685370737,2.0,1.9153278099224125
3.575150300601202,2.0,1.9162473951959047
3.5831663326653302,2.0,1.917685945538792
3.5911823647294585,2.0,1.9196260421612601
3.5991983967935868,2.0,1.9220473479395503
3.607214428857715,2.0,1.9249267833982602
3.6152304609218433,2.0,1.9282387173653757
3.6232464929859716,2.0,1.9319551708520255
3.6312625250500998,2.0,1.9360460326476916
3.6392785571142281,2.0,1.9404792850709915
3.6472945891783564,2.0,1.945221238276253
3.6553106212424846,2.0,1.9502367714870279
3.6633266533066129,2.0,1.9554895795094756
3.6713426853707412,2.0,1.960942422871101
3.6793587174348694,2.0,1.966557379933543
3.6873747494989977,2.0,1.9722960993417991
3.6953907815631259,2.0,1.978120051196181
3.7034068136272542,2.0,1.9839907753670811
3.7114228456913825,2.0,1.9898701254159796
3.7194388777555107,2.0,1.9957205066385362
3.727454909819639,2.0,2.0015051068066745
3.7354709418837673,2.0,2.0071881182557103
3.7434869739478955,2.0,2.0127349500392513
3.7515030060120238,2.0,2.0181124289581831
3.7595190380761521,2.0,2.0232889883599405
3.7675350701402803,2.0,2.028234843699706
3.7755511022044086,2.0,2.0329221539555826
3.7835671342685369,2.0,2.0373251680943394
3.7915831663326651,2.0,2.0414203558923489
3.7995991983967934,2.0,2.0451865225270764
3.8076152304609217,2.0,2.0486049064671636
3.8156312625250499,2.0,2.0516592603030794
3.8236472945891782,2.0,2.0543359142746649
3.8316633266533064,2.0,2.0566238223660576
3.8396793587174347,2.0,2.0585145909515461
3.847695390781563,2.0,2.0600024900873692
3.8557114228456912,2.0,2.0610844476535419
3.8637274549098195,2.0,2.0617600266557763
3.8717434869739478,2.0,2.0620313860999055
3.879759519038076,2.0,2.0619032259494254
3.8877755511022043,2.0,2.0613827167698853
3.8957915831663326,2.0,2.0604794147519687
3.9038076152304604,2.0,2.0592051628871699
3.9118236472945886,2.0,2.05757397914592
3.9198396793587169,2.0,2.0556019325773027
3.9278557114228452,2.0,2.0533070083118221
3.9358717434869734,2.0,2.0507089625037827
3.9438877755511017,2.0,2.0478291682974596
3.95190380761523,2.0,2.0446904539411634
3.9599198396793582,2.0,2.0413169342054678
3.9679358717434865,2.0,2.0377338362861233
3.9759519038076148,2.0,2.033967321388567
3.983967935871743,2.0,2.0300443031993813
3.9919839679358713,2.0,2.0259922644507515
4.0,2.0,2.021839072776912

read_plot_data.py

read_plot_data.py Python Source, 1 KB

File contents

#-----------------------------------
# Model-based identification and estimation
# SS2019, A. Schaum
#-----------------------------------
# Python code to read data from a csv file (prepared for exercise 3 problem 3) and plot it
#-----------------------------------

# Import relevant python libraries
import numpy as np
import matplotlib.pyplot as plt
import csv

l = 500 #length of time vector in data set (here it is known a priori!)

# Read out data from the csv-file 
rdata = np.zeros(shape=(l,3))
with open('ex3_3_data.csv','r') as file:
  reader = csv.reader(file, delimiter=',')
  i = 0
  for row in reader:
    #convert list of strings into floating point numpy array
    rdata[i,:] = np.asfarray(row,float) 
    i = i+1

#--------------------------------------
# Set up the figure
fig = plt.figure(figsize=(6,6))
# Plot x1
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(2,1,2)

# plot the data from the csv-file in the figure
i = 0
while i < l:
  ax1.plot(rdata[i,0],rdata[i,2],'k.')
  ax2.plot(rdata[i,0],rdata[i,1],'k.')
  i = i+1

ax1.grid()
ax1.set_ylabel(r'$i_L$')

ax2.grid()
ax2.set_xlabel('$t$')
ax2.set_ylabel(r'$i_q$')

plt.show() #Needed to show the figure..

ex4data

data42.csv text/comma-separated-values, 1 KB

File contents

0.0,2.0,1.0
0.40000000000000002,1.3934134186943308,5.9560393229450064
0.80000000000000004,-0.058399044602577631,6.512783032647171
1.2000000000000002,-1.4747874310824916,2.76558874165024
1.6000000000000001,-1.9965895515895062,-2.8179544874455336
2.0,-1.3072872417272239,-6.763508753806005
2.4000000000000004,0.17499796687889455,-6.6384664801367652
2.8000000000000003,1.5511317570205003,-2.5010237083538458
3.2000000000000002,1.9863698375163852,3.1470342650385197
3.6000000000000001,1.2167026290645091,6.8832353267084301
4.0,-0.29100006761722708,6.4428514846662299
4.4000000000000004,-1.622186028123312,2.0937332401824951
4.8000000000000007,-1.9693757115882533,-3.5256793145571765
5.2000000000000002,-1.1219685148544576,-7.0065806499329284
5.6000000000000005,0.40600972763750426,-6.2374374469519651
6.0,1.6877079174649843,-1.6847723203017475
6.4000000000000004,1.9456651313948707,3.8898423344354964
6.8000000000000007,1.0234079849062949,7.1049259936422953
7.2000000000000002,-0.51963471242751169,6.010254712748095
7.6000000000000005,-1.7474739660221621,1.2698425972942127
8.0,-1.9153189606467693,-4.2408394364039257
8.4000000000000004,-0.92135717482272506,-7.1790853714732528
8.8000000000000007,0.63148750983848667,-5.7625945426614766
9.2000000000000011,1.80128034476954,-0.85059123053265706
9.6000000000000014,1.8784406933937392,4.5773692903452226
10.0,0.81616412362678392,7.2287590139902758

tclab_data

tclab_data.csv text/comma-separated-values, 56 KB

File contents

0.0,0.0,0.0,20.449999999999999,20.420000000000002
1.001209020614624,0.0,0.0,20.48,20.379999999999999
2.0016038417816162,0.0,0.0,20.420000000000002,20.32
3.0024328231811523,0.0,0.0,20.48,20.420000000000002
4.0031828880310059,0.0,0.0,20.32,20.289999999999999
5.0040719509124756,0.0,0.0,20.420000000000002,20.350000000000001
6.0050139427185059,0.0,0.0,20.420000000000002,20.350000000000001
7.005950927734375,0.0,0.0,20.420000000000002,20.48
8.0067579746246338,0.0,0.0,20.48,20.379999999999999
9.0074129104614258,0.0,0.0,20.420000000000002,20.350000000000001
10.008337020874023,80.0,0.0,20.48,20.449999999999999
11.009271860122681,80.0,0.0,20.77,20.800000000000001
12.010207891464233,80.0,0.0,20.609999999999999,20.739999999999998
13.011115789413452,80.0,0.0,20.800000000000001,20.739999999999998
14.012043952941895,80.0,0.0,20.710000000000001,20.609999999999999
15.012976884841919,80.0,0.0,21.0,20.800000000000001
16.013909816741943,80.0,0.0,20.899999999999999,20.640000000000001
17.01481294631958,80.0,0.0,20.960000000000001,20.640000000000001
18.015730857849121,80.0,0.0,21.09,20.710000000000001
19.016695022583008,80.0,0.0,21.289999999999999,20.829999999999998
20.017622947692871,80.0,0.0,21.350000000000001,20.710000000000001
21.018497943878174,80.0,0.0,21.539999999999999,20.670000000000002
22.019423961639404,80.0,0.0,21.579999999999998,20.640000000000001
23.020340919494629,80.0,0.0,21.93,20.739999999999998
24.021222829818726,80.0,0.0,21.93,20.77
25.022042989730835,80.0,0.0,22.32,20.870000000000001
26.022972822189331,80.0,0.0,22.350000000000001,20.609999999999999
27.023910999298096,80.0,0.0,22.57,20.899999999999999
28.02485179901123,80.0,0.0,22.899999999999999,20.77
29.025774955749512,80.0,0.0,23.149999999999999,20.93
30.026723861694336,80.0,0.0,23.440000000000001,20.899999999999999
31.027653932571411,80.0,0.0,23.539999999999999,21.0
32.028580904006958,80.0,0.0,23.859999999999999,20.960000000000001
33.029070854187012,80.0,0.0,24.120000000000001,21.030000000000001
34.030017852783203,80.0,0.0,24.57,20.960000000000001
35.030807971954346,80.0,0.0,24.829999999999998,20.829999999999998
36.031613826751709,80.0,0.0,25.149999999999999,20.93
37.0325608253479,80.0,0.0,25.309999999999999,21.030000000000001
38.03344988822937,80.0,0.0,25.510000000000002,20.899999999999999
39.03434681892395,80.0,0.0,25.960000000000001,20.899999999999999
40.035120010375977,80.0,0.0,26.09,20.899999999999999
41.036026000976562,80.0,0.0,26.440000000000001,21.030000000000001
42.036789894104004,80.0,0.0,26.800000000000001,20.960000000000001
43.037606000900269,80.0,0.0,27.149999999999999,20.960000000000001
44.038487911224365,80.0,0.0,27.41,21.030000000000001
45.039191007614136,80.0,0.0,27.789999999999999,20.93
46.039896965026855,80.0,0.0,28.18,21.030000000000001
47.040612936019897,80.0,0.0,28.440000000000001,21.030000000000001
48.041294813156128,80.0,0.0,28.699999999999999,21.219999999999999
49.04205584526062,80.0,0.0,28.890000000000001,21.09
50.042873859405518,80.0,0.0,29.34,21.350000000000001
51.043603897094727,80.0,0.0,29.73,21.16
52.044317007064819,80.0,0.0,29.989999999999998,21.350000000000001
53.045203924179077,80.0,0.0,30.280000000000001,21.350000000000001
54.04587984085083,80.0,0.0,30.66,21.41
55.04613995552063,80.0,0.0,30.920000000000002,21.289999999999999
56.046818971633911,80.0,0.0,31.309999999999999,21.289999999999999
57.047324895858765,80.0,0.0,31.600000000000001,21.32
58.048131942749023,80.0,0.0,31.789999999999999,21.379999999999999
59.048938989639282,80.0,0.0,31.920000000000002,21.539999999999999
60.049736976623535,80.0,0.0,32.240000000000002,21.640000000000001
61.050633907318115,80.0,0.0,32.659999999999997,21.609999999999999
62.051410913467407,80.0,0.0,32.789999999999999,21.670000000000002
63.052302837371826,80.0,0.0,33.210000000000001,21.539999999999999
64.053084850311279,80.0,0.0,33.659999999999997,21.539999999999999
65.053854942321777,80.0,0.0,33.850000000000001,21.579999999999998
66.054785013198853,80.0,0.0,34.109999999999999,21.609999999999999
67.055328845977783,80.0,0.0,34.5,21.640000000000001
68.056233882904053,80.0,0.0,34.880000000000003,21.899999999999999
69.057140827178955,80.0,0.0,35.109999999999999,21.899999999999999
70.058063983917236,80.0,0.0,35.590000000000003,21.93
71.058935880661011,80.0,0.0,35.789999999999999,21.870000000000001
72.05980396270752,80.0,0.0,36.079999999999998,21.989999999999998
73.060716867446899,80.0,0.0,36.43,21.93
74.061633825302124,80.0,0.0,36.689999999999998,22.059999999999999
75.062544822692871,80.0,0.0,36.880000000000003,21.989999999999998
76.063356876373291,80.0,0.0,37.039999999999999,22.16
77.063671827316284,80.0,0.0,37.43,22.32
78.064438819885254,80.0,0.0,37.719999999999999,22.25
79.06532096862793,80.0,0.0,38.039999999999999,22.25
80.066085815429688,80.0,0.0,38.43,22.32
81.066860914230347,80.0,0.0,38.75,22.280000000000001
82.067728996276855,80.0,0.0,38.950000000000003,22.57
83.06851601600647,80.0,0.0,39.359999999999999,22.57
84.069450855255127,80.0,0.0,39.530000000000001,22.640000000000001
85.070313930511475,80.0,0.0,39.649999999999999,22.57
86.071254968643188,80.0,0.0,40.07,22.640000000000001
87.072055816650391,80.0,0.0,40.299999999999997,22.57
88.072849988937378,80.0,0.0,40.560000000000002,22.77
89.073763847351074,80.0,0.0,40.909999999999997,22.829999999999998
90.074708938598633,80.0,0.0,41.200000000000003,22.960000000000001
91.075649976730347,80.0,0.0,41.590000000000003,22.77
92.076540946960449,80.0,0.0,41.560000000000002,22.960000000000001
93.077335834503174,80.0,0.0,41.909999999999997,22.960000000000001
94.078125953674316,80.0,0.0,42.299999999999997,23.149999999999999
95.079051971435547,80.0,0.0,42.520000000000003,23.219999999999999
96.079828023910522,80.0,0.0,42.840000000000003,23.280000000000001
97.080118894577026,80.0,0.0,43.009999999999998,23.219999999999999
98.080384016036987,80.0,0.0,43.329999999999998,23.25
99.081158876419067,80.0,0.0,43.520000000000003,23.32
100.08201694488525,80.0,0.0,43.840000000000003,23.609999999999999
101.08280801773071,80.0,0.0,44.259999999999998,23.539999999999999
102.08355593681335,80.0,0.0,44.200000000000003,23.670000000000002
103.08432197570801,80.0,0.0,44.490000000000002,23.440000000000001
104.08507394790649,80.0,0.0,44.810000000000002,23.73
105.08589482307434,80.0,0.0,45.259999999999998,23.73
106.08668184280396,80.0,0.0,45.170000000000002,23.859999999999999
107.08758282661438,80.0,0.0,45.460000000000001,23.859999999999999
108.08836793899536,80.0,0.0,45.909999999999997,23.93
109.08911180496216,80.0,0.0,46.100000000000001,23.93
110.08987498283386,80.0,0.0,46.100000000000001,24.120000000000001
111.09069991111755,80.0,0.0,46.490000000000002,24.190000000000001
112.09161686897278,80.0,0.0,46.810000000000002,24.190000000000001
113.09244894981384,80.0,0.0,46.969999999999999,24.059999999999999
114.09321784973145,80.0,0.0,47.259999999999998,24.440000000000001
115.09396386146545,80.0,0.0,47.520000000000003,24.25
116.09474802017212,80.0,0.0,47.710000000000001,24.48
117.09553194046021,80.0,0.0,47.710000000000001,24.379999999999999
118.09614682197571,80.0,0.0,48.030000000000001,24.57
119.09698581695557,80.0,0.0,48.479999999999997,24.57
120.09781980514526,80.0,0.0,48.549999999999997,24.600000000000001
121.0985848903656,80.0,0.0,48.68,24.699999999999999
122.09949898719788,80.0,0.0,49.130000000000003,24.859999999999999
123.10025787353516,80.0,0.0,49.159999999999997,24.699999999999999
124.10097098350525,80.0,0.0,49.350000000000001,25.120000000000001
125.10186100006104,80.0,0.0,49.710000000000001,25.120000000000001
126.10270190238953,80.0,0.0,50.030000000000001,25.219999999999999
127.10351991653442,80.0,0.0,49.969999999999999,25.149999999999999
128.10419893264771,80.0,0.0,50.289999999999999,25.149999999999999
129.10509490966797,80.0,0.0,50.579999999999998,25.379999999999999
130.10587787628174,80.0,0.0,50.609999999999999,25.350000000000001
131.10678887367249,80.0,0.0,50.869999999999997,25.350000000000001
132.10768890380859,80.0,0.0,51.030000000000001,25.600000000000001
133.10859680175781,80.0,0.0,51.259999999999998,25.41
134.10935187339783,80.0,0.0,51.549999999999997,25.760000000000002
135.1102659702301,80.0,0.0,51.640000000000001,25.670000000000002
136.11118578910828,80.0,0.0,51.899999999999999,25.93
137.11150693893433,80.0,0.0,51.869999999999997,25.800000000000001
138.1124279499054,80.0,0.0,52.289999999999999,25.93
139.11328983306885,80.0,0.0,52.539999999999999,25.989999999999998
140.11405992507935,80.0,0.0,52.479999999999997,26.18
141.11495399475098,80.0,0.0,52.93,26.02
142.11586284637451,80.0,0.0,52.829999999999998,26.120000000000001
143.11665892601013,80.0,0.0,53.189999999999998,26.149999999999999
144.11758399009705,80.0,0.0,53.450000000000003,26.510000000000002
145.11851501464844,80.0,0.0,53.509999999999998,26.440000000000001
146.11929798126221,80.0,0.0,53.670000000000002,26.41
147.12021493911743,80.0,0.0,53.960000000000001,26.469999999999999
148.12115883827209,80.0,0.0,54.060000000000002,26.699999999999999
149.1218638420105,80.0,0.0,54.159999999999997,26.760000000000002
150.12264895439148,80.0,0.0,54.579999999999998,26.890000000000001
151.12348198890686,80.0,0.0,54.479999999999997,26.760000000000002
152.12424397468567,80.0,0.0,54.740000000000002,26.800000000000001
153.12498998641968,80.0,0.0,54.869999999999997,27.02
154.12576484680176,80.0,0.0,55.219999999999999,27.02
155.12663578987122,80.0,0.0,55.060000000000002,26.989999999999998
156.12743401527405,80.0,0.0,55.380000000000003,27.149999999999999
157.12834882736206,80.0,0.0,55.539999999999999,27.09
158.12925100326538,80.0,0.0,55.740000000000002,27.210000000000001
159.13016486167908,80.0,0.0,55.829999999999998,27.280000000000001
160.13087391853333,80.0,0.0,56.119999999999997,27.469999999999999
161.13163781166077,80.0,0.0,56.119999999999997,27.280000000000001
162.13247990608215,80.0,0.0,56.380000000000003,27.440000000000001
163.13336181640625,80.0,0.0,56.409999999999997,27.469999999999999
164.1342658996582,80.0,0.0,56.670000000000002,27.760000000000002
165.13517189025879,80.0,0.0,56.799999999999997,27.73
166.13598084449768,80.0,0.0,57.119999999999997,27.699999999999999
167.13690495491028,80.0,0.0,57.149999999999999,27.73
168.13766884803772,80.0,0.0,57.409999999999997,27.789999999999999
169.13847398757935,80.0,0.0,57.509999999999998,28.02
170.13931488990784,80.0,0.0,57.700000000000003,28.050000000000001
171.14023280143738,80.0,0.0,57.829999999999998,28.050000000000001
172.14117383956909,80.0,0.0,57.93,28.120000000000001
173.14206600189209,80.0,0.0,58.020000000000003,28.280000000000001
174.14284086227417,80.0,0.0,58.439999999999998,28.280000000000001
175.14360499382019,80.0,0.0,58.409999999999997,28.440000000000001
176.14442682266235,80.0,0.0,58.439999999999998,28.370000000000001
177.1451427936554,80.0,0.0,58.729999999999997,28.440000000000001
178.14592981338501,80.0,0.0,58.890000000000001,28.629999999999999
179.14667892456055,80.0,0.0,58.890000000000001,28.760000000000002
180.14743185043335,80.0,0.0,59.020000000000003,28.73
181.14826679229736,80.0,0.0,59.310000000000002,28.699999999999999
182.14906597137451,80.0,0.0,59.380000000000003,28.829999999999998
183.14994788169861,80.0,0.0,59.57,29.02
184.15011501312256,80.0,0.0,59.700000000000003,29.02
185.15084600448608,80.0,0.0,59.670000000000002,29.02
186.15143084526062,80.0,0.0,59.960000000000001,29.02
187.15222692489624,80.0,0.0,60.25,29.18
188.15296483039856,80.0,0.0,60.409999999999997,29.25
189.15367579460144,80.0,0.0,60.439999999999998,29.34
190.15440201759338,80.0,0.0,60.469999999999999,29.370000000000001
191.15515089035034,80.0,0.0,60.600000000000001,29.57
192.15590786933899,80.0,0.0,60.829999999999998,29.629999999999999
193.15665578842163,80.0,0.0,60.990000000000002,29.66
194.15756487846375,80.0,0.0,60.920000000000002,29.73
195.15841698646545,80.0,0.0,61.280000000000001,29.539999999999999
196.15915298461914,80.0,0.0,61.439999999999998,29.760000000000002
197.15990900993347,80.0,0.0,61.439999999999998,29.989999999999998
198.16082191467285,80.0,0.0,61.630000000000003,30.120000000000001
199.1616518497467,80.0,0.0,61.859999999999999,30.050000000000001
200.16253685951233,80.0,0.0,61.890000000000001,30.18
201.16293096542358,80.0,0.0,61.789999999999999,30.050000000000001
202.16338396072388,80.0,0.0,62.149999999999999,30.309999999999999
203.16413998603821,80.0,0.0,62.210000000000001,30.370000000000001
204.16494393348694,80.0,0.0,62.409999999999997,30.309999999999999
205.16576099395752,80.0,0.0,62.539999999999999,30.239999999999998
206.16666698455811,80.0,0.0,62.469999999999999,30.440000000000001
207.16748189926147,80.0,0.0,62.729999999999997,30.629999999999999
208.16764092445374,80.0,0.0,62.729999999999997,30.699999999999999
209.16841197013855,80.0,0.0,62.859999999999999,30.629999999999999
210.16916394233704,80.0,0.0,63.049999999999997,30.629999999999999
211.16989398002625,80.0,0.0,63.18,30.890000000000001
212.17071080207825,80.0,0.0,63.240000000000002,30.699999999999999
213.17146492004395,80.0,0.0,63.57,31.02
214.17222595214844,80.0,0.0,63.57,30.82
215.17293787002563,80.0,0.0,63.659999999999997,31.050000000000001
216.17369079589844,80.0,0.0,63.729999999999997,31.079999999999998
217.17452383041382,80.0,0.0,63.890000000000001,31.280000000000001
218.17530393600464,80.0,0.0,64.049999999999997,31.280000000000001
219.17601585388184,80.0,0.0,64.079999999999998,31.34
220.17681384086609,80.0,0.0,64.180000000000007,31.34
221.17763590812683,80.0,0.0,64.370000000000005,31.57
222.17836785316467,80.0,0.0,64.370000000000005,31.5
223.17913198471069,80.0,0.0,64.469999999999999,31.629999999999999
224.17996597290039,80.0,0.0,64.599999999999994,31.600000000000001
225.18073081970215,80.0,0.0,64.819999999999993,31.600000000000001
226.18151593208313,80.0,0.0,64.629999999999995,31.690000000000001
227.18229389190674,80.0,0.0,64.790000000000006,31.98
228.18318295478821,80.0,0.0,65.209999999999994,31.920000000000002
229.18397498130798,80.0,0.0,65.049999999999997,32.020000000000003
230.18474578857422,80.0,0.0,65.269999999999996,31.98
231.1854419708252,80.0,0.0,65.439999999999998,32.18
232.18627786636353,80.0,0.0,65.439999999999998,32.020000000000003
233.18713879585266,80.0,0.0,65.469999999999999,32.210000000000001
234.18789482116699,80.0,0.0,65.730000000000004,32.210000000000001
235.18878889083862,80.0,0.0,65.890000000000001,32.240000000000002
236.18960881233215,80.0,0.0,65.849999999999994,32.270000000000003
237.19051599502563,80.0,0.0,65.950000000000003,32.439999999999998
238.19139981269836,80.0,0.0,66.140000000000001,32.630000000000003
239.19230699539185,80.0,0.0,66.079999999999998,32.560000000000002
240.19324588775635,80.0,0.0,66.430000000000007,32.560000000000002
241.19418883323669,80.0,0.0,66.269999999999996,32.560000000000002
242.19511985778809,80.0,0.0,66.469999999999999,32.5
243.19599890708923,80.0,0.0,66.560000000000002,32.5
244.1967658996582,80.0,0.0,66.599999999999994,32.659999999999997
245.19755482673645,80.0,0.0,66.689999999999998,32.890000000000001
246.19831800460815,80.0,0.0,66.890000000000001,32.890000000000001
247.19911789894104,80.0,0.0,66.890000000000001,32.920000000000002
248.19934487342834,80.0,0.0,67.140000000000001,32.890000000000001
249.20006799697876,80.0,0.0,67.109999999999999,33.079999999999998
250.200767993927,80.0,0.0,67.079999999999998,33.079999999999998
251.20150780677795,80.0,0.0,67.239999999999995,33.079999999999998
252.20226788520813,80.0,0.0,67.299999999999997,33.18
253.2024199962616,80.0,0.0,67.239999999999995,33.340000000000003
254.2032299041748,80.0,0.0,67.400000000000006,33.210000000000001
255.20406293869019,80.0,0.0,67.629999999999995,33.270000000000003
256.20494985580444,80.0,0.0,67.590000000000003,33.340000000000003
257.20583200454712,80.0,0.0,67.819999999999993,33.5
258.20676779747009,80.0,0.0,67.719999999999999,33.600000000000001
259.20752787590027,80.0,0.0,67.920000000000002,33.469999999999999
260.20841789245605,80.0,0.0,68.140000000000001,33.530000000000001
261.20920395851135,80.0,0.0,68.049999999999997,33.530000000000001
262.20995688438416,80.0,0.0,68.079999999999998,33.560000000000002
263.21088790893555,80.0,0.0,68.400000000000006,33.82
264.21162796020508,80.0,0.0,68.370000000000005,33.759999999999998
265.21239995956421,80.0,0.0,68.340000000000003,33.920000000000002
266.21319484710693,80.0,0.0,68.400000000000006,33.82
267.21395587921143,80.0,0.0,68.5,33.789999999999999
268.2147970199585,80.0,0.0,68.430000000000007,33.950000000000003
269.21572089195251,80.0,0.0,68.590000000000003,34.009999999999998
270.21660780906677,80.0,0.0,68.719999999999999,34.079999999999998
271.21755194664001,80.0,0.0,68.659999999999997,34.240000000000002
272.21836400032043,80.0,0.0,68.719999999999999,34.079999999999998
273.21920800209045,80.0,0.0,68.659999999999997,34.299999999999997
274.22013187408447,80.0,0.0,68.879999999999995,34.109999999999999
275.22097492218018,80.0,0.0,69.109999999999999,34.5
276.22185683250427,80.0,0.0,68.980000000000004,34.399999999999999
277.22264695167542,80.0,0.0,68.920000000000002,34.560000000000002
278.22357201576233,80.0,0.0,69.269999999999996,34.5
279.2244029045105,80.0,0.0,69.079999999999998,34.630000000000003
280.22531890869141,80.0,0.0,69.170000000000002,34.590000000000003
281.22619700431824,80.0,0.0,69.299999999999997,34.689999999999998
282.22711586952209,80.0,0.0,69.299999999999997,34.689999999999998
283.22802782058716,80.0,0.0,69.430000000000007,34.880000000000003
284.22895383834839,80.0,0.0,69.329999999999998,34.82
285.2298789024353,80.0,0.0,69.530000000000001,34.880000000000003
286.23069286346436,80.0,0.0,69.530000000000001,34.920000000000002
287.23149681091309,80.0,0.0,69.590000000000003,34.950000000000003
288.23230195045471,80.0,0.0,69.620000000000005,35.049999999999997
289.2332079410553,80.0,0.0,69.620000000000005,35.170000000000002
290.23413491249084,80.0,0.0,69.659999999999997,35.109999999999999
291.23489379882812,80.0,0.0,69.689999999999998,35.210000000000001
292.23571300506592,80.0,0.0,69.980000000000004,35.140000000000001
293.23648190498352,80.0,0.0,69.849999999999994,35.140000000000001
294.23723196983337,80.0,0.0,69.819999999999993,35.299999999999997
295.23793292045593,80.0,0.0,69.920000000000002,35.399999999999999
296.23866200447083,80.0,0.0,70.079999999999998,35.299999999999997
297.23947691917419,80.0,0.0,69.950000000000003,35.530000000000001
298.24028301239014,80.0,0.0,69.920000000000002,35.460000000000001
299.24102187156677,80.0,0.0,70.239999999999995,35.530000000000001
300.2418417930603,80.0,0.0,70.329999999999998,35.560000000000002
301.24267983436584,80.0,0.0,70.269999999999996,35.659999999999997
302.24344682693481,80.0,0.0,70.269999999999996,35.719999999999999
303.24425601959229,80.0,0.0,70.530000000000001,35.920000000000002
304.2449688911438,80.0,0.0,70.430000000000007,35.789999999999999
305.24570989608765,80.0,0.0,70.459999999999994,35.950000000000003
306.24659991264343,80.0,0.0,70.659999999999997,35.979999999999997
307.24734783172607,80.0,0.0,70.659999999999997,36.210000000000001
308.24815487861633,80.0,0.0,70.5,36.109999999999999
309.24907398223877,80.0,0.0,70.75,36.140000000000001
310.24991488456726,80.0,0.0,70.849999999999994,36.109999999999999
311.25084495544434,80.0,0.0,70.620000000000005,36.140000000000001
312.25176501274109,80.0,0.0,71.040000000000006,36.079999999999998
313.25257396697998,80.0,0.0,70.909999999999997,36.43
314.25344586372375,80.0,0.0,70.980000000000004,36.369999999999997
315.25436592102051,80.0,0.0,71.239999999999995,36.560000000000002
316.25513195991516,80.0,0.0,71.010000000000005,36.5
317.25531387329102,80.0,0.0,71.299999999999997,36.5
318.25600600242615,80.0,0.0,71.299999999999997,36.659999999999997
319.25674986839294,80.0,0.0,71.239999999999995,36.75
320.25766801834106,80.0,0.0,71.430000000000007,36.659999999999997
321.25860500335693,80.0,0.0,71.400000000000006,36.789999999999999
322.25953483581543,80.0,0.0,71.430000000000007,36.75
323.26029300689697,80.0,0.0,71.560000000000002,36.950000000000003
324.2610228061676,80.0,0.0,71.620000000000005,36.659999999999997
325.26169395446777,80.0,0.0,71.590000000000003,36.950000000000003
326.26245784759521,80.0,0.0,71.590000000000003,36.950000000000003
327.26318502426147,80.0,0.0,71.849999999999994,37.140000000000001
328.26334381103516,80.0,0.0,71.879999999999995,37.079999999999998
329.264084815979,80.0,0.0,71.879999999999995,37.140000000000001
330.26482582092285,80.0,0.0,72.010000000000005,37.079999999999998
331.26559281349182,80.0,0.0,72.140000000000001,37.210000000000001
332.26638698577881,80.0,0.0,72.140000000000001,37.210000000000001
333.26719188690186,80.0,0.0,72.239999999999995,37.460000000000001
334.2679808139801,80.0,0.0,72.200000000000003,37.399999999999999
335.26889300346375,80.0,0.0,72.200000000000003,37.530000000000001
336.26974701881409,80.0,0.0,72.400000000000006,37.399999999999999
337.27058482170105,80.0,0.0,72.400000000000006,37.560000000000002
338.27138900756836,80.0,0.0,72.400000000000006,37.590000000000003
339.27208995819092,80.0,0.0,72.430000000000007,37.659999999999997
340.2729799747467,80.0,0.0,72.650000000000006,37.619999999999997
341.27389287948608,80.0,0.0,72.530000000000001,37.850000000000001
342.27481579780579,80.0,0.0,72.590000000000003,37.719999999999999
343.27572989463806,80.0,0.0,72.530000000000001,37.850000000000001
344.27664494514465,80.0,0.0,72.719999999999999,37.719999999999999
345.27754402160645,80.0,0.0,72.879999999999995,37.880000000000003
346.2782838344574,80.0,0.0,72.650000000000006,37.909999999999997
347.27906084060669,80.0,0.0,72.620000000000005,38.140000000000001
348.27976679801941,80.0,0.0,72.780000000000001,37.909999999999997
349.28051280975342,80.0,0.0,72.909999999999997,38.109999999999999
350.28131794929504,80.0,0.0,72.849999999999994,38.009999999999998
351.28220081329346,80.0,0.0,72.980000000000004,38.170000000000002
352.28310894966125,80.0,0.0,73.069999999999993,38.039999999999999
353.284019947052,80.0,0.0,73.140000000000001,38.170000000000002
354.2848539352417,80.0,0.0,73.230000000000004,38.039999999999999
355.28571891784668,80.0,0.0,73.299999999999997,38.109999999999999
356.2866358757019,80.0,0.0,73.170000000000002,38.109999999999999
357.28757381439209,80.0,0.0,73.560000000000002,38.399999999999999
358.28833699226379,80.0,0.0,73.359999999999999,38.200000000000003
359.28902387619019,80.0,0.0,73.489999999999995,38.299999999999997
360.28973579406738,80.0,0.0,73.489999999999995,38.329999999999998
361.29047584533691,80.0,0.0,73.560000000000002,38.140000000000001
362.29124593734741,80.0,0.0,73.620000000000005,38.170000000000002
363.2919750213623,80.0,0.0,73.560000000000002,38.369999999999997
364.29280400276184,80.0,0.0,73.689999999999998,38.43
365.29357886314392,80.0,0.0,73.879999999999995,38.369999999999997
366.29445600509644,80.0,0.0,73.810000000000002,38.369999999999997
367.29519701004028,80.0,0.0,73.780000000000001,38.43
368.29563784599304,80.0,0.0,73.810000000000002,38.329999999999998
369.29640579223633,80.0,0.0,73.780000000000001,38.460000000000001
370.29700994491577,80.0,0.0,73.879999999999995,38.460000000000001
371.29767680168152,80.0,0.0,73.939999999999998,38.530000000000001
372.29855298995972,80.0,0.0,73.810000000000002,38.369999999999997
373.29934191703796,80.0,0.0,73.810000000000002,38.490000000000002
374.30008482933044,80.0,0.0,73.879999999999995,38.530000000000001
375.30081987380981,80.0,0.0,73.879999999999995,38.590000000000003
376.30159187316895,80.0,0.0,73.719999999999999,38.560000000000002
377.30236887931824,80.0,0.0,73.849999999999994,38.75
378.30308985710144,80.0,0.0,73.909999999999997,38.619999999999997
379.30384182929993,80.0,0.0,74.010000000000005,38.75
380.30473494529724,80.0,0.0,73.980000000000004,38.619999999999997
381.30558896064758,80.0,0.0,74.140000000000001,38.950000000000003
382.30633187294006,80.0,0.0,74.140000000000001,38.780000000000001
383.30721497535706,80.0,0.0,74.140000000000001,39.039999999999999
384.30794787406921,80.0,0.0,74.170000000000002,39.039999999999999
385.30869388580322,80.0,0.0,74.170000000000002,38.880000000000003
386.3093729019165,80.0,0.0,74.170000000000002,38.909999999999997
387.31001091003418,80.0,0.0,74.200000000000003,39.009999999999998
388.31071496009827,80.0,0.0,74.140000000000001,39.140000000000001
389.31160497665405,80.0,0.0,74.200000000000003,39.039999999999999
390.31251788139343,80.0,0.0,74.069999999999993,38.880000000000003
391.31326293945312,80.0,0.0,74.170000000000002,39.009999999999998
392.31400084495544,80.0,0.0,74.140000000000001,39.109999999999999
393.31470680236816,80.0,0.0,74.230000000000004,39.009999999999998
394.31547093391418,80.0,0.0,74.390000000000001,39.299999999999997
395.31619596481323,80.0,0.0,74.329999999999998,39.240000000000002
396.31692385673523,80.0,0.0,74.390000000000001,39.460000000000001
397.3176748752594,80.0,0.0,74.430000000000007,39.329999999999998
398.31836295127869,80.0,0.0,74.590000000000003,39.460000000000001
399.3192617893219,80.0,0.0,74.430000000000007,39.329999999999998
400.32016801834106,80.0,0.0,74.519999999999996,39.329999999999998
401.32108998298645,80.0,0.0,74.430000000000007,39.619999999999997
402.32188892364502,80.0,0.0,74.489999999999995,39.719999999999999
403.32259202003479,80.0,0.0,74.590000000000003,39.590000000000003
404.32337284088135,80.0,0.0,74.810000000000002,39.719999999999999
405.3240978717804,80.0,0.0,74.620000000000005,39.619999999999997
406.32491683959961,80.0,0.0,74.650000000000006,39.719999999999999
407.32558393478394,80.0,0.0,74.680000000000007,39.689999999999998
408.32632493972778,80.0,0.0,74.849999999999994,39.880000000000003
409.3269419670105,80.0,0.0,74.909999999999997,39.880000000000003
410.32781791687012,80.0,0.0,74.650000000000006,39.850000000000001
411.32858681678772,80.0,0.0,74.780000000000001,39.880000000000003
412.32948684692383,80.0,0.0,74.810000000000002,39.939999999999998
413.33025598526001,80.0,0.0,74.780000000000001,39.909999999999997
414.3310718536377,80.0,0.0,74.849999999999994,39.979999999999997
415.33182287216187,80.0,0.0,74.939999999999998,39.979999999999997
416.33260679244995,80.0,0.0,75.069999999999993,40.200000000000003
417.33339500427246,80.0,0.0,74.780000000000001,40.170000000000002
418.33432292938232,80.0,0.0,75.069999999999993,39.979999999999997
419.33523297309875,80.0,0.0,74.969999999999999,40.270000000000003
420.33605790138245,80.0,0.0,74.939999999999998,40.399999999999999
421.33697485923767,80.0,0.0,75.230000000000004,40.270000000000003
422.33763694763184,80.0,0.0,75.140000000000001,40.359999999999999
423.33854579925537,80.0,0.0,75.140000000000001,40.359999999999999
424.33948087692261,80.0,0.0,75.230000000000004,40.299999999999997
425.34027791023254,80.0,0.0,75.099999999999994,40.299999999999997
426.34109091758728,80.0,0.0,75.230000000000004,40.43
427.34184980392456,80.0,0.0,75.390000000000001,40.399999999999999
428.34270000457764,80.0,0.0,75.390000000000001,40.490000000000002
429.34346294403076,80.0,0.0,75.260000000000005,40.329999999999998
430.34435701370239,80.0,0.0,75.489999999999995,40.460000000000001
431.34512186050415,80.0,0.0,75.590000000000003,40.490000000000002
432.34592080116272,80.0,0.0,75.590000000000003,40.490000000000002
433.34672498703003,80.0,0.0,75.590000000000003,40.649999999999999
434.34744501113892,80.0,0.0,75.719999999999999,40.520000000000003
435.34822392463684,80.0,0.0,75.719999999999999,40.619999999999997
436.34915280342102,80.0,0.0,75.650000000000006,40.649999999999999
437.35008096694946,80.0,0.0,75.879999999999995,40.490000000000002
438.35096001625061,80.0,0.0,75.75,40.619999999999997
439.35130095481873,80.0,0.0,75.810000000000002,40.619999999999997
440.35216999053955,80.0,0.0,75.75,40.689999999999998
441.35289287567139,80.0,0.0,75.75,40.619999999999997
442.35365700721741,80.0,0.0,75.939999999999998,40.689999999999998
443.3544487953186,80.0,0.0,75.879999999999995,40.649999999999999
444.35515999794006,80.0,0.0,75.879999999999995,40.75
445.35584878921509,80.0,0.0,75.909999999999997,40.649999999999999
446.35651779174805,80.0,0.0,75.909999999999997,40.939999999999998
447.35721492767334,80.0,0.0,76.129999999999995,41.009999999999998
448.35808491706848,80.0,0.0,75.909999999999997,41.009999999999998
449.359041929245,80.0,0.0,76.069999999999993,41.009999999999998
450.35999393463135,80.0,0.0,76.069999999999993,41.009999999999998
451.36087894439697,80.0,0.0,76.069999999999993,40.880000000000003
452.36166286468506,80.0,0.0,76.230000000000004,41.009999999999998
453.36250901222229,80.0,0.0,76.010000000000005,40.810000000000002
454.36332988739014,80.0,0.0,76.129999999999995,41.009999999999998
455.36413788795471,80.0,0.0,76.260000000000005,40.810000000000002
456.36494994163513,80.0,0.0,76.299999999999997,41.07
457.3657398223877,80.0,0.0,76.260000000000005,41.009999999999998
458.3666307926178,80.0,0.0,76.420000000000002,41.100000000000001
459.36736989021301,80.0,0.0,76.420000000000002,41.07
460.36817789077759,80.0,0.0,76.390000000000001,41.140000000000001
461.36902284622192,80.0,0.0,76.390000000000001,41.140000000000001
462.36975693702698,80.0,0.0,76.459999999999994,41.039999999999999
463.37037491798401,80.0,0.0,76.519999999999996,41.170000000000002
464.371258020401,80.0,0.0,76.459999999999994,41.329999999999998
465.3720269203186,80.0,0.0,76.459999999999994,41.270000000000003
466.37280583381653,80.0,0.0,76.620000000000005,41.390000000000001
467.37361097335815,80.0,0.0,76.549999999999997,41.140000000000001
468.37438583374023,80.0,0.0,76.420000000000002,41.390000000000001
469.37512493133545,80.0,0.0,76.590000000000003,41.229999999999997
470.37593984603882,80.0,0.0,76.75,41.390000000000001
471.37672996520996,80.0,0.0,76.680000000000007,41.170000000000002
472.37749099731445,80.0,0.0,76.709999999999994,41.390000000000001
473.37829685211182,80.0,0.0,76.709999999999994,41.43
474.37903499603271,80.0,0.0,76.780000000000001,41.560000000000002
475.37925100326538,80.0,0.0,76.780000000000001,41.590000000000003
476.37989783287048,80.0,0.0,76.879999999999995,41.520000000000003
477.38063883781433,80.0,0.0,76.780000000000001,41.649999999999999
478.38143992424011,80.0,0.0,76.709999999999994,41.590000000000003
479.3822648525238,80.0,0.0,77.0,41.560000000000002
480.3830738067627,80.0,0.0,76.969999999999999,41.619999999999997
481.38337898254395,80.0,0.0,77.069999999999993,41.619999999999997
482.38412094116211,80.0,0.0,77.0,41.619999999999997
483.38486480712891,80.0,0.0,76.780000000000001,41.520000000000003
484.38559579849243,80.0,0.0,76.939999999999998,41.810000000000002
485.38633489608765,80.0,0.0,77.099999999999994,41.719999999999999
486.38707184791565,80.0,0.0,77.099999999999994,41.810000000000002
487.38738799095154,80.0,0.0,77.099999999999994,41.75
488.38839483261108,80.0,0.0,77.0,41.880000000000003
489.3892560005188,80.0,0.0,77.099999999999994,41.75
490.3901150226593,80.0,0.0,77.099999999999994,41.810000000000002
491.39101386070251,80.0,0.0,77.040000000000006,41.780000000000001
492.39190697669983,80.0,0.0,77.099999999999994,41.880000000000003
493.3926739692688,80.0,0.0,77.200000000000003,41.780000000000001
494.3935878276825,80.0,0.0,76.969999999999999,41.780000000000001
495.39439487457275,80.0,0.0,77.290000000000006,41.810000000000002
496.39532089233398,80.0,0.0,77.170000000000002,42.009999999999998
497.39616894721985,80.0,0.0,77.230000000000004,41.880000000000003
498.39693093299866,80.0,0.0,77.329999999999998,41.810000000000002
499.39759683609009,80.0,0.0,77.420000000000002,41.909999999999997
500.3984808921814,80.0,0.0,77.069999999999993,42.039999999999999
501.39925479888916,80.0,0.0,77.260000000000005,41.880000000000003
502.40010285377502,80.0,0.0,77.489999999999995,41.969999999999999
503.4008309841156,80.0,0.0,77.420000000000002,41.909999999999997
504.40172481536865,80.0,0.0,77.359999999999999,41.939999999999998
505.40247583389282,80.0,0.0,77.420000000000002,41.909999999999997
506.40320086479187,80.0,0.0,77.420000000000002,42.039999999999999
507.40396595001221,80.0,0.0,77.230000000000004,42.039999999999999
508.40470290184021,80.0,0.0,77.359999999999999,42.170000000000002
509.4054639339447,80.0,0.0,77.359999999999999,42.229999999999997
510.40627884864807,80.0,0.0,77.420000000000002,42.200000000000003
511.40711688995361,80.0,0.0,77.359999999999999,42.100000000000001
512.40786790847778,80.0,0.0,77.359999999999999,42.299999999999997
513.40860080718994,80.0,0.0,77.489999999999995,42.299999999999997
514.40934896469116,80.0,0.0,77.489999999999995,42.229999999999997
515.41011381149292,80.0,0.0,77.260000000000005,42.07
516.41100692749023,80.0,0.0,77.519999999999996,42.299999999999997
517.41172289848328,80.0,0.0,77.75,42.229999999999997
518.41247487068176,80.0,0.0,77.519999999999996,42.200000000000003
519.41320586204529,80.0,0.0,77.650000000000006,42.229999999999997
520.41400694847107,80.0,0.0,77.709999999999994,42.299999999999997
521.41480684280396,80.0,0.0,77.75,42.140000000000001
522.41559100151062,80.0,0.0,77.680000000000007,42.329999999999998
523.41633200645447,80.0,0.0,77.620000000000005,42.229999999999997
524.41694092750549,80.0,0.0,77.709999999999994,42.229999999999997
525.41762900352478,80.0,0.0,77.870000000000005,42.359999999999999
526.41836500167847,80.0,0.0,77.870000000000005,42.229999999999997
527.41926193237305,80.0,0.0,77.780000000000001,42.170000000000002
528.42005801200867,80.0,0.0,77.870000000000005,42.170000000000002
529.42097187042236,80.0,0.0,77.780000000000001,42.259999999999998
530.42191481590271,80.0,0.0,77.870000000000005,42.359999999999999
531.4226667881012,80.0,0.0,77.939999999999998,42.359999999999999
532.42342281341553,80.0,0.0,77.969999999999999,42.490000000000002
533.4243369102478,80.0,0.0,77.870000000000005,42.299999999999997
534.42518281936646,80.0,0.0,77.969999999999999,42.549999999999997
535.42598795890808,80.0,0.0,78.040000000000006,42.43
536.42671680450439,80.0,0.0,77.909999999999997,42.390000000000001
537.42755079269409,80.0,0.0,78.0,42.520000000000003
538.42832899093628,80.0,0.0,78.129999999999995,42.590000000000003
539.42909383773804,80.0,0.0,78.040000000000006,42.490000000000002
540.42987179756165,80.0,0.0,78.0,42.619999999999997
541.43062281608582,80.0,0.0,78.069999999999993,42.549999999999997
542.43141293525696,80.0,0.0,78.129999999999995,42.68
543.43222689628601,80.0,0.0,78.0,42.549999999999997
544.43295478820801,80.0,0.0,77.969999999999999,42.490000000000002
545.4338538646698,80.0,0.0,78.170000000000002,42.549999999999997
546.43457984924316,80.0,0.0,78.069999999999993,42.549999999999997
547.4353039264679,80.0,0.0,78.129999999999995,42.590000000000003
548.43603992462158,80.0,0.0,78.129999999999995,42.549999999999997
549.43679690361023,80.0,0.0,78.290000000000006,42.68
550.437579870224,80.0,0.0,78.230000000000004,42.490000000000002
551.43849802017212,80.0,0.0,78.200000000000003,42.490000000000002
552.43920493125916,80.0,0.0,78.170000000000002,42.549999999999997
553.43990397453308,80.0,0.0,78.290000000000006,42.649999999999999
554.44064092636108,80.0,0.0,78.390000000000001,42.43
555.4413468837738,80.0,0.0,78.329999999999998,42.520000000000003
556.44204092025757,80.0,0.0,78.260000000000005,42.649999999999999
557.44291687011719,80.0,0.0,78.390000000000001,42.780000000000001
558.44368481636047,80.0,0.0,78.390000000000001,42.780000000000001
559.44446182250977,80.0,0.0,78.329999999999998,42.619999999999997
560.44535088539124,80.0,0.0,78.359999999999999,42.939999999999998
561.44616198539734,80.0,0.0,78.390000000000001,42.909999999999997
562.44702982902527,80.0,0.0,78.329999999999998,42.880000000000003
563.44784593582153,80.0,0.0,78.390000000000001,42.909999999999997
564.44868183135986,80.0,0.0,78.390000000000001,42.780000000000001
565.4495689868927,80.0,0.0,78.329999999999998,42.880000000000003
566.45042586326599,80.0,0.0,78.390000000000001,42.880000000000003
567.45132684707642,80.0,0.0,78.290000000000006,42.880000000000003
568.45214700698853,80.0,0.0,78.329999999999998,42.880000000000003
569.45281291007996,80.0,0.0,78.329999999999998,42.939999999999998
570.45354986190796,80.0,0.0,78.390000000000001,42.880000000000003
571.45437979698181,80.0,0.0,78.260000000000005,42.880000000000003
572.45509386062622,80.0,0.0,78.329999999999998,42.75
573.45599794387817,80.0,0.0,78.390000000000001,42.880000000000003
574.45674395561218,80.0,0.0,78.390000000000001,42.880000000000003
575.45747399330139,80.0,0.0,78.329999999999998,42.880000000000003
576.45823979377747,80.0,0.0,78.200000000000003,42.880000000000003
577.45896291732788,80.0,0.0,78.390000000000001,42.939999999999998
578.45969891548157,80.0,0.0,78.579999999999998,42.909999999999997
579.46045684814453,80.0,0.0,78.359999999999999,43.009999999999998
580.46121191978455,80.0,0.0,78.329999999999998,42.909999999999997
581.46191000938416,80.0,0.0,78.420000000000002,42.810000000000002
582.46262979507446,80.0,0.0,78.489999999999995,42.840000000000003
583.46343088150024,80.0,0.0,78.390000000000001,43.009999999999998
584.46425700187683,80.0,0.0,78.390000000000001,42.969999999999999
585.46508288383484,80.0,0.0,78.549999999999997,43.170000000000002
586.46589088439941,80.0,0.0,78.579999999999998,43.07
587.46659588813782,80.0,0.0,78.519999999999996,43.170000000000002
588.46749997138977,80.0,0.0,78.620000000000005,43.229999999999997
589.46840786933899,80.0,0.0,78.650000000000006,43.200000000000003
590.46932482719421,80.0,0.0,78.390000000000001,43.259999999999998
591.47024202346802,80.0,0.0,78.780000000000001,43.170000000000002
592.47110486030579,80.0,0.0,78.620000000000005,43.259999999999998
593.47196483612061,80.0,0.0,78.650000000000006,43.200000000000003
594.47279691696167,80.0,0.0,78.780000000000001,43.200000000000003
595.47364282608032,80.0,0.0,78.620000000000005,43.229999999999997
596.47448801994324,80.0,0.0,78.620000000000005,43.299999999999997
597.47540497779846,80.0,0.0,78.579999999999998,43.200000000000003
598.47632193565369,80.0,0.0,78.650000000000006,43.200000000000003
599.47725200653076,80.0,0.0,78.780000000000001,43.170000000000002
600.47816801071167,80.0,0.0,78.650000000000006,43.259999999999998
601.47909593582153,80.0,0.0,78.579999999999998,43.200000000000003
602.47987079620361,80.0,0.0,78.780000000000001,43.229999999999997
603.48061180114746,80.0,0.0,78.620000000000005,43.200000000000003
604.48142290115356,80.0,0.0,78.75,43.259999999999998
605.48223495483398,80.0,0.0,78.909999999999997,43.130000000000003
606.48314380645752,80.0,0.0,78.680000000000007,43.170000000000002
607.48395681381226,80.0,0.0,78.709999999999994,43.259999999999998
608.48488187789917,80.0,0.0,78.909999999999997,43.200000000000003
609.48571586608887,80.0,0.0,78.75,43.390000000000001
610.48648500442505,80.0,0.0,78.709999999999994,43.329999999999998
611.48740696907043,80.0,0.0,79.040000000000006,43.259999999999998
612.48832988739014,80.0,0.0,78.840000000000003,43.329999999999998
613.48916792869568,80.0,0.0,78.870000000000005,43.590000000000003
614.4900848865509,80.0,0.0,78.939999999999998,43.390000000000001
615.49094700813293,80.0,0.0,78.75,43.460000000000001
616.4918417930603,80.0,0.0,78.810000000000002,43.329999999999998
617.49262189865112,80.0,0.0,78.810000000000002,43.490000000000002
618.49355602264404,80.0,0.0,78.709999999999994,43.520000000000003
619.49446892738342,80.0,0.0,78.969999999999999,43.490000000000002
620.49540281295776,80.0,0.0,78.780000000000001,43.359999999999999
621.49632692337036,80.0,0.0,78.939999999999998,43.549999999999997
622.49715900421143,80.0,0.0,78.870000000000005,43.359999999999999
623.49797487258911,80.0,0.0,78.75,43.460000000000001
624.49879002571106,80.0,0.0,78.870000000000005,43.390000000000001
625.49967098236084,80.0,0.0,78.909999999999997,43.490000000000002
626.50054597854614,80.0,0.0,78.780000000000001,43.390000000000001
627.50146293640137,80.0,0.0,78.909999999999997,43.390000000000001
628.50230097770691,80.0,0.0,78.939999999999998,43.259999999999998
629.50321793556213,80.0,0.0,78.840000000000003,43.460000000000001
630.50405597686768,80.0,0.0,78.840000000000003,43.490000000000002
631.50496196746826,80.0,0.0,78.870000000000005,43.549999999999997
632.50588989257812,80.0,0.0,78.75,43.460000000000001
633.50681495666504,80.0,0.0,78.969999999999999,43.649999999999999
634.5077269077301,80.0,0.0,78.870000000000005,43.520000000000003
635.50861597061157,80.0,0.0,79.069999999999993,43.549999999999997
636.50956201553345,80.0,0.0,78.969999999999999,43.520000000000003
637.51044392585754,80.0,0.0,78.909999999999997,43.649999999999999
638.51137185096741,80.0,0.0,79.040000000000006,43.490000000000002
639.51214981079102,80.0,0.0,78.909999999999997,43.649999999999999
640.51283597946167,80.0,0.0,78.840000000000003,43.460000000000001
641.51360392570496,80.0,0.0,79.159999999999997,43.649999999999999
642.5143518447876,80.0,0.0,79.200000000000003,43.520000000000003
643.51514601707458,80.0,0.0,79.040000000000006,43.590000000000003
644.51593089103699,80.0,0.0,79.230000000000004,43.590000000000003
645.51675295829773,80.0,0.0,79.329999999999998,43.520000000000003
646.51750493049622,80.0,0.0,79.099999999999994,43.590000000000003
647.51822400093079,80.0,0.0,78.909999999999997,43.520000000000003
648.51888799667358,80.0,0.0,79.040000000000006,43.590000000000003
649.51975393295288,80.0,0.0,79.329999999999998,43.520000000000003
650.5206458568573,80.0,0.0,79.0,43.549999999999997
651.52155089378357,80.0,0.0,79.099999999999994,43.75
652.52228283882141,80.0,0.0,79.159999999999997,43.75
653.52317380905151,80.0,0.0,79.040000000000006,43.810000000000002
654.52333688735962,80.0,0.0,79.290000000000006,43.75
655.52423691749573,80.0,0.0,78.909999999999997,43.710000000000001
656.52500295639038,80.0,0.0,78.969999999999999,43.75
657.52588391304016,80.0,0.0,79.200000000000003,43.780000000000001
658.52670097351074,80.0,0.0,79.129999999999995,43.710000000000001
659.52754688262939,80.0,0.0,79.159999999999997,43.909999999999997
660.52847290039062,80.0,0.0,79.200000000000003,43.68
661.52930784225464,80.0,0.0,78.969999999999999,43.909999999999997
662.53005194664001,80.0,0.0,79.099999999999994,43.909999999999997
663.53078198432922,80.0,0.0,79.260000000000005,43.880000000000003
664.53155589103699,80.0,0.0,79.290000000000006,43.75
665.53233599662781,80.0,0.0,79.129999999999995,43.649999999999999
666.53314089775085,80.0,0.0,79.260000000000005,43.810000000000002
667.5338888168335,80.0,0.0,79.390000000000001,43.710000000000001
668.53481578826904,80.0,0.0,79.290000000000006,43.710000000000001
669.53564596176147,80.0,0.0,79.290000000000006,43.710000000000001
670.53654980659485,80.0,0.0,79.260000000000005,43.710000000000001
671.53722882270813,80.0,0.0,79.260000000000005,43.780000000000001
672.5381498336792,80.0,0.0,79.260000000000005,43.75
673.53889799118042,80.0,0.0,79.390000000000001,43.780000000000001
674.53969883918762,80.0,0.0,79.260000000000005,43.810000000000002
675.54050993919373,80.0,0.0,79.159999999999997,43.780000000000001
676.54127383232117,80.0,0.0,79.069999999999993,43.880000000000003
677.54217982292175,80.0,0.0,79.159999999999997,43.710000000000001
678.54306292533875,80.0,0.0,79.0,43.68
679.54397082328796,80.0,0.0,79.099999999999994,43.840000000000003
680.54482197761536,80.0,0.0,78.909999999999997,43.939999999999998
681.54565596580505,80.0,0.0,78.840000000000003,43.840000000000003
682.54636788368225,80.0,0.0,79.040000000000006,43.880000000000003
683.54713487625122,80.0,0.0,79.099999999999994,43.880000000000003
684.54795479774475,80.0,0.0,78.969999999999999,43.909999999999997
685.54872679710388,80.0,0.0,78.969999999999999,43.909999999999997
686.54955387115479,80.0,0.0,79.099999999999994,43.969999999999999
687.55032682418823,80.0,0.0,79.040000000000006,43.909999999999997
688.55124092102051,80.0,0.0,79.0,43.909999999999997
689.55216193199158,80.0,0.0,79.099999999999994,43.909999999999997
690.55295991897583,80.0,0.0,78.969999999999999,43.780000000000001
691.55378580093384,80.0,0.0,78.969999999999999,43.939999999999998
692.55469989776611,80.0,0.0,79.099999999999994,43.710000000000001
693.5555419921875,80.0,0.0,78.969999999999999,44.100000000000001
694.55646085739136,80.0,0.0,79.069999999999993,43.909999999999997
695.55721998214722,80.0,0.0,79.0,43.939999999999998
696.55787086486816,80.0,0.0,79.129999999999995,43.939999999999998
697.55878496170044,80.0,0.0,78.969999999999999,44.130000000000003
698.55961680412292,80.0,0.0,79.069999999999993,43.969999999999999
699.56053590774536,80.0,0.0,78.969999999999999,44.07
700.56144380569458,80.0,0.0,79.0,44.130000000000003
701.56227588653564,80.0,0.0,79.159999999999997,44.130000000000003
702.5630669593811,80.0,0.0,78.969999999999999,44.170000000000002
703.56383991241455,80.0,0.0,78.939999999999998,44.229999999999997
704.5645899772644,80.0,0.0,79.040000000000006,44.170000000000002
705.56547999382019,80.0,0.0,79.040000000000006,44.229999999999997
706.56630897521973,80.0,0.0,79.099999999999994,44.229999999999997
707.5672550201416,80.0,0.0,79.359999999999999,44.170000000000002
708.5681848526001,80.0,0.0,79.159999999999997,44.229999999999997
709.56909084320068,80.0,0.0,79.099999999999994,44.07
710.57001399993896,80.0,0.0,79.329999999999998,44.170000000000002
711.57092094421387,80.0,0.0,79.069999999999993,44.170000000000002
712.57183384895325,80.0,0.0,79.390000000000001,44.170000000000002
713.57260680198669,80.0,0.0,79.359999999999999,44.130000000000003
714.57338094711304,80.0,0.0,79.290000000000006,44.170000000000002
715.57414889335632,80.0,0.0,79.260000000000005,44.170000000000002
716.57506084442139,80.0,0.0,79.359999999999999,44.229999999999997
717.57588696479797,80.0,0.0,79.290000000000006,44.170000000000002
718.57667899131775,80.0,0.0,79.290000000000006,44.170000000000002
719.57749080657959,80.0,0.0,79.390000000000001,44.170000000000002
720.57842993736267,80.0,0.0,79.290000000000006,44.229999999999997
721.5792088508606,80.0,0.0,79.290000000000006,44.170000000000002
722.5796229839325,80.0,0.0,79.260000000000005,44.170000000000002
723.58008790016174,80.0,0.0,79.290000000000006,44.229999999999997
724.58084487915039,80.0,0.0,79.290000000000006,44.170000000000002
725.58167099952698,80.0,0.0,79.359999999999999,44.170000000000002
726.58241701126099,80.0,0.0,79.329999999999998,44.200000000000003
727.58324193954468,80.0,0.0,79.420000000000002,44.200000000000003
728.58416199684143,80.0,0.0,79.359999999999999,44.200000000000003
729.58499479293823,80.0,0.0,79.420000000000002,44.259999999999998
730.58591389656067,80.0,0.0,79.489999999999995,44.259999999999998
731.58668184280396,80.0,0.0,79.579999999999998,44.259999999999998
732.58762001991272,80.0,0.0,79.489999999999995,44.130000000000003
733.5883469581604,80.0,0.0,79.579999999999998,44.289999999999999
734.58927798271179,80.0,0.0,79.549999999999997,44.359999999999999
735.59005880355835,80.0,0.0,79.489999999999995,44.289999999999999
736.59085488319397,80.0,0.0,79.519999999999996,44.359999999999999
737.59153079986572,80.0,0.0,79.709999999999994,44.170000000000002
738.59223389625549,80.0,0.0,79.680000000000007,44.520000000000003
739.59306597709656,80.0,0.0,79.620000000000005,44.289999999999999
740.5938777923584,80.0,0.0,79.620000000000005,44.460000000000001
741.59469485282898,80.0,0.0,79.620000000000005,44.359999999999999
742.59551382064819,80.0,0.0,79.549999999999997,44.460000000000001
743.59612584114075,80.0,0.0,79.579999999999998,44.390000000000001
744.59687995910645,80.0,0.0,79.549999999999997,44.460000000000001
745.59762692451477,80.0,0.0,79.620000000000005,44.329999999999998
746.59837985038757,80.0,0.0,79.549999999999997,44.420000000000002
747.59912800788879,80.0,0.0,79.620000000000005,44.359999999999999
748.59995579719543,80.0,0.0,79.680000000000007,44.390000000000001
749.60088801383972,80.0,0.0,79.549999999999997,44.130000000000003
750.60165190696716,80.0,0.0,79.620000000000005,44.289999999999999
751.60253500938416,80.0,0.0,79.680000000000007,44.229999999999997
752.60326480865479,80.0,0.0,79.739999999999995,44.130000000000003
753.6033079624176,80.0,0.0,79.489999999999995,44.229999999999997
754.60404491424561,80.0,0.0,79.709999999999994,44.229999999999997
755.60483694076538,80.0,0.0,79.739999999999995,44.170000000000002
756.60559892654419,80.0,0.0,79.620000000000005,44.289999999999999
757.60632181167603,80.0,0.0,79.680000000000007,44.200000000000003
758.60705780982971,80.0,0.0,79.780000000000001,44.329999999999998
759.60752296447754,80.0,0.0,79.680000000000007,44.130000000000003
760.6082649230957,80.0,0.0,79.739999999999995,44.359999999999999
761.60907196998596,80.0,0.0,79.620000000000005,44.259999999999998
762.60995292663574,80.0,0.0,79.549999999999997,44.170000000000002
763.61083292961121,80.0,0.0,79.620000000000005,44.170000000000002
764.61171102523804,80.0,0.0,79.620000000000005,44.329999999999998
765.61242890357971,80.0,0.0,79.579999999999998,44.100000000000001
766.61305499076843,80.0,0.0,79.519999999999996,44.100000000000001
767.61377191543579,80.0,0.0,79.739999999999995,44.259999999999998
768.61459279060364,80.0,0.0,79.489999999999995,44.170000000000002
769.61551785469055,80.0,0.0,79.390000000000001,44.289999999999999
770.61634588241577,80.0,0.0,79.650000000000006,44.420000000000002
771.6171658039093,80.0,0.0,79.620000000000005,44.329999999999998
772.61806702613831,80.0,0.0,79.489999999999995,44.549999999999997
773.6188600063324,80.0,0.0,79.739999999999995,44.359999999999999
774.61977481842041,80.0,0.0,79.620000000000005,44.520000000000003
775.62054181098938,80.0,0.0,79.620000000000005,44.420000000000002
776.62147784233093,80.0,0.0,79.650000000000006,44.549999999999997
777.62238001823425,80.0,0.0,79.519999999999996,44.420000000000002
778.62314701080322,80.0,0.0,79.489999999999995,44.549999999999997
779.62397694587708,80.0,0.0,79.620000000000005,44.359999999999999
780.62488198280334,80.0,0.0,79.620000000000005,44.549999999999997
781.62556886672974,80.0,0.0,79.620000000000005,44.420000000000002
782.62638998031616,80.0,0.0,79.709999999999994,44.460000000000001
783.62712097167969,80.0,0.0,79.680000000000007,44.359999999999999
784.62783288955688,80.0,0.0,79.489999999999995,44.460000000000001
785.62858295440674,80.0,0.0,79.620000000000005,44.390000000000001
786.62926292419434,80.0,0.0,79.680000000000007,44.359999999999999
787.62972092628479,80.0,0.0,79.620000000000005,44.390000000000001
788.63048195838928,80.0,0.0,79.739999999999995,44.390000000000001
789.63125085830688,80.0,0.0,79.620000000000005,44.420000000000002
790.6319739818573,80.0,0.0,79.650000000000006,44.520000000000003
791.63272881507874,80.0,0.0,79.709999999999994,44.329999999999998
792.63360691070557,80.0,0.0,79.870000000000005,44.520000000000003
793.63440489768982,80.0,0.0,79.620000000000005,44.359999999999999
794.63533592224121,80.0,0.0,79.870000000000005,44.619999999999997
795.63623380661011,80.0,0.0,79.840000000000003,44.490000000000002
796.63713383674622,80.0,0.0,79.810000000000002,44.490000000000002
797.63802886009216,80.0,0.0,80.030000000000001,44.490000000000002
798.6389479637146,80.0,0.0,79.709999999999994,44.619999999999997
799.63977885246277,80.0,0.0,79.810000000000002,44.490000000000002
800.64069294929504,80.0,0.0,79.909999999999997,44.579999999999998
801.64152383804321,80.0,0.0,79.709999999999994,44.579999999999998
802.64244079589844,80.0,0.0,79.909999999999997,44.490000000000002
803.64334797859192,80.0,0.0,79.709999999999994,44.359999999999999
804.64418292045593,80.0,0.0,79.620000000000005,44.490000000000002
805.64510679244995,80.0,0.0,80.0,44.490000000000002
806.6458740234375,80.0,0.0,79.810000000000002,44.710000000000001
807.6466748714447,80.0,0.0,79.739999999999995,44.619999999999997
808.64749383926392,80.0,0.0,79.810000000000002,44.68
809.64831495285034,80.0,0.0,79.680000000000007,44.75
810.64921593666077,80.0,0.0,79.359999999999999,44.710000000000001
811.65003800392151,80.0,0.0,79.489999999999995,44.710000000000001
812.65093994140625,80.0,0.0,79.290000000000006,44.619999999999997
813.65170693397522,80.0,0.0,79.450000000000003,44.68
814.65247297286987,80.0,0.0,79.359999999999999,44.649999999999999
815.65322399139404,80.0,0.0,79.519999999999996,44.619999999999997
816.65415501594543,80.0,0.0,79.329999999999998,44.619999999999997
817.65491986274719,80.0,0.0,79.420000000000002,44.520000000000003
818.65582394599915,80.0,0.0,79.579999999999998,44.619999999999997
819.65674996376038,80.0,0.0,79.489999999999995,44.619999999999997
820.65768480300903,80.0,0.0,79.709999999999994,44.490000000000002
821.6584689617157,80.0,0.0,79.620000000000005,44.520000000000003
822.65938496589661,80.0,0.0,79.549999999999997,44.579999999999998
823.66029787063599,80.0,0.0,79.739999999999995,44.359999999999999
824.66108894348145,80.0,0.0,79.680000000000007,44.490000000000002
825.66187286376953,80.0,0.0,79.519999999999996,44.549999999999997
826.66273784637451,80.0,0.0,79.969999999999999,44.490000000000002
827.66356301307678,80.0,0.0,79.620000000000005,44.490000000000002
828.66438388824463,80.0,0.0,79.519999999999996,44.549999999999997
829.6651668548584,80.0,0.0,79.840000000000003,44.520000000000003
830.66598391532898,80.0,0.0,79.739999999999995,44.390000000000001
831.66683101654053,80.0,0.0,79.709999999999994,44.619999999999997
832.66774582862854,80.0,0.0,79.680000000000007,44.329999999999998
833.66859197616577,80.0,0.0,79.709999999999994,44.549999999999997
834.66952896118164,80.0,0.0,79.620000000000005,44.460000000000001
835.67045283317566,80.0,0.0,79.709999999999994,44.490000000000002
836.67137098312378,80.0,0.0,79.620000000000005,44.549999999999997
837.67231583595276,80.0,0.0,79.620000000000005,44.420000000000002
838.67317581176758,80.0,0.0,79.549999999999997,44.420000000000002
839.67410898208618,80.0,0.0,79.549999999999997,44.390000000000001
840.67505097389221,80.0,0.0,79.680000000000007,44.359999999999999
841.67598295211792,80.0,0.0,79.450000000000003,44.520000000000003
842.67690181732178,80.0,0.0,79.709999999999994,44.460000000000001
843.67776584625244,80.0,0.0,79.489999999999995,44.579999999999998
844.67868781089783,80.0,0.0,79.489999999999995,44.420000000000002
845.6794159412384,80.0,0.0,79.709999999999994,44.460000000000001
846.68006181716919,80.0,0.0,79.579999999999998,44.359999999999999
847.68090081214905,80.0,0.0,79.549999999999997,44.460000000000001
848.68173694610596,80.0,0.0,79.420000000000002,44.329999999999998
849.68265390396118,80.0,0.0,79.579999999999998,44.460000000000001
850.68339395523071,80.0,0.0,79.519999999999996,44.359999999999999
851.6842348575592,80.0,0.0,79.489999999999995,44.420000000000002
852.68515682220459,80.0,0.0,79.579999999999998,44.359999999999999
853.68608593940735,80.0,0.0,79.549999999999997,44.460000000000001
854.68702292442322,80.0,0.0,79.680000000000007,44.420000000000002
855.68795585632324,80.0,0.0,79.579999999999998,44.549999999999997
856.68874001502991,80.0,0.0,79.519999999999996,44.390000000000001
857.68952679634094,80.0,0.0,79.549999999999997,44.490000000000002
858.69045186042786,80.0,0.0,79.489999999999995,44.460000000000001
859.69138884544373,80.0,0.0,79.579999999999998,44.520000000000003
860.69230890274048,80.0,0.0,79.579999999999998,44.329999999999998
861.69324398040771,80.0,0.0,79.579999999999998,44.549999999999997
862.69399881362915,80.0,0.0,79.650000000000006,44.460000000000001
863.69480395317078,80.0,0.0,79.579999999999998,44.619999999999997
864.69572281837463,80.0,0.0,79.489999999999995,44.490000000000002
865.69652080535889,80.0,0.0,79.650000000000006,44.549999999999997
866.69732880592346,80.0,0.0,79.579999999999998,44.460000000000001
867.69813990592957,80.0,0.0,79.489999999999995,44.520000000000003
868.69892501831055,80.0,0.0,79.489999999999995,44.460000000000001
869.69983696937561,80.0,0.0,79.579999999999998,44.619999999999997
870.70077300071716,80.0,0.0,79.390000000000001,44.420000000000002
871.70170879364014,80.0,0.0,79.709999999999994,44.460000000000001
872.70262885093689,80.0,0.0,79.549999999999997,44.420000000000002
873.70347285270691,80.0,0.0,79.489999999999995,44.460000000000001
874.70433878898621,80.0,0.0,79.620000000000005,44.390000000000001
875.7052698135376,80.0,0.0,79.519999999999996,44.549999999999997
876.70618391036987,80.0,0.0,79.620000000000005,44.490000000000002
877.70714998245239,80.0,0.0,79.579999999999998,44.579999999999998
878.70807385444641,80.0,0.0,79.579999999999998,44.359999999999999
879.70898795127869,80.0,0.0,79.680000000000007,44.520000000000003
880.70987987518311,80.0,0.0,79.650000000000006,44.390000000000001
881.71067690849304,80.0,0.0,79.909999999999997,44.460000000000001
882.71159100532532,80.0,0.0,79.840000000000003,44.359999999999999
883.71243691444397,80.0,0.0,79.680000000000007,44.259999999999998
884.71318888664246,80.0,0.0,79.909999999999997,44.329999999999998
885.71400785446167,80.0,0.0,79.909999999999997,44.460000000000001
886.71482396125793,80.0,0.0,79.709999999999994,44.289999999999999
887.71559882164001,80.0,0.0,79.810000000000002,44.359999999999999
888.71653580665588,80.0,0.0,79.939999999999998,44.359999999999999
889.71737790107727,80.0,0.0,79.810000000000002,44.359999999999999
890.71816682815552,80.0,0.0,79.840000000000003,44.490000000000002
891.71908783912659,80.0,0.0,79.969999999999999,44.490000000000002
892.72000789642334,80.0,0.0,79.840000000000003,44.259999999999998
893.72092080116272,80.0,0.0,79.969999999999999,44.490000000000002
894.72184085845947,80.0,0.0,79.780000000000001,44.390000000000001
895.72267889976501,80.0,0.0,79.739999999999995,44.460000000000001
896.72350978851318,80.0,0.0,79.840000000000003,44.490000000000002
897.72443389892578,80.0,0.0,79.519999999999996,44.520000000000003
898.72535681724548,80.0,0.0,79.870000000000005,44.490000000000002

ex71.py

ex71.py Python Source, 2 KB

File contents

#-----------------------------------
# Model-based identification and estimation
# SS2019, A. Schaum
#-----------------------------------
# Python code for ex7-1: Luenberger observer design for problem 7.1
#-----------------------------------

# Import relevant python libraries
import matplotlib.pyplot as plt
import numpy as np
from scipy import integrate
import scipy.linalg as linalg
from scipy.integrate import odeint, ode

# Define structure for simulation
class simStruct:
  def __init__(self,A,B,C,T,iT,l):
    self.A = A
    self.B = B
    self.C = C
    self.T = T
    self.iT = iT
    self.tA = iT.dot(A).dot(T)
    self.tB = iT.dot(B)
    self.tC = C.dot(T)
    self.l = l

# Define right-hand-side of the ode
def dxdt(t,x,ss):
  u = 1.0*np.sin(1.0*t)
  xx = np.zeros(shape=(2,1))
  hz = np.zeros(shape=(2,1))
  xx[0] = x[0]
  xx[1] = x[1]
  hz[0] = x[2]
  hz[1] = x[3]
  y = ss.C.dot(xx)
  dxxdt = np.zeros(shape=(2,1))
  dhzdt = np.zeros(shape=(2,1))
  dxxdt[:,0] = ss.A.dot(xx)[:,0]  + ss.B.dot(u)[:,0]
  dhzdt[:,0] = ss.tA.dot(hz)[:,0] + ss.tB.dot(u)[:,0]
  cor = - ss.l*(ss.tC.dot(hz)-y)
  dhzdt = dhzdt + cor
  dxdt = np.zeros(shape=(4,1))
  dxdt[:,0] = np.append(dxxdt,dhzdt)
  return dxdt

# Set parameters
dt = 0.05
dta = 0.4
xx0 = np.zeros(shape=(2,1))
hz0 = np.zeros(shape=(2,1))
x0 = np.zeros(shape=(4,1))
xx0[:,0] = np.array([1.5,-1.0])
hz0[:,0] = np.array([-1.0,2.0])
x0[:,0] = np.append(xx0,hz0)

lam = -0.1
mu1 = -2.0
mu2 = -3.0
a21 = 0.5
b = 1.5

A = np.array([[lam,0.0],[a21,-1.0]])
B = np.array([[b],[0.0]])
C = np.array([0.0,1.0])

Ko = np.array([C,C.dot(A)])
iKo = linalg.inv(Ko)
tc = np.array([0.0,1.0])
hw = iKo.dot(tc)
T = np.array([hw,A.dot(hw)])
T = T.transpose()
iT = linalg.inv(T)

tA = iT.dot(A).dot(T)
a0 = -tA[0,1]
a1 = -tA[1,1]
l1 = mu1*mu2 - a0
l2 = -(mu1+mu2) - a1
l = np.array([[l1],[l2]])
Al = tA-l*C
print linalg.eig(Al)
struct = simStruct(A,B,C,T,iT,l)

#Solve ode
ss = ode(dxdt, jac=None)
ss.set_integrator('lsoda',method='bdf',max_step=0.01)#dopri5 as alternative
ss.set_initial_value(x0)#, 0)
ss.set_f_params(struct)

i = 1
j = 0
Tsim = 10.0
dt = 0.1
tN = int(Tsim/dt)
sol=np.zeros(shape=(5,int(Tsim/dt)+2))#
sol[1:3,0] = xx0[:,0]
sol[3:5,0] = T.dot(hz0)[:,0]

while ss.successful() and j*dt <= Tsim:
  ss.integrate(ss.t+dt)
  x = ss.y
  sol[0,(i-1)*tN+j+1]=((i-1)*tN+j+1)*dt
  sol[1,(i-1)*tN+j+1]=ss.y[0]
  sol[2,(i-1)*tN+j+1]=ss.y[1]
  sol[3,(i-1)*tN+j+1]=ss.y[2]
  sol[4,(i-1)*tN+j+1]=ss.y[3]
  ss.set_initial_value(ss.y)
  j += 1

#Graphical output
ttn = sol[0,:]
xxn = sol[1:3,:]
hzn = sol[3:5,:]
hxn = T.dot(hzn)

fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.grid()
p = ax1.plot(ttn,xxn[0,:],ttn,hxn[0,:])
ax2 = fig.add_subplot(2,1,2)
ax2.grid()
p = ax2.plot(ttn,xxn[1,:],ttn,hxn[1,:])
plt.show()

tclab_dataMIMO.csv

tclab_dataMIMO.csv text/comma-separated-values, 56 KB

File contents

0.0,0.0,0.0,19.030000000000001,19.129999999999999
1.0012209415435791,0.0,0.0,19.129999999999999,19.129999999999999
2.0017189979553223,0.0,0.0,19.09,19.030000000000001
3.0026400089263916,0.0,0.0,19.030000000000001,19.0
4.0035481452941895,0.0,0.0,19.0,19.030000000000001
5.0044641494750977,0.0,0.0,19.059999999999999,19.219999999999999
6.0053730010986328,0.0,0.0,19.030000000000001,19.09
7.0063090324401855,0.0,0.0,19.059999999999999,19.129999999999999
8.0072171688079834,0.0,0.0,19.059999999999999,19.030000000000001
9.0081419944763184,0.0,0.0,19.16,19.09
10.009052991867065,80.0,0.0,19.030000000000001,19.09
11.009994029998779,80.0,0.0,19.48,19.420000000000002
12.010900974273682,80.0,0.0,19.449999999999999,19.510000000000002
13.011789083480835,80.0,0.0,19.539999999999999,19.48
14.012737989425659,80.0,0.0,19.48,19.510000000000002
15.013666152954102,80.0,0.0,19.670000000000002,19.32
16.014563083648682,80.0,0.0,19.739999999999998,19.510000000000002
17.015473127365112,80.0,0.0,19.670000000000002,19.48
18.016375064849854,80.0,0.0,19.670000000000002,19.510000000000002
19.0173020362854,80.0,0.0,20.0,19.510000000000002
20.018238067626953,80.0,0.0,20.059999999999999,19.670000000000002
21.019152164459229,80.0,0.0,20.379999999999999,19.579999999999998
22.019905090332031,80.0,0.0,20.190000000000001,19.579999999999998
23.020835161209106,80.0,0.0,20.710000000000001,19.48
24.021726131439209,80.0,0.0,20.640000000000001,19.640000000000001
25.022645950317383,80.0,0.0,20.960000000000001,19.539999999999999
26.023543119430542,80.0,0.0,21.41,19.640000000000001
27.024487972259521,80.0,0.0,21.289999999999999,19.539999999999999
28.025305032730103,80.0,0.0,21.670000000000002,19.670000000000002
29.026246070861816,80.0,0.0,21.899999999999999,19.609999999999999
30.027193069458008,80.0,0.0,22.219999999999999,19.739999999999998
31.028131008148193,80.0,0.0,22.379999999999999,19.539999999999999
32.028890132904053,80.0,0.0,22.57,19.739999999999998
33.029793977737427,80.0,0.0,22.829999999999998,19.670000000000002
34.030719041824341,80.0,0.0,23.149999999999999,19.739999999999998
35.031654119491577,80.0,0.0,23.48,19.609999999999999
36.032534122467041,80.0,0.0,23.989999999999998,19.670000000000002
37.033453941345215,80.0,0.0,24.149999999999999,19.670000000000002
38.034397125244141,80.0,0.0,24.440000000000001,19.800000000000001
39.035324096679688,80.0,0.0,24.600000000000001,19.670000000000002
40.036250114440918,80.0,0.0,24.960000000000001,19.739999999999998
41.037158966064453,80.0,0.0,25.440000000000001,19.640000000000001
42.037982940673828,80.0,0.0,25.469999999999999,19.539999999999999
43.038928031921387,80.0,0.0,25.859999999999999,19.670000000000002
44.03985595703125,80.0,0.0,26.149999999999999,19.710000000000001
45.040785074234009,80.0,0.0,26.440000000000001,19.710000000000001
46.041687965393066,80.0,0.0,26.890000000000001,19.829999999999998
47.042575120925903,80.0,0.0,26.960000000000001,20.0
48.043354034423828,80.0,0.0,27.41,19.960000000000001
49.044266939163208,80.0,0.0,27.73,20.0
50.045122146606445,80.0,0.0,28.050000000000001,19.93
51.045971155166626,80.0,0.0,28.440000000000001,20.120000000000001
52.046735048294067,80.0,0.0,28.829999999999998,20.0
53.047518014907837,80.0,0.0,29.02,20.059999999999999
54.048424005508423,80.0,0.0,29.34,20.0
55.049350023269653,80.0,0.0,29.73,20.09
56.050264120101929,80.0,0.0,29.989999999999998,20.190000000000001
57.051190137863159,80.0,0.0,30.440000000000001,20.25
58.051591157913208,80.0,0.0,30.699999999999999,20.289999999999999
59.052467107772827,80.0,0.0,30.949999999999999,20.350000000000001
60.053395986557007,80.0,0.0,31.280000000000001,20.32
61.054139137268066,80.0,0.0,31.66,20.449999999999999
62.05492901802063,80.0,0.0,31.98,20.32
63.055706024169922,80.0,0.0,32.18,20.379999999999999
64.056442975997925,80.0,0.0,32.530000000000001,20.379999999999999
65.057178020477295,80.0,0.0,32.850000000000001,20.539999999999999
66.057949066162109,80.0,0.0,33.140000000000001,20.510000000000002
67.058619022369385,80.0,0.0,33.399999999999999,20.640000000000001
68.059123039245605,80.0,0.0,33.689999999999998,20.579999999999998
69.059968948364258,80.0,0.0,33.920000000000002,20.710000000000001
70.060898065567017,80.0,0.0,34.369999999999997,20.510000000000002
71.061769008636475,80.0,0.0,34.5,20.710000000000001
72.062668085098267,80.0,0.0,34.82,20.670000000000002
73.063585042953491,80.0,0.0,35.140000000000001,20.800000000000001
74.064463138580322,80.0,0.0,35.460000000000001,20.870000000000001
75.065381050109863,80.0,0.0,35.789999999999999,21.0
76.0661301612854,80.0,0.0,36.109999999999999,20.899999999999999
77.066982984542847,80.0,0.0,36.399999999999999,21.030000000000001
78.067773103713989,80.0,0.0,36.880000000000003,20.960000000000001
79.068549156188965,80.0,0.0,37.039999999999999,21.030000000000001
80.06941294670105,80.0,0.0,37.109999999999999,21.09
81.070341110229492,80.0,0.0,37.590000000000003,21.350000000000001
82.071120023727417,80.0,0.0,37.719999999999999,21.25
83.071956157684326,80.0,0.0,38.039999999999999,21.350000000000001
84.072810173034668,80.0,0.0,38.490000000000002,21.289999999999999
85.073728084564209,80.0,0.0,38.560000000000002,21.41
86.074687957763672,80.0,0.0,38.979999999999997,21.350000000000001
87.075621128082275,80.0,0.0,39.07,21.739999999999998
88.076442956924438,80.0,0.0,39.359999999999999,21.609999999999999
89.07725715637207,80.0,0.0,39.719999999999999,21.670000000000002
90.078072071075439,80.0,0.0,40.039999999999999,21.539999999999999
91.079031944274902,80.0,0.0,40.229999999999997,21.739999999999998
92.079965114593506,80.0,0.0,40.520000000000003,21.609999999999999
93.080909013748169,80.0,0.0,40.689999999999998,22.030000000000001
94.081652164459229,80.0,0.0,41.009999999999998,21.93
95.082596063613892,80.0,0.0,41.329999999999998,21.989999999999998
96.083418130874634,80.0,0.0,41.560000000000002,21.870000000000001
97.08431601524353,80.0,0.0,41.939999999999998,22.09
98.085239171981812,80.0,0.0,42.009999999999998,22.120000000000001
99.086091041564941,80.0,0.0,42.229999999999997,22.25
100.0870349407196,80.0,60.0,42.549999999999997,22.25
101.08798813819885,80.0,60.0,42.909999999999997,22.829999999999998
102.08893203735352,80.0,60.0,43.359999999999999,22.57
103.08987998962402,80.0,60.0,43.229999999999997,22.739999999999998
104.09082198143005,80.0,60.0,43.75,22.859999999999999
105.0917489528656,80.0,60.0,43.969999999999999,22.899999999999999
106.09247994422913,80.0,60.0,44.170000000000002,22.989999999999998
107.09341502189636,80.0,60.0,44.390000000000001,22.829999999999998
108.09435200691223,80.0,60.0,44.619999999999997,23.09
109.09527707099915,80.0,60.0,44.810000000000002,23.350000000000001
110.09619808197021,80.0,60.0,45.170000000000002,22.93
111.09712314605713,80.0,60.0,45.07,23.57
112.09805703163147,80.0,60.0,45.710000000000001,23.57
113.09898996353149,80.0,60.0,45.649999999999999,23.350000000000001
114.09976696968079,80.0,60.0,45.869999999999997,23.829999999999998
115.10070395469666,80.0,60.0,46.289999999999999,24.059999999999999
116.10147404670715,80.0,60.0,46.289999999999999,24.120000000000001
117.10240197181702,80.0,60.0,46.68,24.219999999999999
118.10327911376953,80.0,60.0,47.0,24.379999999999999
119.10419702529907,80.0,60.0,46.909999999999997,24.640000000000001
120.1050500869751,80.0,60.0,47.390000000000001,24.350000000000001
121.10599803924561,80.0,60.0,47.390000000000001,24.960000000000001
122.10692596435547,80.0,60.0,47.840000000000003,24.989999999999998
123.10781908035278,80.0,60.0,47.969999999999999,25.059999999999999
124.10875415802002,80.0,60.0,48.100000000000001,25.149999999999999
125.10965704917908,80.0,60.0,48.390000000000001,25.469999999999999
126.11058115959167,80.0,60.0,48.579999999999998,25.379999999999999
127.1114649772644,80.0,60.0,48.939999999999998,25.800000000000001
128.11234998703003,80.0,60.0,49.060000000000002,26.02
129.11321902275085,80.0,60.0,48.939999999999998,26.120000000000001
130.11415195465088,80.0,60.0,49.579999999999998,26.280000000000001
131.115079164505,80.0,60.0,49.450000000000003,26.219999999999999
132.11585211753845,80.0,60.0,49.840000000000003,26.760000000000002
133.11659812927246,80.0,60.0,50.060000000000002,26.57
134.11748313903809,80.0,60.0,50.030000000000001,26.989999999999998
135.11824202537537,80.0,60.0,50.420000000000002,26.920000000000002
136.11901307106018,80.0,60.0,50.579999999999998,27.5
137.11989498138428,80.0,60.0,50.869999999999997,27.5
138.12063407897949,80.0,60.0,50.869999999999997,27.469999999999999
139.12141299247742,80.0,60.0,51.219999999999999,27.73
140.1221239566803,80.0,60.0,51.479999999999997,27.989999999999998
141.1230411529541,80.0,60.0,51.509999999999998,28.210000000000001
142.12380909919739,80.0,60.0,51.609999999999999,28.34
143.12454915046692,80.0,60.0,51.93,28.370000000000001
144.12530207633972,80.0,60.0,52.159999999999997,28.440000000000001
145.1261031627655,80.0,60.0,52.189999999999998,28.789999999999999
146.12692093849182,80.0,60.0,52.479999999999997,29.18
147.12770295143127,80.0,60.0,52.770000000000003,29.02
148.12852501869202,80.0,60.0,52.799999999999997,29.370000000000001
149.12931704521179,80.0,60.0,53.060000000000002,29.5
150.13023209571838,80.0,60.0,53.25,29.859999999999999
151.13104009628296,80.0,60.0,53.289999999999999,29.66
152.13177609443665,80.0,60.0,53.479999999999997,30.239999999999998
153.13253498077393,80.0,60.0,53.670000000000002,30.120000000000001
154.13326907157898,80.0,60.0,54.030000000000001,30.440000000000001
155.13399815559387,80.0,60.0,54.289999999999999,30.600000000000001
156.13474106788635,80.0,60.0,54.219999999999999,30.699999999999999
157.13548803329468,80.0,60.0,54.539999999999999,30.82
158.13639307022095,80.0,60.0,54.670000000000002,30.949999999999999
159.13729405403137,80.0,60.0,54.740000000000002,31.050000000000001
160.13806915283203,80.0,60.0,54.93,31.18
161.13888311386108,80.0,60.0,55.280000000000001,31.600000000000001
162.13962602615356,80.0,60.0,55.409999999999997,31.57
163.14044904708862,80.0,60.0,55.539999999999999,31.890000000000001
164.14127016067505,80.0,60.0,55.899999999999999,31.920000000000002
165.14204406738281,80.0,60.0,56.030000000000001,32.049999999999997
166.14287710189819,80.0,60.0,56.090000000000003,32.469999999999999
167.14380097389221,80.0,60.0,56.409999999999997,32.560000000000002
168.1445951461792,80.0,60.0,56.380000000000003,32.630000000000003
169.14543008804321,80.0,60.0,56.57,32.600000000000001
170.14620304107666,80.0,60.0,56.899999999999999,33.109999999999999
171.14693212509155,80.0,60.0,56.960000000000001,33.210000000000001
172.14766407012939,80.0,60.0,57.189999999999998,32.850000000000001
173.14840698242188,80.0,60.0,57.310000000000002,33.5
174.14915800094604,80.0,60.0,57.509999999999998,33.600000000000001
175.14998507499695,80.0,60.0,57.57,33.630000000000003
176.15083694458008,80.0,60.0,57.670000000000002,34.049999999999997
177.15154409408569,80.0,60.0,57.960000000000001,34.210000000000001
178.15230512619019,80.0,60.0,58.280000000000001,33.82
179.15310907363892,80.0,60.0,58.380000000000003,34.530000000000001
180.15401411056519,80.0,60.0,58.409999999999997,34.789999999999999
181.15493011474609,80.0,60.0,58.729999999999997,34.689999999999998
182.15585803985596,80.0,60.0,58.640000000000001,34.82
183.15675210952759,80.0,60.0,58.990000000000002,35.079999999999998
184.15752196311951,80.0,60.0,58.990000000000002,35.140000000000001
185.15838408470154,80.0,60.0,58.990000000000002,35.530000000000001
186.15930199623108,80.0,60.0,59.509999999999998,35.43
187.16021609306335,80.0,60.0,59.380000000000003,35.850000000000001
188.16106414794922,80.0,60.0,59.439999999999998,36.079999999999998
189.16199994087219,80.0,60.0,59.890000000000001,35.82
190.16256308555603,80.0,60.0,60.090000000000003,36.329999999999998
191.16335105895996,80.0,60.0,60.119999999999997,36.530000000000001
192.1641161441803,80.0,60.0,60.18,36.590000000000003
193.16503214836121,80.0,60.0,60.380000000000003,36.299999999999997
194.16579294204712,80.0,60.0,60.310000000000002,36.75
195.16671800613403,80.0,60.0,60.57,37.009999999999998
196.1675820350647,80.0,60.0,60.829999999999998,36.689999999999998
197.16849803924561,80.0,60.0,60.990000000000002,37.240000000000002
198.16940808296204,80.0,60.0,61.119999999999997,37.140000000000001
199.17015910148621,80.0,60.0,61.280000000000001,37.560000000000002
200.17107009887695,80.0,60.0,61.409999999999997,37.719999999999999
201.17194509506226,80.0,60.0,61.759999999999998,37.619999999999997
202.17288994789124,80.0,60.0,61.759999999999998,37.950000000000003
203.17379117012024,80.0,60.0,61.960000000000001,38.039999999999999
204.17471504211426,80.0,60.0,61.990000000000002,38.009999999999998
205.17562508583069,80.0,60.0,62.020000000000003,38.460000000000001
206.17638301849365,80.0,60.0,62.369999999999997,38.560000000000002
207.17715811729431,80.0,60.0,62.469999999999999,38.369999999999997
208.17788815498352,80.0,60.0,62.600000000000001,38.43
209.17884802818298,80.0,60.0,62.659999999999997,38.560000000000002
210.17978811264038,80.0,60.0,62.890000000000001,38.909999999999997
211.18070602416992,80.0,60.0,62.950000000000003,38.659999999999997
212.18145895004272,80.0,60.0,63.310000000000002,38.979999999999997
213.18239212036133,80.0,60.0,63.280000000000001,39.240000000000002
214.18333411216736,80.0,60.0,63.18,39.619999999999997
215.18427515029907,80.0,60.0,63.630000000000003,39.719999999999999
216.18519997596741,80.0,60.0,63.439999999999998,39.560000000000002
217.18615794181824,80.0,60.0,63.729999999999997,39.850000000000001
218.18700003623962,80.0,60.0,63.920000000000002,39.590000000000003
219.18793511390686,80.0,60.0,64.049999999999997,39.979999999999997
220.18872499465942,80.0,60.0,64.340000000000003,40.359999999999999
221.18967008590698,80.0,60.0,64.310000000000002,40.359999999999999
222.19051003456116,80.0,60.0,64.469999999999999,40.560000000000002
223.19144201278687,80.0,60.0,64.469999999999999,40.399999999999999
224.19236302375793,80.0,60.0,64.469999999999999,40.939999999999998
225.19330716133118,80.0,60.0,64.730000000000004,41.100000000000001
226.19424510002136,80.0,60.0,64.790000000000006,40.880000000000003
227.19502711296082,80.0,60.0,65.019999999999996,41.390000000000001
228.19595193862915,80.0,60.0,65.150000000000006,41.619999999999997
229.19688701629639,80.0,60.0,65.310000000000002,41.490000000000002
230.19766616821289,80.0,60.0,65.469999999999999,41.619999999999997
231.19859409332275,80.0,60.0,65.5,42.170000000000002
232.19948816299438,80.0,60.0,65.5,42.259999999999998
233.2004280090332,80.0,60.0,65.849999999999994,42.140000000000001
234.2013680934906,80.0,60.0,65.920000000000002,42.299999999999997
235.20230412483215,80.0,60.0,65.950000000000003,42.390000000000001
236.20323395729065,80.0,60.0,66.049999999999997,42.460000000000001
237.20417094230652,80.0,60.0,66.239999999999995,42.619999999999997
238.20510315895081,80.0,60.0,66.239999999999995,42.75
239.20603799819946,80.0,60.0,66.269999999999996,42.810000000000002
240.20695805549622,80.0,60.0,66.400000000000006,42.840000000000003
241.20788908004761,80.0,60.0,66.400000000000006,42.969999999999999
242.20872712135315,80.0,60.0,66.629999999999995,42.880000000000003
243.20966410636902,80.0,60.0,66.719999999999999,43.460000000000001
244.2105450630188,80.0,60.0,66.849999999999994,43.329999999999998
245.21138000488281,80.0,60.0,67.010000000000005,43.520000000000003
246.21218705177307,80.0,60.0,67.140000000000001,43.420000000000002
247.21311211585999,80.0,60.0,67.209999999999994,43.68
248.21404504776001,80.0,60.0,67.299999999999997,43.649999999999999
249.2149829864502,80.0,60.0,67.430000000000007,43.939999999999998
250.21576404571533,80.0,60.0,67.530000000000001,43.840000000000003
251.21671295166016,80.0,60.0,67.469999999999999,43.909999999999997
252.21763896942139,80.0,60.0,67.790000000000006,44.229999999999997
253.21856307983398,80.0,60.0,67.760000000000005,44.359999999999999
254.21934199333191,80.0,60.0,67.819999999999993,44.0
255.22026395797729,80.0,60.0,67.980000000000004,44.649999999999999
256.2211229801178,80.0,60.0,68.049999999999997,44.549999999999997
257.2220630645752,80.0,60.0,68.140000000000001,44.390000000000001
258.22289299964905,80.0,60.0,68.170000000000002,44.880000000000003
259.22381806373596,80.0,60.0,68.079999999999998,45.100000000000001
260.22465515136719,80.0,60.0,68.239999999999995,44.75
261.22558212280273,80.0,60.0,68.5,45.289999999999999
262.22651505470276,80.0,60.0,68.370000000000005,45.390000000000001
263.22743511199951,80.0,60.0,68.530000000000001,45.68
264.22837710380554,80.0,60.0,68.719999999999999,45.549999999999997
265.22916007041931,80.0,60.0,68.879999999999995,45.649999999999999
266.22994303703308,80.0,60.0,69.079999999999998,45.68
267.23088097572327,80.0,60.0,68.980000000000004,46.0
268.23176312446594,80.0,60.0,69.079999999999998,45.710000000000001
269.2325279712677,80.0,60.0,69.299999999999997,45.579999999999998
270.23344898223877,80.0,60.0,69.269999999999996,46.130000000000003
271.23438715934753,80.0,60.0,69.530000000000001,46.359999999999999
272.23522114753723,80.0,60.0,69.459999999999994,46.159999999999997
273.23614811897278,80.0,60.0,69.400000000000006,46.420000000000002
274.23698210716248,80.0,60.0,69.819999999999993,46.619999999999997
275.2379150390625,80.0,60.0,69.659999999999997,46.359999999999999
276.23884105682373,80.0,60.0,69.75,46.740000000000002
277.23977899551392,80.0,60.0,69.75,46.909999999999997
278.24071717262268,80.0,60.0,69.849999999999994,46.450000000000003
279.24163007736206,80.0,60.0,70.079999999999998,46.939999999999998
280.24252915382385,80.0,60.0,70.079999999999998,47.100000000000001
281.24345517158508,80.0,60.0,70.010000000000005,47.259999999999998
282.24418616294861,80.0,60.0,70.400000000000006,46.969999999999999
283.24494814872742,80.0,60.0,70.269999999999996,47.359999999999999
284.2457799911499,80.0,60.0,70.560000000000002,47.420000000000002
285.24670815467834,80.0,60.0,70.75,47.289999999999999
286.24763202667236,80.0,60.0,70.590000000000003,47.520000000000003
287.24854397773743,80.0,60.0,70.849999999999994,47.579999999999998
288.24937200546265,80.0,60.0,70.75,47.549999999999997
289.25028610229492,80.0,60.0,70.950000000000003,47.68
290.25121212005615,80.0,60.0,71.040000000000006,47.450000000000003
291.25213813781738,80.0,60.0,70.909999999999997,47.939999999999998
292.25285506248474,80.0,60.0,71.170000000000002,47.840000000000003
293.25366806983948,80.0,60.0,71.170000000000002,47.969999999999999
294.25460004806519,80.0,60.0,71.370000000000005,48.189999999999998
295.25550699234009,80.0,60.0,71.560000000000002,48.189999999999998
296.25627112388611,80.0,60.0,71.620000000000005,48.289999999999999
297.25719404220581,80.0,60.0,71.560000000000002,48.159999999999997
298.25811815261841,80.0,60.0,71.75,48.289999999999999
299.25903606414795,80.0,60.0,71.819999999999993,48.390000000000001
300.25981116294861,80.0,60.0,72.010000000000005,48.420000000000002
301.26073598861694,80.0,60.0,71.950000000000003,48.740000000000002
302.26164698600769,80.0,60.0,72.200000000000003,48.649999999999999
303.26249408721924,80.0,60.0,72.239999999999995,48.840000000000003
304.26340794563293,80.0,60.0,72.239999999999995,49.0
305.26429605484009,80.0,60.0,72.329999999999998,48.939999999999998
306.26520299911499,80.0,60.0,72.489999999999995,49.159999999999997
307.2661190032959,80.0,60.0,72.489999999999995,49.229999999999997
308.26698017120361,80.0,60.0,72.689999999999998,49.159999999999997
309.26793813705444,80.0,60.0,72.689999999999998,49.390000000000001
310.2688570022583,80.0,60.0,72.780000000000001,49.520000000000003
311.26961517333984,80.0,60.0,72.879999999999995,49.450000000000003
312.2705500125885,80.0,60.0,72.849999999999994,49.710000000000001
313.2714741230011,80.0,60.0,72.849999999999994,49.640000000000001
314.27233695983887,80.0,60.0,73.010000000000005,49.710000000000001
315.27325415611267,80.0,60.0,73.040000000000006,49.350000000000001
316.27417516708374,80.0,60.0,73.040000000000006,49.969999999999999
317.27509498596191,80.0,60.0,73.170000000000002,49.869999999999997
318.27601313591003,80.0,60.0,73.200000000000003,49.609999999999999
319.27694797515869,80.0,60.0,73.230000000000004,49.93
320.27770614624023,80.0,60.0,73.329999999999998,50.350000000000001
321.27862095832825,80.0,60.0,73.519999999999996,49.899999999999999
322.27954316139221,80.0,60.0,73.590000000000003,50.549999999999997
323.28045797348022,80.0,60.0,73.620000000000005,50.390000000000001
324.28136610984802,80.0,60.0,73.689999999999998,50.509999999999998
325.28230214118958,80.0,60.0,73.780000000000001,50.259999999999998
326.28317308425903,80.0,60.0,73.980000000000004,50.640000000000001
327.28410696983337,80.0,60.0,73.909999999999997,50.609999999999999
328.28481817245483,80.0,60.0,73.879999999999995,50.640000000000001
329.28574514389038,80.0,60.0,73.939999999999998,51.0
330.28665709495544,80.0,60.0,74.099999999999994,51.030000000000001
331.2874801158905,80.0,60.0,74.140000000000001,51.060000000000002
332.28824996948242,80.0,60.0,74.329999999999998,50.969999999999999
333.2890031337738,80.0,60.0,74.299999999999997,51.0
334.28991413116455,80.0,60.0,74.140000000000001,51.32
335.29066205024719,80.0,60.0,74.590000000000003,50.969999999999999
336.29139304161072,80.0,60.0,74.590000000000003,51.549999999999997
337.29208898544312,80.0,60.0,74.489999999999995,51.060000000000002
338.29285311698914,80.0,60.0,74.430000000000007,51.380000000000003
339.29376316070557,80.0,60.0,74.849999999999994,51.32
340.29455304145813,80.0,60.0,74.909999999999997,51.130000000000003
341.29527115821838,80.0,60.0,74.810000000000002,51.479999999999997
342.29603695869446,80.0,60.0,74.939999999999998,51.740000000000002
343.29684114456177,80.0,60.0,75.170000000000002,51.509999999999998
344.29762196540833,80.0,60.0,75.099999999999994,51.420000000000002
345.29835796356201,80.0,60.0,75.140000000000001,51.799999999999997
346.29909205436707,80.0,60.0,75.200000000000003,51.640000000000001
347.29983615875244,80.0,60.0,75.200000000000003,51.93
348.30056810379028,80.0,60.0,75.390000000000001,51.840000000000003
349.30097198486328,80.0,60.0,75.359999999999999,52.090000000000003
350.30177402496338,80.0,60.0,75.260000000000005,52.32
351.30267214775085,80.0,60.0,75.459999999999994,52.090000000000003
352.30358600616455,80.0,60.0,75.549999999999997,52.25
353.30449914932251,80.0,60.0,75.390000000000001,52.350000000000001
354.30541205406189,80.0,60.0,75.620000000000005,52.579999999999998
355.30632615089417,80.0,60.0,75.620000000000005,52.159999999999997
356.30725908279419,80.0,60.0,75.840000000000003,52.710000000000001
357.30817604064941,80.0,60.0,75.780000000000001,52.479999999999997
358.30909395217896,80.0,60.0,75.879999999999995,52.579999999999998
359.30969309806824,80.0,60.0,75.879999999999995,52.740000000000002
360.310467004776,80.0,60.0,76.069999999999993,52.710000000000001
361.31122207641602,80.0,60.0,76.010000000000005,52.710000000000001
362.3119900226593,80.0,60.0,76.069999999999993,52.93
363.31275010108948,80.0,60.0,76.200000000000003,52.829999999999998
364.31351900100708,80.0,60.0,76.459999999999994,52.609999999999999
365.31440615653992,80.0,60.0,76.260000000000005,52.829999999999998
366.31533002853394,80.0,60.0,76.420000000000002,53.090000000000003
367.31624317169189,80.0,60.0,76.390000000000001,52.740000000000002
368.31699299812317,80.0,60.0,76.299999999999997,53.189999999999998
369.31773209571838,80.0,60.0,76.489999999999995,53.130000000000003
370.31864714622498,80.0,60.0,76.650000000000006,53.030000000000001
371.31941509246826,80.0,60.0,76.519999999999996,53.090000000000003
372.3202440738678,80.0,60.0,76.780000000000001,53.219999999999999
373.3210129737854,80.0,60.0,76.969999999999999,53.509999999999998
374.32176208496094,80.0,60.0,76.810000000000002,53.219999999999999
375.32253193855286,80.0,60.0,76.810000000000002,53.609999999999999
376.32329916954041,80.0,60.0,77.040000000000006,53.32
377.32411313056946,80.0,60.0,76.969999999999999,53.770000000000003
378.32494306564331,80.0,60.0,76.969999999999999,53.740000000000002
379.32571816444397,80.0,60.0,77.069999999999993,53.609999999999999
380.32650113105774,80.0,60.0,77.290000000000006,53.509999999999998
381.32732009887695,80.0,60.0,77.230000000000004,54.0
382.32808613777161,80.0,60.0,77.260000000000005,54.0
383.32890510559082,80.0,60.0,77.579999999999998,53.740000000000002
384.32964897155762,80.0,60.0,77.290000000000006,54.0
385.330402135849,80.0,60.0,77.390000000000001,54.030000000000001
386.33121514320374,80.0,60.0,77.290000000000006,54.159999999999997
387.33196902275085,80.0,60.0,77.459999999999994,54.32
388.33279299736023,80.0,60.0,77.390000000000001,54.090000000000003
389.3335599899292,80.0,60.0,77.519999999999996,54.479999999999997
390.33438396453857,80.0,60.0,77.650000000000006,54.380000000000003
391.33520412445068,80.0,60.0,77.620000000000005,54.409999999999997
392.33610510826111,80.0,60.0,77.709999999999994,54.450000000000003
393.33686709403992,80.0,60.0,77.709999999999994,54.640000000000001
394.33762812614441,80.0,60.0,77.969999999999999,54.409999999999997
395.33833312988281,80.0,60.0,77.680000000000007,54.770000000000003
396.33921313285828,80.0,60.0,77.75,54.770000000000003
397.3399670124054,80.0,60.0,77.969999999999999,54.670000000000002
398.34009504318237,80.0,60.0,77.909999999999997,54.509999999999998
399.34077405929565,80.0,60.0,77.680000000000007,54.990000000000002
400.34145307540894,40.0,60.0,78.069999999999993,54.990000000000002
401.34218716621399,40.0,60.0,77.489999999999995,54.960000000000001
402.34296298027039,40.0,60.0,77.680000000000007,54.990000000000002
403.34376096725464,40.0,60.0,77.810000000000002,54.409999999999997
404.34459710121155,40.0,60.0,77.939999999999998,55.030000000000001
405.34531903266907,40.0,60.0,77.969999999999999,55.060000000000002
406.34604406356812,40.0,60.0,77.840000000000003,55.060000000000002
407.34686803817749,40.0,60.0,77.969999999999999,54.640000000000001
408.34761500358582,40.0,60.0,77.969999999999999,55.090000000000003
409.34833407402039,40.0,60.0,77.840000000000003,54.770000000000003
410.34925699234009,40.0,60.0,77.75,55.25
411.35018301010132,40.0,60.0,77.870000000000005,55.189999999999998
412.35097599029541,40.0,60.0,77.680000000000007,55.25
413.351891040802,40.0,60.0,77.650000000000006,55.350000000000001
414.35282516479492,40.0,60.0,77.709999999999994,55.539999999999999
415.35375213623047,40.0,60.0,77.549999999999997,55.159999999999997
416.35448002815247,40.0,60.0,77.620000000000005,55.219999999999999
417.35537600517273,40.0,60.0,77.420000000000002,55.509999999999998
418.35630798339844,40.0,60.0,77.549999999999997,55.700000000000003
419.35722494125366,40.0,60.0,77.420000000000002,55.219999999999999
420.35814595222473,40.0,60.0,77.290000000000006,55.57
421.35906314849854,40.0,60.0,77.290000000000006,55.670000000000002
422.35981798171997,40.0,60.0,77.200000000000003,55.509999999999998
423.36065602302551,40.0,60.0,77.099999999999994,55.859999999999999
424.36143612861633,40.0,60.0,77.040000000000006,55.859999999999999
425.3623640537262,40.0,60.0,76.909999999999997,55.859999999999999
426.36329698562622,40.0,60.0,76.879999999999995,55.829999999999998
427.36422896385193,40.0,60.0,76.939999999999998,55.670000000000002
428.3650951385498,40.0,60.0,76.620000000000005,55.990000000000002
429.36601209640503,40.0,60.0,76.709999999999994,55.93
430.36677694320679,40.0,60.0,76.489999999999995,55.899999999999999
431.36748909950256,40.0,60.0,76.129999999999995,55.740000000000002
432.36833810806274,40.0,60.0,76.010000000000005,56.030000000000001
433.36909198760986,40.0,60.0,76.200000000000003,56.060000000000002
434.37002396583557,40.0,60.0,75.810000000000002,55.770000000000003
435.3709499835968,40.0,60.0,75.719999999999999,56.060000000000002
436.37188315391541,40.0,60.0,75.719999999999999,56.219999999999999
437.37281107902527,40.0,60.0,75.590000000000003,55.700000000000003
438.37359595298767,40.0,60.0,75.620000000000005,56.060000000000002
439.37453103065491,40.0,60.0,75.359999999999999,55.93
440.37541007995605,40.0,60.0,75.230000000000004,56.189999999999998
441.37634205818176,40.0,60.0,75.390000000000001,56.119999999999997
442.37726497650146,40.0,60.0,75.170000000000002,55.960000000000001
443.37818598747253,40.0,60.0,75.069999999999993,56.149999999999999
444.37909007072449,40.0,60.0,74.849999999999994,56.219999999999999
445.38001394271851,40.0,60.0,74.909999999999997,56.030000000000001
446.38093209266663,40.0,60.0,74.810000000000002,56.119999999999997
447.38187193870544,40.0,60.0,74.620000000000005,56.25
448.38277411460876,40.0,60.0,74.519999999999996,56.25
449.38369703292847,40.0,60.0,74.299999999999997,56.32
450.38462615013123,40.0,60.0,74.359999999999999,56.030000000000001
451.38554310798645,40.0,60.0,74.140000000000001,56.090000000000003
452.38625812530518,40.0,60.0,74.069999999999993,55.670000000000002
453.38718008995056,40.0,60.0,73.810000000000002,56.32
454.38810014724731,40.0,60.0,73.810000000000002,56.219999999999999
455.38902711868286,40.0,60.0,73.780000000000001,55.899999999999999
456.38996911048889,40.0,60.0,73.400000000000006,56.189999999999998
457.39089107513428,40.0,60.0,73.519999999999996,56.32
458.39183402061462,40.0,60.0,73.519999999999996,55.93
459.39275407791138,40.0,60.0,73.200000000000003,56.350000000000001
460.39370107650757,40.0,60.0,73.230000000000004,56.350000000000001
461.39463114738464,40.0,60.0,72.849999999999994,56.280000000000001
462.39555406570435,40.0,60.0,72.980000000000004,56.380000000000003
463.39647316932678,40.0,60.0,72.819999999999993,56.409999999999997
464.39735412597656,40.0,60.0,72.359999999999999,56.479999999999997
465.39828109741211,40.0,60.0,72.620000000000005,56.119999999999997
466.39921903610229,40.0,60.0,72.329999999999998,56.539999999999999
467.40014004707336,40.0,60.0,72.459999999999994,56.479999999999997
468.40106797218323,40.0,60.0,72.200000000000003,56.060000000000002
469.40184998512268,40.0,60.0,71.950000000000003,56.609999999999999
470.40278315544128,40.0,60.0,72.140000000000001,56.219999999999999
471.40370917320251,40.0,60.0,71.879999999999995,56.280000000000001
472.40454697608948,40.0,60.0,71.75,56.57
473.40539312362671,40.0,60.0,71.780000000000001,56.640000000000001
474.40610504150391,40.0,60.0,71.459999999999994,56.409999999999997
475.40689611434937,40.0,60.0,71.489999999999995,56.439999999999998
476.40765810012817,40.0,60.0,71.299999999999997,56.539999999999999
477.40838813781738,40.0,60.0,71.459999999999994,56.189999999999998
478.40923404693604,40.0,60.0,71.200000000000003,56.609999999999999
479.41001105308533,40.0,60.0,71.200000000000003,56.670000000000002
480.41076612472534,40.0,60.0,71.109999999999999,56.149999999999999
481.41160297393799,40.0,60.0,71.040000000000006,56.350000000000001
482.41236305236816,40.0,60.0,70.659999999999997,56.640000000000001
483.41319608688354,40.0,60.0,70.620000000000005,56.770000000000003
484.41398811340332,40.0,60.0,70.590000000000003,56.479999999999997
485.41472816467285,40.0,60.0,70.299999999999997,56.799999999999997
486.41562414169312,40.0,60.0,70.269999999999996,56.729999999999997
487.41639399528503,40.0,60.0,70.400000000000006,56.609999999999999
488.41722416877747,40.0,60.0,70.170000000000002,56.640000000000001
489.41802406311035,40.0,60.0,70.109999999999999,56.439999999999998
490.4189350605011,40.0,60.0,69.920000000000002,56.640000000000001
491.41984510421753,40.0,60.0,69.659999999999997,56.770000000000003
492.42061614990234,40.0,60.0,69.849999999999994,56.350000000000001
493.42152404785156,40.0,60.0,69.75,56.829999999999998
494.42245316505432,40.0,60.0,69.659999999999997,56.479999999999997
495.42337703704834,40.0,60.0,69.430000000000007,56.799999999999997
496.42430901527405,40.0,60.0,69.590000000000003,56.729999999999997
497.42522501945496,40.0,60.0,69.459999999999994,56.729999999999997
498.42614698410034,40.0,60.0,69.400000000000006,56.729999999999997
499.42705607414246,40.0,60.0,69.239999999999995,56.770000000000003
500.42790603637695,40.0,60.0,69.140000000000001,56.770000000000003
501.42882013320923,40.0,60.0,69.010000000000005,56.609999999999999
502.42974305152893,40.0,60.0,69.010000000000005,56.700000000000003
503.43066215515137,40.0,60.0,68.849999999999994,56.859999999999999
504.43157696723938,40.0,60.0,68.790000000000006,56.799999999999997
505.43248701095581,40.0,60.0,68.819999999999993,56.829999999999998
506.43341302871704,40.0,60.0,68.560000000000002,56.770000000000003
507.43432903289795,40.0,60.0,68.689999999999998,56.479999999999997
508.43526315689087,40.0,60.0,68.400000000000006,56.509999999999998
509.43620896339417,40.0,60.0,68.400000000000006,56.829999999999998
510.4371280670166,40.0,60.0,68.400000000000006,56.409999999999997
511.43806409835815,40.0,60.0,68.140000000000001,56.859999999999999
512.43894195556641,40.0,60.0,68.209999999999994,56.57
513.43985795974731,40.0,60.0,68.140000000000001,56.609999999999999
514.44073796272278,40.0,60.0,68.010000000000005,56.93
515.44167995452881,40.0,60.0,67.920000000000002,56.859999999999999
516.44261503219604,40.0,60.0,67.590000000000003,56.799999999999997
517.44353413581848,40.0,60.0,67.819999999999993,56.859999999999999
518.44445109367371,40.0,60.0,67.629999999999995,56.93
519.44536805152893,40.0,60.0,67.590000000000003,57.060000000000002
520.44629001617432,40.0,60.0,67.689999999999998,56.700000000000003
521.44721603393555,40.0,60.0,67.430000000000007,56.770000000000003
522.44814109802246,40.0,60.0,67.590000000000003,56.829999999999998
523.44904208183289,40.0,60.0,67.430000000000007,56.479999999999997
524.44990205764771,40.0,60.0,67.239999999999995,56.670000000000002
525.45082807540894,40.0,60.0,67.400000000000006,56.990000000000002
526.45174503326416,40.0,60.0,67.239999999999995,56.409999999999997
527.45266699790955,40.0,60.0,67.209999999999994,56.859999999999999
528.45358204841614,40.0,60.0,66.980000000000004,56.859999999999999
529.45449709892273,40.0,60.0,67.109999999999999,56.770000000000003
530.45541310310364,40.0,60.0,67.010000000000005,56.899999999999999
531.4562520980835,40.0,60.0,66.849999999999994,56.770000000000003
532.45717811584473,40.0,60.0,66.819999999999993,56.799999999999997
533.45800995826721,40.0,60.0,66.890000000000001,56.509999999999998
534.4589409828186,40.0,60.0,66.689999999999998,56.670000000000002
535.45977997779846,40.0,60.0,66.849999999999994,56.729999999999997
536.46063113212585,40.0,60.0,66.659999999999997,56.859999999999999
537.46156716346741,40.0,60.0,66.599999999999994,56.609999999999999
538.46248602867126,40.0,60.0,66.5,56.439999999999998
539.46335816383362,40.0,60.0,66.530000000000001,56.770000000000003
540.46428203582764,40.0,60.0,66.599999999999994,56.829999999999998
541.46519708633423,40.0,60.0,66.400000000000006,56.409999999999997
542.46611499786377,40.0,60.0,66.370000000000005,56.770000000000003
543.46703815460205,40.0,60.0,66.370000000000005,56.729999999999997
544.46795797348022,40.0,60.0,66.310000000000002,56.280000000000001
545.46888113021851,40.0,60.0,66.140000000000001,56.770000000000003
546.46980500221252,40.0,60.0,66.079999999999998,56.770000000000003
547.47065901756287,40.0,60.0,66.079999999999998,56.32
548.47157716751099,40.0,60.0,66.109999999999999,56.729999999999997
549.47251296043396,40.0,60.0,65.950000000000003,56.479999999999997
550.47342896461487,40.0,60.0,65.790000000000006,56.729999999999997
551.47434401512146,40.0,60.0,65.730000000000004,56.609999999999999
552.47529315948486,40.0,60.0,65.819999999999993,56.539999999999999
553.47621297836304,40.0,60.0,65.530000000000001,56.409999999999997
554.47714114189148,40.0,60.0,65.730000000000004,56.539999999999999
555.47806406021118,40.0,60.0,65.530000000000001,56.509999999999998
556.47898411750793,40.0,60.0,65.599999999999994,56.700000000000003
557.47990107536316,40.0,60.0,65.629999999999995,56.479999999999997
558.48081803321838,40.0,60.0,65.269999999999996,56.829999999999998
559.48167514801025,40.0,60.0,65.560000000000002,56.640000000000001
560.48259210586548,40.0,60.0,65.400000000000006,56.380000000000003
561.48351502418518,40.0,60.0,65.310000000000002,56.539999999999999
562.48443102836609,40.0,60.0,65.439999999999998,56.350000000000001
563.48535799980164,40.0,60.0,65.150000000000006,56.479999999999997
564.48627614974976,40.0,60.0,65.269999999999996,56.609999999999999
565.48704695701599,40.0,60.0,65.269999999999996,56.479999999999997
566.48796200752258,40.0,60.0,65.019999999999996,56.700000000000003
567.4888801574707,40.0,60.0,65.180000000000007,56.479999999999997
568.48979902267456,40.0,60.0,64.950000000000003,56.280000000000001
569.49072194099426,40.0,60.0,65.209999999999994,56.409999999999997
570.49156904220581,40.0,60.0,65.209999999999994,56.380000000000003
571.49228715896606,40.0,60.0,65.049999999999997,56.380000000000003
572.49320697784424,40.0,60.0,65.109999999999999,56.439999999999998
573.49412298202515,40.0,60.0,64.980000000000004,56.32
574.49504399299622,40.0,60.0,64.920000000000002,56.640000000000001
575.49597001075745,40.0,60.0,64.890000000000001,56.25
576.49688005447388,40.0,60.0,64.530000000000001,56.539999999999999
577.49780511856079,40.0,60.0,64.819999999999993,56.25
578.49873304367065,40.0,60.0,64.629999999999995,56.25
579.49965310096741,40.0,60.0,64.5,56.509999999999998
580.50056600570679,40.0,60.0,64.629999999999995,56.670000000000002
581.50147604942322,40.0,60.0,64.310000000000002,56.479999999999997
582.50232815742493,40.0,60.0,64.469999999999999,56.409999999999997
583.50324702262878,40.0,60.0,64.310000000000002,56.189999999999998
584.50416398048401,40.0,60.0,64.150000000000006,56.640000000000001
585.50511503219604,40.0,60.0,64.469999999999999,56.57
586.50602698326111,40.0,60.0,64.209999999999994,56.479999999999997
587.50693917274475,40.0,60.0,64.280000000000001,56.539999999999999
588.50785493850708,40.0,60.0,64.239999999999995,56.609999999999999
589.5087730884552,40.0,60.0,64.109999999999999,56.32
590.5096869468689,40.0,60.0,64.209999999999994,56.539999999999999
591.51044797897339,40.0,60.0,64.109999999999999,56.57
592.51136612892151,40.0,60.0,64.019999999999996,56.640000000000001
593.51222205162048,40.0,60.0,64.079999999999998,56.149999999999999
594.51314210891724,40.0,60.0,63.600000000000001,56.609999999999999
595.51389598846436,40.0,60.0,63.920000000000002,56.509999999999998
596.51481008529663,40.0,60.0,63.789999999999999,56.25
597.51572108268738,40.0,60.0,63.759999999999998,56.57
598.51664113998413,40.0,60.0,63.859999999999999,56.57
599.51747107505798,40.0,60.0,63.659999999999997,56.539999999999999
600.51838207244873,40.0,80.0,63.700000000000003,56.409999999999997
601.51930499076843,40.0,80.0,63.789999999999999,56.539999999999999
602.52021598815918,40.0,80.0,63.600000000000001,56.829999999999998
603.52113199234009,40.0,80.0,63.890000000000001,56.539999999999999
604.52197909355164,40.0,80.0,63.600000000000001,56.479999999999997
605.52280211448669,40.0,80.0,63.729999999999997,56.770000000000003
606.5237181186676,40.0,80.0,63.82,56.509999999999998
607.5246319770813,40.0,80.0,63.5,56.799999999999997
608.52555012702942,40.0,80.0,63.630000000000003,56.729999999999997
609.52648115158081,40.0,80.0,63.5,56.799999999999997
610.52742409706116,40.0,80.0,63.600000000000001,56.829999999999998
611.52817916870117,40.0,80.0,63.5,56.609999999999999
612.52909708023071,40.0,80.0,63.18,56.670000000000002
613.53002095222473,40.0,80.0,63.530000000000001,56.829999999999998
614.53094410896301,40.0,80.0,63.439999999999998,56.640000000000001
615.53178596496582,40.0,80.0,63.369999999999997,56.859999999999999
616.53269410133362,40.0,80.0,63.530000000000001,56.93
617.53361296653748,40.0,80.0,63.119999999999997,56.509999999999998
618.53452396392822,40.0,80.0,63.409999999999997,56.609999999999999
619.53543615341187,40.0,80.0,63.210000000000001,56.93
620.53626108169556,40.0,80.0,63.149999999999999,56.960000000000001
621.53717613220215,40.0,80.0,63.310000000000002,56.729999999999997
622.53809213638306,40.0,80.0,63.18,57.060000000000002
623.5390100479126,40.0,80.0,63.340000000000003,57.149999999999999
624.53993010520935,40.0,80.0,63.310000000000002,56.770000000000003
625.5408570766449,40.0,80.0,63.119999999999997,57.280000000000001
626.54177212715149,40.0,80.0,63.149999999999999,57.189999999999998
627.54262113571167,40.0,80.0,63.049999999999997,56.93
628.54354214668274,40.0,80.0,63.119999999999997,57.25
629.54436802864075,40.0,80.0,63.020000000000003,56.990000000000002
630.54527997970581,40.0,80.0,62.829999999999998,57.350000000000001
631.54619216918945,40.0,80.0,62.950000000000003,57.380000000000003
632.5471019744873,40.0,80.0,63.020000000000003,57.020000000000003
633.54801511764526,40.0,80.0,62.789999999999999,57.509999999999998
634.5489330291748,40.0,80.0,63.079999999999998,57.509999999999998
635.54975605010986,40.0,80.0,62.700000000000003,57.439999999999998
636.55067014694214,40.0,80.0,63.049999999999997,57.539999999999999
637.55157995223999,40.0,80.0,62.950000000000003,57.409999999999997
638.55243515968323,40.0,80.0,62.789999999999999,57.479999999999997
639.55334615707397,40.0,80.0,62.990000000000002,57.149999999999999
640.55426406860352,40.0,80.0,62.789999999999999,57.600000000000001
641.55518102645874,40.0,80.0,62.990000000000002,57.770000000000003
642.55609107017517,40.0,80.0,62.789999999999999,57.219999999999999
643.55700016021729,40.0,80.0,62.729999999999997,57.640000000000001
644.5579149723053,40.0,80.0,62.890000000000001,57.729999999999997
645.55881214141846,40.0,80.0,62.829999999999998,57.409999999999997
646.55972695350647,40.0,80.0,62.890000000000001,57.799999999999997
647.56063795089722,40.0,80.0,62.829999999999998,57.990000000000002
648.56156396865845,40.0,80.0,62.630000000000003,57.539999999999999
649.56240296363831,40.0,80.0,62.859999999999999,57.890000000000001
650.56333494186401,40.0,80.0,62.659999999999997,57.770000000000003
651.56409096717834,40.0,80.0,62.729999999999997,58.149999999999999
652.56500816345215,40.0,80.0,62.859999999999999,57.770000000000003
653.56576108932495,40.0,80.0,62.57,58.020000000000003
654.56666207313538,40.0,80.0,62.630000000000003,57.93
655.56758403778076,40.0,80.0,62.829999999999998,57.960000000000001
656.56851100921631,40.0,80.0,62.369999999999997,58.219999999999999
657.56942105293274,40.0,80.0,62.859999999999999,58.020000000000003
658.57034206390381,40.0,80.0,62.409999999999997,58.25
659.57123613357544,40.0,80.0,62.729999999999997,58.409999999999997
660.57210111618042,40.0,80.0,62.729999999999997,57.890000000000001
661.57303214073181,40.0,80.0,62.340000000000003,58.380000000000003
662.57395195960999,40.0,80.0,62.630000000000003,58.350000000000001
663.57472705841064,40.0,80.0,62.369999999999997,58.219999999999999
664.57563996315002,40.0,80.0,62.469999999999999,58.509999999999998
665.57639002799988,40.0,80.0,62.539999999999999,58.439999999999998
666.57731604576111,40.0,80.0,62.280000000000001,58.539999999999999
667.57814908027649,40.0,80.0,62.439999999999998,58.020000000000003
668.57906603813171,40.0,80.0,62.25,58.350000000000001
669.579833984375,40.0,80.0,62.280000000000001,58.57
670.58075213432312,40.0,80.0,62.409999999999997,58.380000000000003
671.58150315284729,40.0,80.0,62.340000000000003,58.469999999999999
672.58234000205994,40.0,80.0,62.369999999999997,58.25
673.58324909210205,40.0,80.0,62.18,58.700000000000003
674.58416414260864,40.0,80.0,62.409999999999997,58.829999999999998
675.58491206169128,40.0,80.0,62.210000000000001,58.700000000000003
676.58581900596619,40.0,80.0,62.310000000000002,58.890000000000001
677.58674812316895,40.0,80.0,62.280000000000001,58.960000000000001
678.58766007423401,40.0,80.0,62.149999999999999,58.539999999999999
679.58856797218323,40.0,80.0,62.340000000000003,58.759999999999998
680.58933711051941,40.0,80.0,62.280000000000001,58.700000000000003
681.59009194374084,40.0,80.0,62.119999999999997,59.119999999999997
682.59101605415344,40.0,80.0,62.25,58.640000000000001
683.59184908866882,40.0,80.0,61.829999999999998,59.119999999999997
684.59276294708252,40.0,80.0,61.960000000000001,59.18
685.59368109703064,40.0,80.0,62.18,58.799999999999997
686.59459900856018,40.0,80.0,61.890000000000001,59.119999999999997
687.59550905227661,40.0,80.0,62.020000000000003,58.93
688.59642505645752,40.0,80.0,61.890000000000001,59.25
689.59733700752258,40.0,80.0,62.079999999999998,59.310000000000002
690.59824395179749,40.0,80.0,62.210000000000001,58.890000000000001
691.59898805618286,40.0,80.0,62.020000000000003,59.340000000000003
692.5999219417572,40.0,80.0,62.25,59.310000000000002
693.60082912445068,40.0,80.0,62.020000000000003,59.049999999999997
694.6016731262207,40.0,80.0,62.049999999999997,59.409999999999997
695.60242509841919,40.0,80.0,61.960000000000001,59.18
696.60333299636841,40.0,80.0,62.020000000000003,59.18
697.60423517227173,40.0,80.0,61.859999999999999,59.090000000000003
698.60514116287231,40.0,80.0,61.789999999999999,59.25
699.60606908798218,40.0,80.0,61.700000000000003,59.310000000000002
700.60697197914124,40.0,80.0,61.960000000000001,58.960000000000001
701.60789513587952,40.0,80.0,61.630000000000003,59.409999999999997
702.60883116722107,40.0,80.0,61.789999999999999,59.310000000000002
703.60958409309387,40.0,80.0,61.729999999999997,58.93
704.61053204536438,40.0,80.0,61.829999999999998,59.729999999999997
705.6113600730896,40.0,80.0,61.920000000000002,59.57
706.61227107048035,40.0,80.0,61.789999999999999,59.759999999999998
707.61302208900452,40.0,80.0,61.859999999999999,59.280000000000001
708.6139280796051,40.0,80.0,61.670000000000002,59.630000000000003
709.61475205421448,40.0,80.0,61.890000000000001,59.630000000000003
710.61567401885986,40.0,80.0,61.759999999999998,59.630000000000003
711.61649298667908,40.0,80.0,61.729999999999997,59.829999999999998
712.61740612983704,40.0,80.0,61.960000000000001,59.539999999999999
713.61816000938416,40.0,80.0,61.600000000000001,59.890000000000001
714.61906909942627,40.0,80.0,61.890000000000001,59.960000000000001
715.61998915672302,40.0,80.0,61.829999999999998,59.509999999999998
716.62084102630615,40.0,80.0,61.57,59.990000000000002
717.6217520236969,40.0,80.0,61.960000000000001,59.920000000000002
718.6226601600647,40.0,80.0,61.759999999999998,59.600000000000001
719.62343215942383,40.0,80.0,61.859999999999999,59.57
720.62434101104736,40.0,80.0,61.960000000000001,59.859999999999999
721.62525296211243,40.0,80.0,61.759999999999998,59.829999999999998
722.62616896629333,40.0,80.0,61.990000000000002,60.049999999999997
723.62706613540649,40.0,80.0,61.789999999999999,60.049999999999997
724.62797212600708,40.0,80.0,61.960000000000001,60.210000000000001
725.62888216972351,40.0,80.0,61.990000000000002,59.829999999999998
726.62979006767273,40.0,80.0,61.759999999999998,60.280000000000001
727.63061094284058,40.0,80.0,61.990000000000002,60.149999999999999
728.63151502609253,40.0,80.0,61.859999999999999,60.280000000000001
729.63228106498718,40.0,80.0,61.729999999999997,60.18
730.63318705558777,40.0,80.0,61.920000000000002,59.759999999999998
731.63410401344299,40.0,80.0,61.57,60.049999999999997
732.63501405715942,40.0,80.0,61.789999999999999,60.340000000000003
733.63583302497864,40.0,80.0,61.789999999999999,59.960000000000001
734.63674306869507,40.0,80.0,61.789999999999999,60.409999999999997
735.63768005371094,40.0,80.0,61.920000000000002,60.280000000000001
736.63858509063721,40.0,80.0,61.600000000000001,60.149999999999999
737.63951301574707,40.0,80.0,61.759999999999998,59.990000000000002
738.64037013053894,40.0,80.0,61.859999999999999,60.539999999999999
739.64127516746521,40.0,80.0,61.729999999999997,60.380000000000003
740.6421811580658,40.0,80.0,61.859999999999999,60.149999999999999
741.64309096336365,40.0,80.0,61.789999999999999,60.409999999999997
742.64400601387024,40.0,80.0,61.759999999999998,60.600000000000001
743.64484810829163,40.0,80.0,61.859999999999999,60.119999999999997
744.64576411247253,40.0,80.0,61.600000000000001,60.600000000000001
745.64667296409607,40.0,80.0,61.859999999999999,60.539999999999999
746.64758110046387,40.0,80.0,61.859999999999999,60.25
747.64849615097046,40.0,80.0,61.729999999999997,60.310000000000002
748.6494140625,40.0,80.0,61.890000000000001,60.310000000000002
749.65025615692139,40.0,80.0,61.630000000000003,60.280000000000001
750.65116500854492,40.0,80.0,61.789999999999999,60.439999999999998
751.65202903747559,40.0,80.0,61.729999999999997,60.670000000000002
752.65296316146851,40.0,80.0,61.670000000000002,60.729999999999997
753.65388202667236,40.0,80.0,61.920000000000002,60.439999999999998
754.65478610992432,40.0,80.0,61.700000000000003,60.600000000000001
755.65557312965393,40.0,80.0,61.829999999999998,60.700000000000003
756.6564769744873,40.0,80.0,62.020000000000003,60.859999999999999
757.65730214118958,40.0,80.0,61.859999999999999,60.729999999999997
758.65821695327759,40.0,80.0,61.920000000000002,60.469999999999999
759.65912508964539,40.0,80.0,61.789999999999999,60.670000000000002
760.65995597839355,40.0,80.0,61.789999999999999,60.789999999999999
761.66085815429688,40.0,80.0,61.890000000000001,60.380000000000003
762.66178202629089,40.0,80.0,61.630000000000003,60.890000000000001
763.66252493858337,40.0,80.0,61.670000000000002,60.57
764.66342401504517,40.0,80.0,61.57,60.890000000000001
765.6643271446228,40.0,80.0,61.700000000000003,60.630000000000003
766.66523313522339,40.0,80.0,61.829999999999998,60.729999999999997
767.66614603996277,40.0,80.0,61.630000000000003,60.600000000000001
768.66703915596008,40.0,80.0,61.57,60.700000000000003
769.6678581237793,40.0,80.0,61.5,60.729999999999997
770.66876101493835,40.0,80.0,61.630000000000003,61.020000000000003
771.66950011253357,40.0,80.0,61.469999999999999,60.920000000000002
772.67041301727295,40.0,80.0,61.670000000000002,61.020000000000003
773.67118215560913,40.0,80.0,61.630000000000003,60.57
774.67210817337036,40.0,80.0,61.310000000000002,61.020000000000003
775.672856092453,40.0,80.0,61.57,60.729999999999997
776.67375612258911,40.0,80.0,61.539999999999999,60.759999999999998
777.67456793785095,40.0,80.0,61.5,60.829999999999998
778.67534303665161,40.0,80.0,61.439999999999998,61.020000000000003
779.67625117301941,40.0,80.0,61.469999999999999,61.119999999999997
780.6771559715271,40.0,80.0,61.409999999999997,60.859999999999999
781.67805910110474,40.0,80.0,61.469999999999999,60.990000000000002
782.67889404296875,40.0,80.0,61.469999999999999,61.149999999999999
783.67979311943054,40.0,80.0,61.539999999999999,60.789999999999999
784.6807119846344,40.0,80.0,61.409999999999997,61.079999999999998
785.68159198760986,40.0,80.0,61.310000000000002,61.210000000000001
786.68250203132629,40.0,80.0,61.469999999999999,61.119999999999997
787.68342208862305,40.0,80.0,61.469999999999999,61.18
788.68433213233948,40.0,80.0,61.5,60.729999999999997
789.68515515327454,40.0,80.0,61.380000000000003,61.210000000000001
790.68605804443359,40.0,80.0,61.439999999999998,61.210000000000001
791.68680095672607,40.0,80.0,61.310000000000002,60.789999999999999
792.68762302398682,40.0,80.0,61.57,61.079999999999998
793.68835997581482,40.0,80.0,61.5,61.310000000000002
794.68927311897278,40.0,80.0,61.439999999999998,61.18
795.69017815589905,40.0,80.0,61.539999999999999,60.890000000000001
796.69107604026794,40.0,80.0,61.340000000000003,61.25
797.69196200370789,40.0,80.0,61.5,61.280000000000001
798.69286394119263,40.0,80.0,61.469999999999999,60.990000000000002
799.69376802444458,40.0,80.0,61.340000000000003,61.409999999999997
800.694669008255,40.0,80.0,61.600000000000001,61.310000000000002
801.695552110672,40.0,80.0,61.340000000000003,61.409999999999997
802.69642400741577,40.0,80.0,61.5,61.439999999999998
803.69717812538147,40.0,80.0,61.5,61.18
804.69801902770996,40.0,80.0,61.310000000000002,61.469999999999999
805.69890809059143,40.0,80.0,61.409999999999997,61.340000000000003
806.69981503486633,40.0,80.0,61.439999999999998,61.079999999999998
807.70072412490845,40.0,80.0,61.340000000000003,61.5
808.70162010192871,40.0,80.0,61.600000000000001,61.049999999999997
809.70252108573914,40.0,80.0,61.280000000000001,61.5
810.70331406593323,40.0,80.0,61.380000000000003,60.920000000000002
811.70423197746277,40.0,80.0,61.409999999999997,61.57
812.70513916015625,40.0,80.0,61.5,61.310000000000002
813.70604109764099,40.0,80.0,61.5,61.020000000000003
814.70694994926453,40.0,80.0,61.310000000000002,61.5
815.70785713195801,40.0,80.0,61.380000000000003,61.539999999999999
816.7086980342865,40.0,80.0,61.409999999999997,61.020000000000003
817.70959901809692,40.0,80.0,61.469999999999999,61.409999999999997
818.71052694320679,40.0,80.0,61.5,61.310000000000002
819.71143317222595,40.0,80.0,61.409999999999997,61.57
820.71236515045166,40.0,80.0,61.380000000000003,61.25
821.71329212188721,40.0,80.0,61.57,61.310000000000002
822.71423316001892,40.0,80.0,61.25,61.340000000000003
823.71500706672668,40.0,80.0,61.5,61.380000000000003
824.71593308448792,40.0,80.0,61.469999999999999,61.340000000000003
825.71684813499451,40.0,80.0,61.539999999999999,61.729999999999997
826.71777606010437,40.0,80.0,61.759999999999998,61.310000000000002
827.7186291217804,40.0,80.0,61.539999999999999,61.539999999999999
828.71954607963562,40.0,80.0,61.630000000000003,61.079999999999998
829.72046113014221,40.0,80.0,61.600000000000001,61.630000000000003
830.72137999534607,40.0,80.0,61.5,61.469999999999999
831.72229909896851,40.0,80.0,61.630000000000003,61.049999999999997
832.72324204444885,40.0,80.0,61.5,61.439999999999998
833.72414898872375,40.0,80.0,61.729999999999997,61.600000000000001
834.72507905960083,40.0,80.0,61.789999999999999,61.020000000000003
835.72586417198181,40.0,80.0,61.539999999999999,61.600000000000001
836.72682213783264,40.0,80.0,61.630000000000003,61.310000000000002
837.72772908210754,40.0,80.0,61.5,61.25
838.72865009307861,40.0,80.0,61.670000000000002,61.5
839.72949409484863,40.0,80.0,61.729999999999997,61.469999999999999
840.73043203353882,40.0,80.0,61.380000000000003,61.439999999999998
841.73135209083557,40.0,80.0,61.700000000000003,61.280000000000001
842.73229217529297,40.0,80.0,61.57,61.310000000000002
843.73321199417114,40.0,80.0,61.5,61.469999999999999
844.73413014411926,40.0,80.0,61.700000000000003,61.079999999999998
845.73504996299744,40.0,80.0,61.439999999999998,61.5
846.7359790802002,40.0,80.0,61.789999999999999,61.25
847.73690414428711,40.0,80.0,61.630000000000003,61.149999999999999
848.73766899108887,40.0,80.0,61.600000000000001,61.539999999999999
849.7385880947113,40.0,80.0,61.859999999999999,61.630000000000003
850.73950695991516,40.0,80.0,61.57,61.5
851.74035811424255,40.0,80.0,61.859999999999999,61.439999999999998
852.74118304252625,40.0,80.0,61.789999999999999,60.960000000000001
853.74195599555969,40.0,80.0,61.700000000000003,61.630000000000003
854.74288105964661,40.0,80.0,61.990000000000002,61.469999999999999
855.74382209777832,40.0,80.0,61.789999999999999,61.340000000000003
856.74474096298218,40.0,80.0,61.990000000000002,61.670000000000002
857.74565815925598,40.0,80.0,62.020000000000003,61.600000000000001
858.74657511711121,40.0,80.0,61.600000000000001,61.5
859.7474901676178,40.0,80.0,61.960000000000001,61.310000000000002
860.74842596054077,40.0,80.0,61.859999999999999,61.600000000000001
861.749351978302,40.0,80.0,61.859999999999999,61.759999999999998
862.75026917457581,40.0,80.0,61.890000000000001,61.210000000000001
863.75111794471741,40.0,80.0,61.600000000000001,61.890000000000001
864.75203800201416,40.0,80.0,61.890000000000001,61.630000000000003
865.75281596183777,40.0,80.0,61.789999999999999,61.5
866.75373911857605,40.0,80.0,61.759999999999998,61.890000000000001
867.75465798377991,40.0,80.0,61.890000000000001,61.630000000000003
868.75557494163513,40.0,80.0,61.57,61.380000000000003
869.75648999214172,40.0,80.0,61.890000000000001,61.759999999999998
870.75730109214783,40.0,80.0,61.789999999999999,61.670000000000002
871.7582221031189,40.0,80.0,61.539999999999999,61.829999999999998
872.75916314125061,40.0,80.0,61.859999999999999,61.700000000000003
873.7601101398468,40.0,80.0,61.630000000000003,61.789999999999999
874.76104211807251,40.0,80.0,61.789999999999999,61.859999999999999
875.76198816299438,40.0,80.0,61.670000000000002,61.789999999999999
876.76284503936768,40.0,80.0,61.5,61.630000000000003
877.76360297203064,40.0,80.0,61.759999999999998,61.920000000000002
878.76451897621155,40.0,80.0,61.630000000000003,61.990000000000002
879.76543998718262,40.0,80.0,61.670000000000002,61.920000000000002
880.76636505126953,40.0,80.0,61.700000000000003,61.439999999999998
881.76732397079468,40.0,80.0,61.57,62.020000000000003
882.76824998855591,40.0,80.0,61.789999999999999,61.890000000000001
883.76917505264282,40.0,80.0,61.670000000000002,61.539999999999999
884.77010011672974,40.0,80.0,61.630000000000003,61.890000000000001
885.77101898193359,40.0,80.0,61.829999999999998,61.960000000000001
886.77193713188171,40.0,80.0,61.829999999999998,61.409999999999997
887.77286100387573,40.0,80.0,61.789999999999999,61.700000000000003
888.77355909347534,40.0,80.0,61.859999999999999,61.829999999999998
889.77447509765625,40.0,80.0,61.670000000000002,61.759999999999998
890.77539396286011,40.0,80.0,62.020000000000003,61.670000000000002
891.77631616592407,40.0,80.0,61.789999999999999,61.729999999999997
892.77708411216736,40.0,80.0,61.990000000000002,61.960000000000001
893.77800297737122,40.0,80.0,61.829999999999998,61.5
894.77893614768982,40.0,80.0,61.759999999999998,61.859999999999999
895.77986001968384,40.0,80.0,62.020000000000003,61.920000000000002
896.78078103065491,40.0,80.0,61.859999999999999,61.759999999999998
897.78169703483582,40.0,80.0,61.859999999999999,61.920000000000002
898.78261804580688,40.0,80.0,61.960000000000001,61.859999999999999

ex74.py

ex74_tclab.py Python Source, 4 KB

File contents

#-----------------------------------
# Model-based identification and estimation
# SS2019, A. Schaum
#-----------------------------------
# Python code for ex7-4: Luenberger observer for the tclab
#-----------------------------------

# Import relevant python libraries
import numpy as np
import scipy.linalg as linalg
from scipy.integrate import ode
import matplotlib.pyplot as plt
import csv

# Define classes for setting system parameters and defining the rhs of the model equation

# Definition of class to handle the system structure, time vector and input signal
class simStruct:
  def __init__(self,m,cp,U,A,As,T0,e,s,a,Q,tQ,y,l):
    alpha = 1.0/(m*cp)*(U*(A+As)+8.0*e*s*A*T0**3.0)
    beta = 1.0/(m*cp)*(U*As+4.0*e*s*A*T0**3.0)
    self.A = np.array([[-alpha, beta],[beta,-alpha]])
    self.B = np.array([[a/(m*cp),0.0],[0.0, a/(m*cp)]])
    self.C = np.array([0.0,1.0])
    self.Q = Q
    self.tQ = tQ
    self.y = y
    self.l = l

# Definition of the rhs-function
def dxdt(t,T,s):
  #determine the index for the evaluation of the input Q and output y from the experiment
  ind = np.abs(t-s.tQ).argmin()
  if s.tQ[ind]> t:
    ind = ind-1
  Q = s.Q[ind]
  y = s.y[ind]
  T1 = T[0]
  T2 = T[1]
  dT1dt = s.A[0,0]*T1+s.A[0,1]*T2+s.B[0,0]*Q - s.l[0]*(T2-y)
  dT2dt = s.A[1,0]*T1+s.A[1,1]*T2            - s.l[1]*(T2-y)
  return [dT1dt,dT2dt]
#--------------------------------------
# Preparation of the necessary variables containing system structure and parameters, as well as simulation parameters
#--------------------------------------

# System parameters
m  = 0.004
cp = 500.0
U  = 10.0
A  = 1.0E-03
As = 2.05E-04
e  = 0.9
s  = 5.67E-08
a  = 0.015

# Simulation parameters:
# Sampling period
dta  = 1.0
# Simulation time
Tsim = 15.0 #minutes
Ns   = int(Tsim*60.0) #number of seconds
# Time vector (for discrete-time simulation)
tn   = np.linspace(0.0,Ns,1000)

#--------------------------------------
# Load experimental data from csv-file
#--------------------------------------

l0 = 899 #length of time vector in data set (here it is known a priori!)
l1 = 0
l = l0-l1
# Read out data from the csv-file 
rdata = np.zeros(shape=(l,5))
with open('tclab_data.csv','r') as file:
  reader = csv.reader(file, delimiter=',')
  i = 0
  for row in reader:
    #convert list of strings into floating point numpy array
    rdata[i,:] = np.asfarray(row,float) 
    i = i+1

texp = rdata[:,0]   #time array
y10e = rdata[l1,3]  #T1 initial value (considered as stationary value)
y20e = rdata[l1,4]  #T2 initial value
y1se = rdata[:,3]   #T1 array
y2se = rdata[:,4]   #T2 array
Qexp = rdata[:,1]   #Q-values
Tsim = rdata[l-1,0] #last time instant in seconds
y    = y2se - y20e

T0 = y10e+273.15 #stationary value of temperature
#----------------------------------------
# Solution of the continuous-time model
#----------------------------------------
# Set-up of structure for passing the system parameters, time vector and associated input signal
T10 = 273.15 + y10e
T20 = 273.15 + y20e
alpha = 1.0/(m*cp)*(U*(A+As)+8.0*e*s*A*T0**3.0)
beta = 1.0/(m*cp)*(U*As+4.0*e*s*A*T0**3.0)
mu1=-0.01
mu2=-0.2
l2 = -(mu1+mu2)-2.0*alpha
l1 = beta-(alpha*(alpha+	l2)-mu1*mu2)/beta
#l1 = 1.0
#l2 = 20.0
l = np.array([l1,l2])
struct = simStruct(m,cp,U,A,As,T0,e,s,a,Qexp,texp,y,l)

# Setting the structure of the simulation object according tp scipy.integrate.ode standard
ss = ode(dxdt, jac=None) #No explicit Jacobian of the dynamics used
ss.set_integrator('lsoda',method='bdf',max_step=0.01)#alternatively 'dopri5' for 5th order Runge-Kutta method
xx0 = [0.0,0.0]
ss.set_initial_value(xx0)
ss.set_f_params(struct)

# Determining the solution between prescribed points (the ones later used for the graphical output)
i = 1
ts = np.linspace(0,Ns,2000)
dt = ts[1]-ts[0]
x0 = np.zeros(shape=(2))
x0[0] = xx0[0]
x0[1] = xx0[1]
# Declaring the state variable
hx = np.zeros(shape=(2,ts.size))
# Setting the initial condition
hx[:,0] = np.array(x0)
# Loop for solution over all time intervals in ts-vector
while ss.successful() and i < ts.size:
    ss.integrate(ss.t + dt)
    hx[:,i] = ss.y
    i += 1 

#--------------------------------------
# Graphical output and comparison with experimental data
#--------------------------------------
fig = plt.figure(figsize=(6,6))
# Plot x1
ax1 = fig.add_subplot(3,1,1)
p = ax1.plot(ts,hx[0,:]+y10e,texp,y1se,':')
ax1.set_ylabel(r'$T_1$')
ax1.grid()

ax2 = fig.add_subplot(3,1,2)
p = ax2.plot(ts,hx[1,:]+y20e,texp,y2se,':')
ax2.set_ylabel(r'$T_2$')
ax2.grid()
# Plot u
# Cast the input signal (defined on tn) to the continuous-time vector ts
us = np.zeros(ts.size)
# determine index for the evaluation of the input
for i in range(0,ts.size):
  ind = np.abs(texp-ts[i]).argmin()
  if texp[ind]> ts[i]:
    ind = ind-1
  us[i] = Qexp[ind]

ax3 = fig.add_subplot(3,1,3)
p   = ax3.plot(ts,us)
ax3.grid()
ax3.set_xlabel('$t$')
ax3.set_ylabel('$u$')

plt.show() 

ex94_kbf

ex91_tclabKBF.py Python Source, 6 KB

File contents

#-----------------------------------
# Model-based identification and estimation
# SS2019, A. Schaum
#-----------------------------------
# Python code for ex9.1: Kalman-Bucy filter for the tclab operated close to the equilibrium for (Q1,Q2=0, T1=T2=T0)
# Note: Be careful about the similarity between the process noise covariance matrix Q and the heater inputs Q1,Q2 which are suppose to be independent!!
#-----------------------------------

# Import relevant python libraries
import numpy as np
import scipy.linalg as linalg
from scipy.integrate import ode
import matplotlib.pyplot as plt
import csv

# Define classes for setting system parameters and defining the rhs of the model equation

# Definition of class to handle the system structure, time vector and input signal
class simStruct:
  def __init__(self,Am,Bm,C,Q1,Q2,tQ,y1,y2,Q,R,iR,L,case):
    self.A = Am    #system dynamics matrix
    self.B = Bm    #system input matrix
    self.C = C     #system measurement (output) matrix
    self.Q1 = Q1   #heater 1
    self.Q2 = Q2   #heater 2
    self.tQ = tQ   #heater_time vector
    self.y1 = y1   #temperature 1
    self.y2 = y2   #temperature 2
    self.Q = Q     #covariance matrix of process noise
    self.R = R     #covariance matrix of measurement noise
    self.iR = iR   #inverse of R
    self.L = L     #stationary Kalman gain
    self.case = case

# Definition of the rhs-function
def dxdt(t,x,s):
  #The variable x contains the two temperature estimates, as well as the 
  #three independent entries of the error covariance matrix P = E[e(t)e^T(t)]
  #
  #Determine the index for the evaluation of the input Q and output y from the experiment
  ind = np.abs(t-s.tQ).argmin()
  if s.tQ[ind]> t:
    ind = ind-1
  Q1 = s.Q1[ind]
  Q2 = s.Q2[ind]
  Qv = np.array([ [Q1],[Q2] ])
  y1 = s.y1[ind]
  y2 = s.y2[ind]
  yv = np.array([ [y1],[y2] ])  
  #Assign variables
  hT  = np.array([x[0:2]]).transpose()
  P   = np.array([ [x[2], x[3]], [x[3], x[4]] ])
  L   = P.dot(C.transpose().dot(s.iR))
  #Be careful here to not confuse Q (covariance) and Qv (heater input)
  if case == 1:
    #In this case C is a row vector. Thus in the Ricatti Diff. Eq. C -> C.transpose() is substituted!!
    y = y1
    dhTdt = s.A.dot(hT) + s.B.dot(Qv) - s.L.dot(s.C.dot(hT)-y)
    Pdot = s.A.dot(P) + P.dot(s.A.transpose()) + s.Q - P.dot(s.C.transpose()).dot(s.iR).dot(s.C).dot(P)
  else:
    dhTdt = s.A.dot(hT) + s.B.dot(Qv) - s.L.dot(s.C.dot(hT)-yv)
    Pdot = s.A.dot(P) + P.dot(s.A.transpose()) + s.Q - P.dot(s.C).dot(s.iR).dot(s.C.transpose()).dot(P)

  pdotv = np.array([ [Pdot[0,0]], [Pdot[0,1]], [Pdot[1,1]] ])
  return np.append(dhTdt,pdotv,axis=0)
#--------------------------------------
# Preparation of the necessary variables containing system structure and parameters, as well as simulation parameters
#--------------------------------------

# System parameters
m  = 0.004
cp = 500.0
U  = 10.0
A  = 1.0E-03
As = 2.05E-04
e  = 0.9
s  = 5.67E-08
a  = 0.015

# Simulation parameters:
# Case of exercise: 1-> y=T1, 2-> y=[T1,T2]
case = 2
# Sampling period
dta  = 1.0
# Simulation time
Tsim = 15.0 #minutes
Ns   = int(Tsim*60.0) #number of seconds
# Time vector (for discrete-time simulation)
tn   = np.linspace(0.0,Ns,1000)

#--------------------------------------
# Load experimental data from csv-file
#--------------------------------------

l0 = 899 #length of time vector in data set (here it is known a priori!)
l1 = 0
l = l0-l1
# Read out data from the csv-file 
rdata = np.zeros(shape=(l,5))
#with open('tclab_data.csv','r') as file:
with open('tclab_dataMIMO.csv','r') as file:
  reader = csv.reader(file, delimiter=',')
  i = 0
  for row in reader:
    #convert list of strings into floating point numpy array
    rdata[i,:] = np.asfarray(row,float) 
    i = i+1

texp  = rdata[:,0]   #time array
Q1exp = rdata[:,1]   #Q-values
Q2exp = rdata[:,2]   #Q-values
y10e  = rdata[l1,3]  #T1 initial value (considered as stationary value)
y20e  = rdata[l1,4]  #T2 initial value
y1se  = rdata[:,3]   #T1 array
y2se  = rdata[:,4]   #T2 array
Tsim  = rdata[l-1,0] #last time instant in seconds
y1     = y1se - y10e
y2     = y2se - y20e

T0 = y10e+273.15 #stationary value of temperature
#----------------------------------------
# Solution of the continuous-time model
#----------------------------------------
# Set-up of structure for passing the system parameters, time vector and associated input signal
T10 = 273.15 + y10e
T20 = 273.15 + y20e
alpha = 1.0/(m*cp)*(U*(A+As)+8.0*e*s*A*T0**3.0)
beta = 1.0/(m*cp)*(U*As+4.0*e*s*A*T0**3.0)
b = a/(m*cp)
Am = np.array([ [-alpha,beta], [beta,-alpha] ])
Bm = np.array([ [b,0.0], [0.0,b] ])
#Case distinction
if case == 1:
  C = np.array([ [1.0,0.0] ])
else: 
  C  = np.array([ [1.0,0.0], [0.0,1.0] ])

#process and measurement noise covariance matrices (here chosen arbitrarily by random algorithm)
Q = 0.4*np.eye(2)
if case == 1:
  R = 0.2
  iR = 1.0/R
else:
  R = 0.2*np.eye(2)
  iR = linalg.inv(R)

#stationary covariance matrix
Pinf = linalg.solve_continuous_are(Am.transpose(),C.transpose(),Q,R)
L = Pinf.dot(C.transpose()).dot(iR)

struct = simStruct(Am,Bm,C,Q1exp,Q2exp,texp,y1,y2,Q,R,iR,L,case)

# Setting the structure of the simulation object according tp scipy.integrate.ode standard
ss = ode(dxdt, jac=None) #No explicit Jacobian of the dynamics used
ss.set_integrator('lsoda',method='bdf',max_step=0.01)#alternatively 'dopri5' for 5th order Runge-Kutta method
xx0 = [10.0,-10.0,1.0,0.0,1.0] #oder: hT1(0),hT2(0),P11(0),P12(0),P22(0)
ss.set_initial_value(xx0)
ss.set_f_params(struct)

# Determining the solution between prescribed points (the ones later used for the graphical output)
i = 1
ts = np.linspace(0,Ns,2000)
dt = ts[1]-ts[0]
hx0 = xx0[0:2]
hx = np.zeros(shape=(2,ts.size))
# Loop for solution over all time intervals in ts-vector
while ss.successful() and i < ts.size:
    ss.integrate(ss.t + dt)
    hx[:,i] = ss.y[0:2]
    i += 1 

#--------------------------------------
# Graphical output and comparison with experimental data
#--------------------------------------
fig = plt.figure(figsize=(6,6))
# Plot x1
ax1 = fig.add_subplot(3,1,1)
p = ax1.plot(ts,hx[0,:]+y10e,texp,y1se,':')
ax1.set_ylabel(r'$T_1$')
ax1.grid()

ax2 = fig.add_subplot(3,1,2)
p = ax2.plot(ts,hx[1,:]+y20e,texp,y2se,':')
ax2.set_ylabel(r'$T_2$')
ax2.grid()
# Plot u
# Cast the input signal (defined on tn) to the continuous-time vector ts
us1 = np.zeros(ts.size)
us2 = np.zeros(ts.size)
# determine index for the evaluation of the input
for i in range(0,ts.size):
  ind = np.abs(texp-ts[i]).argmin()
  if texp[ind]> ts[i]:
    ind = ind-1
  us1[i] = Q1exp[ind]
  us2[i] = Q2exp[ind]

ax3 = fig.add_subplot(3,1,3)
p   = ax3.plot(ts,us1,ts,us2)
ax3.grid()
ax3.set_xlabel('$t$')
ax3.set_ylabel('$Q1,Q2$')

plt.show() 
Research