{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Project文件\n", "使用不一样的训练方法" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Init Plugin\n", "Init Graph Optimizer\n", "Init Kernel\n" ] } ], "source": [ "from tensorflow import keras\n", "import tensorflow as tf\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "# from icecream.icecream import ic\n", "plt.style.use('ggplot')\n", "# plt.rcParams[\"figure.figsize\"] = (12,6)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Model construction\n", "\n", "## What should the input and output be?\n", "Input: [x, t]\n", "x as horizontal wave position, t as time\n", "\n", "Output: [u]\n", "u as vertical wave position\n", "\n", "[x, t]->y w.r.t the wave eqn, where x is the position.\n", "\n", "## IC and BC\n", "IC:\n", "u(0,x) = f(x)\n", "du/dt(0,x) = g(x)\n", "\n", "BC:\n", "u(0,t) = a(t)\n", "u(L,t) = b(t)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def init_fn(x, mu, sigma) -> np.array:\n", " return np.exp(-(x-mu)**2 / (2*sigma**2)) / (np.sqrt(2*np.pi) * sigma)\n", " \n", "L = 1 # length\n", "T = 4 # time\n", "c = 0.94\n", "dx = 0.01\n", "dt = 0.1\n", "sigma2 = (c*dt/dx) ** 2\n", "\n", "x = np.arange(0, L+dx, dx)\n", "t = np.arange(0, T+dt, dt)\n", "Nx = x.size\n", "Nt = t.size\n", "ic = init_fn(x, 0.5, 0.1)\n", "plt.plot(x, ic)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def get_model(input_dim, output_dim, width, depth, regularization_param=1e-7,\n", " act_func='tanh', output_act_func=False, random_seed=None)->keras.Sequential:\n", " \"\"\"This will build a fully connected model for you\n", "\n", " Parameters\n", " ----------\n", " input_dim : int\n", " [description]\n", " output_dim : int\n", " [description]\n", " width : int\n", " [description]\n", " depth : int\n", " [description]\n", " regularization_param : float\n", " [description], by default 1e-3\n", " act_func : str, optional\n", " [description], by default 'tanh'\n", " output_act_func : bool, optional\n", " Should the output layer use activation function?, by default False\n", " random_seed : int, optional\n", " [description], by default None\n", "\n", " Returns\n", " -------\n", " keras.Sequential\n", " An un-compiled model\n", " \"\"\"\n", " \n", " initializer = keras.initializers.RandomNormal(seed=random_seed)\n", " regularizer = keras.regularizers.l2(regularization_param)\n", "\n", " if act_func == 'sin':\n", " act_func = tf.math.sin\n", "\n", " all_layers = [keras.layers.InputLayer(input_shape=[input_dim])]\n", " all_layers += [keras.layers.Dense(width, activation=act_func,\n", " kernel_initializer=initializer,\n", " bias_initializer=initializer,\n", " kernel_regularizer=regularizer,\n", " bias_regularizer=regularizer) for _ in range(depth-1)]\n", " all_layers.append(keras.layers.Dense(\n", " output_dim, kernel_initializer=initializer,\n", " activation=act_func if output_act_func else None,\n", " bias_initializer=initializer,\n", " kernel_regularizer=regularizer,\n", " bias_regularizer=regularizer))\n", " m = keras.Sequential(all_layers)\n", " return m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Training progress" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1, int 2.2773569885970695e-16, bc 1.3877786484325477e-16, ic 265.2717869151763, tot 265.2717869151763\n", "2, int 2.277458991310018e-16, bc 6.997915580342351e-09, ic 265.27181047924506, tot 265.271810486243\n", "3, int 2.1750727224597822e-16, bc 5.265296931611374e-05, ic 265.26135458908027, tot 265.2614072420496\n", "4, int 2.4793358561668537e-16, bc 6.485890935437055e-06, ic 265.2739493172413, tot 265.27395580313225\n", "5, int 2.691332297928401e-16, bc 3.8233905797824264e-05, ic 265.2844076307819, tot 265.2844458646877\n", "6, int 2.6262234811461907e-16, bc 2.909056274802424e-05, ic 265.2836849250222, tot 265.28371401558496\n", "7, int 2.454595438605675e-16, bc 8.627421266282909e-06, ic 265.2775222392676, tot 265.2775308666889\n", "8, int 2.297726802329359e-16, bc 7.716175787209067e-06, ic 265.27024851606666, tot 265.27025623224245\n", "9, int 2.2225391151284096e-16, bc 1.8938679204438813e-05, ic 265.2657619628281, tot 265.2657809015073\n", "10, int 2.2373662063809325e-16, bc 1.9622952095232904e-05, ic 265.26569749097126, tot 265.26571711392336\n", "11, int 2.3091360609297623e-16, bc 9.25375206861645e-06, ic 265.26902346847834, tot 265.2690327222304\n", "12, int 2.397972202852642e-16, bc 2.3178599803941324e-06, ic 265.27385539344607, tot 265.27385771130605\n", "13, int 2.4617822114587974e-16, bc 6.744443908246467e-06, ic 265.2779928360516, tot 265.27799958049553\n", "14, int 2.470827638464881e-16, bc 1.3005673281440977e-05, ic 265.27964019751175, tot 265.27965320318503\n", "15, int 2.427853366374341e-16, bc 1.047747991833603e-05, ic 265.2784226912877, tot 265.2784331687676\n", "16, int 2.3576378755349277e-16, bc 3.048126927751582e-06, ic 265.2752253864778, tot 265.27522843460474\n", "17, int 2.289466370147696e-16, bc 1.0216540431429166e-06, ic 265.27152159776887, tot 265.2715226194229\n", "18, int 2.246572353271713e-16, bc 5.5983755373745225e-06, ic 265.2688325219438, tot 265.26883812031934\n", "19, int 2.238491581915891e-16, bc 8.557051842217334e-06, ic 265.2681097277381, tot 265.2681182847899\n", "20, int 2.260868851469298e-16, bc 5.282327038003132e-06, ic 265.2693874344921, tot 265.26939271681914\n", "21, int 2.300370025857468e-16, bc 7.471946901205229e-07, ic 265.27194482615397, tot 265.27194557334866\n", "22, int 2.3389408255123074e-16, bc 9.93961521089659e-07, ic 265.2746510744656, tot 265.27465206842714\n", "23, int 2.3596290505959407e-16, bc 4.474442903301679e-06, ic 265.2763706848738, tot 265.27637515931673\n", "24, int 2.354088562111728e-16, bc 5.181381311558653e-06, ic 265.27645660324896, tot 265.27646178463027\n", "25, int 2.3259195792377765e-16, bc 2.1493756321433466e-06, ic 265.27501531685186, tot 265.2750174662275\n", "26, int 2.287547482231528e-16, bc 2.4200657477990717e-08, ic 265.27277024685077, tot 265.2727702710514\n", "27, int 2.2539041035021073e-16, bc 1.3994147138873814e-06, ic 265.2707064252452, tot 265.2707078246599\n", "28, int 2.2362382244638854e-16, bc 3.375098003743915e-06, ic 265.26965671900365, tot 265.26966009410165\n", "29, int 2.2385639738653775e-16, bc 2.67877294390928e-06, ic 265.2699574277227, tot 265.26996010649566\n", "30, int 2.257193849811211e-16, bc 5.539015432987071e-07, ic 265.27135510817527, tot 265.2713556620768\n", "31, int 2.2825156542065705e-16, bc 1.6172523942259431e-07, ic 265.27316123552345, tot 265.2731613972487\n", "32, int 2.3025330975879753e-16, bc 1.5874583141339826e-06, ic 265.274551088056, tot 265.2745526755143\n", "33, int 2.307836918376887e-16, bc 2.164799980164389e-06, ic 265.27492639576, tot 265.27492856056\n", "34, int 2.296072155987943e-16, bc 9.968694030249026e-07, ic 265.2741894268086, tot 265.274190423678\n", "35, int 2.272830179580574e-16, bc 3.016200977867811e-08, ic 265.27275274855657, tot 265.2727527787186\n", "36, int 2.2484531180654566e-16, bc 5.690523039447726e-07, ic 265.2713149138276, tot 265.2713154828799\n", "37, int 2.2330278505142534e-16, bc 1.3727127452511922e-06, ic 265.2705243008656, tot 265.27052567357833\n", "38, int 2.232083374477856e-16, bc 1.0267273182762438e-06, ic 265.2706878255638, tot 265.27068885229113\n", "39, int 2.2445378385359887e-16, bc 1.7725220402553532e-07, ic 265.2716493884496, tot 265.2716495657018\n", "40, int 2.263377628586801e-16, bc 1.5550689624888037e-07, ic 265.2728917793712, tot 265.2728919348781\n", "41, int 2.2787093832989535e-16, bc 7.549822385044536e-07, ic 265.273793109094, tot 265.27379386407625\n", "42, int 2.282491808875202e-16, bc 8.169434977389756e-07, ic 265.273930149144, tot 265.2739309660875\n", "43, int 2.2728150977297933e-16, bc 2.6511375494919776e-07, ic 265.27328512380427, tot 265.27328538891805\n", "44, int 2.25479582982037e-16, bc 4.222602001391351e-08, ic 265.2722331188745, tot 265.27223316110053\n", "45, int 2.237535166620487e-16, bc 3.9061768575265887e-07, ic 265.2713260191002, tot 265.27132640971786\n", "46, int 2.2292517112532225e-16, bc 5.746402393924654e-07, ic 265.27100705911676, tot 265.271007633757\n", "47, int 2.233216964299689e-16, bc 2.658542541666975e-07, ic 265.27139053184845, tot 265.27139079770274\n", "48, int 2.246350077132213e-16, bc 2.145787370011476e-08, ic 265.27222349826536, tot 265.27222351972324\n", "49, int 2.2608848024750123e-16, bc 2.014358670976435e-07, ic 265.2730345154233, tot 265.2730347168592\n", "50, int 2.268471646251238e-16, bc 3.8495659282489214e-07, ic 265.27339044157213, tot 265.2733908265287\n", "51, int 2.2648944057207716e-16, bc 2.1667860039542575e-07, ic 265.27312922416723, tot 265.2731294408458\n", "52, int 2.25246833923475e-16, bc 1.6584241535611e-08, ic 265.27243632394175, tot 265.272436340526\n", "53, int 2.238403307603196e-16, bc 1.1245358422229401e-07, ic 265.27171843742076, tot 265.2717185498743\n", "54, int 2.2303949803222376e-16, bc 2.570365609244618e-07, ic 265.2713708993623, tot 265.27137115639886\n", "55, int 2.232269069697461e-16, bc 1.5734721614535374e-07, ic 265.27155392320304, tot 265.2715540805503\n", "56, int 2.2420898133687763e-16, bc 1.0266600902752998e-08, ic 265.27212282777583, tot 265.27212283804243\n", "57, int 2.253458756956304e-16, bc 7.134061519309398e-08, ic 265.2727235235925, tot 265.2727235949331\n", "58, int 2.259343515771961e-16, bc 1.7481377767580852e-07, ic 265.2730067460226, tot 265.2730069208364\n", "59, int 2.2563584610061554e-16, bc 1.030787757372309e-07, ic 265.27283121301235, tot 265.27283131609113\n", "60, int 2.246739505896508e-16, bc 3.343809673594933e-09, ic 265.27233398919765, tot 265.27233399254146\n", "61, int 2.2366176357416083e-16, bc 5.4151435335825227e-08, ic 265.2718314906583, tot 265.27183154480974\n", "62, int 2.231966254302133e-16, bc 1.202033104164002e-07, ic 265.27161968361037, tot 265.2716198038137\n", "63, int 2.235001121848551e-16, bc 6.020605525236533e-08, ic 265.2717994070181, tot 265.2717994672241\n", "64, int 2.243110427583122e-16, bc 9.55051662754336e-11, ic 265.2722277984232, tot 265.2722277985187\n", "65, int 2.2507292236060226e-16, bc 4.635820261000845e-08, ic 265.2726241669619, tot 265.2726242133201\n", "66, int 2.252964453916045e-16, bc 8.08728515266921e-08, ic 265.2727464638974, tot 265.27274654477026\n", "67, int 2.2487249286889506e-16, bc 2.9656465727612158e-08, ic 265.27254234309964, tot 265.2725423727561\n", "68, int 2.2411846965402894e-16, bc 1.4714741647381402e-09, ic 265.27216495350496, tot 265.2721649549764\n", "69, int 2.2353504209591683e-16, bc 4.088310490146796e-08, ic 265.27186478192857, tot 265.27186482281166\n", "70, int 2.234679686141847e-16, bc 5.0817781982459564e-08, ic 265.2718224883012, tot 265.271822539119\n", "71, int 2.239005988971803e-16, bc 1.1334615024338746e-08, ic 265.27204027306163, tot 265.27204028439627\n", "72, int 2.2449659709728737e-16, bc 5.577931005973369e-09, ic 265.2723552287314, tot 265.2723552343093\n", "73, int 2.2484240955127494e-16, bc 3.3947337385598075e-08, ic 265.2725557410636, tot 265.27255577501097\n", "74, int 2.247281461132386e-16, bc 2.8410557462166253e-08, ic 265.27252183498, tot 265.2725218633906\n", "75, int 2.2427087987160114e-16, bc 2.8717224154206633e-09, ic 265.27229782284815, tot 265.2722978257199\n", "76, int 2.2380410453845376e-16, bc 9.54962686705585e-09, ic 265.2720461590095, tot 265.27204616855914\n", "77, int 2.236318413129842e-16, bc 2.5388825264371917e-08, ic 265.2719348481549, tot 265.2719348735437\n", "78, int 2.238292272504989e-16, bc 1.3318262048755969e-08, ic 265.2720225565938, tot 265.27202256991205\n", "79, int 2.2421772918736434e-16, bc 8.627426550944506e-10, ic 265.2722319770316, tot 265.27223197789436\n", "80, int 2.24509956781107e-16, bc 1.1456049442415406e-08, ic 265.2724103384106, tot 265.2724103498667\n", "81, int 2.2451629376747453e-16, bc 1.6586596984780044e-08, ic 265.2724412032425, tot 265.27244121982915\n", "82, int 2.2426252940011966e-16, bc 4.544977283416074e-09, ic 265.2723180056533, tot 265.27231801019826\n", "83, int 2.2394821559019807e-16, bc 2.0025310298876775e-09, ic 265.27213838762043, tot 265.27213838962297\n", "84, int 2.237898045037768e-16, bc 1.1041866088135066e-08, ic 265.2720306928055, tot 265.2720307038474\n", "85, int 2.2387197978693347e-16, bc 8.833317188816636e-09, ic 265.2720607046251, tot 265.2720607134584\n", "86, int 2.241058144382174e-16, bc 7.057321949055506e-10, ic 265.27219390308534, tot 265.27219390379105\n", "87, int 2.243109860753962e-16, bc 4.028562372582201e-09, ic 265.2723272830411, tot 265.27232728706963\n", "88, int 2.243490203328779e-16, bc 8.513449500924253e-09, ic 265.27236897767847, tot 265.2723689861919\n", "89, int 2.2421253202374203e-16, bc 3.0814932827638586e-09, ic 265.2722977132337, tot 265.27229771631517\n", "90, int 2.2401407548188325e-16, bc 4.659099772652553e-10, ic 265.2721746464926, tot 265.2721746469585\n", "91, int 2.238951075339393e-16, bc 5.175400108470285e-09, ic 265.27209156101355, tot 265.272091566189\n", "92, int 2.2392549094964727e-16, bc 4.683686771755902e-09, ic 265.272102719335, tot 265.2721027240187\n", "93, int 2.240655566309926e-16, bc 2.697546908070336e-10, ic 265.27219176298814, tot 265.2721917632579\n", "94, int 2.242049014745317e-16, bc 1.941569349739325e-09, ic 265.27228676823734, tot 265.2722867701789\n", "95, int 2.2424629710680537e-16, bc 4.284387067343687e-09, ic 265.27231919800283, tot 265.27231920228724\n", "96, int 2.241694831165241e-16, bc 1.3234785489757428e-09, ic 265.2722707193825, tot 265.272270720706\n", "97, int 2.240389103538808e-16, bc 2.918464359069617e-10, ic 265.27218444024663, tot 265.27218444053847\n", "98, int 2.239498937484028e-16, bc 2.7745463704320628e-09, ic 265.27212632644984, tot 265.27212632922436\n", "99, int 2.2396176696870787e-16, bc 2.0401049738438815e-09, ic 265.27213725427947, tot 265.2721372563196\n", "100, int 2.240562529560445e-16, bc 2.887050321032092e-11, ic 265.2722023389695, tot 265.2722023389984\n", "101, int 2.2415842032700875e-16, bc 1.299313767688659e-09, ic 265.27226858909467, tot 265.272268590394\n", "102, int 2.2419188983102654e-16, bc 1.997435106204648e-09, ic 265.27228585271774, tot 265.27228585471516\n", "103, int 2.2413590522630327e-16, bc 3.6174768736074725e-10, ic 265.27224515309535, tot 265.2722451534571\n", "104, int 2.240371657904345e-16, bc 4.013539500746788e-10, ic 265.27218257195267, tot 265.27218257235404\n", "105, int 2.239721707193379e-16, bc 1.4774312884213714e-09, ic 265.2721472080136, tot 265.27214720949104\n", "106, int 2.239885186818816e-16, bc 6.936108354338444e-10, ic 265.2721646740491, tot 265.2721646747427\n", "107, int 2.24068555162683e-16, bc 6.996815626880704e-11, ic 265.27221637873686, tot 265.27221637880683\n", "108, int 2.2414607910584724e-16, bc 8.707555787523802e-10, ic 265.27225960058064, tot 265.27225960145137\n", "109, int 2.241589841679354e-16, bc 8.005504037456035e-10, ic 265.2722610332894, tot 265.2722610340899\n", "110, int 2.2409998736413206e-16, bc 6.270285679566001e-11, ic 265.2722226224815, tot 265.2722226225442\n", "111, int 2.2402003773642835e-16, bc 4.112339635486961e-10, ic 265.2721777624731, tot 265.2721777628844\n", "112, int 2.239851612746054e-16, bc 7.079604680271245e-10, ic 265.2721638580162, tot 265.2721638587242\n", "113, int 2.240211759089549e-16, bc 1.569538804480075e-10, ic 265.27218861953247, tot 265.2721886196894\n", "114, int 2.2409391345972916e-16, bc 1.444665359562336e-10, ic 265.27222927034995, tot 265.2722292704944\n", "115, int 2.2414045558085756e-16, bc 5.246632017730235e-10, ic 265.27225117169576, tot 265.2722511722204\n", "116, int 2.2412299032712187e-16, bc 2.3307378249626254e-10, ic 265.27223816034547, tot 265.2722381605785\n", "117, int 2.2405991583775904e-16, bc 3.105538742831371e-11, ic 265.27220371530456, tot 265.2722037153356\n", "118, int 2.240076238714797e-16, bc 3.4039518426176585e-10, ic 265.27217783959907, tot 265.27217783993945\n", "119, int 2.240099663198465e-16, bc 2.580375357830178e-10, ic 265.27218132723203, tot 265.27218132749005\n", "120, int 2.240609291077135e-16, bc 4.646426906423917e-12, ic 265.27220978755224, tot 265.2722097875569\n", "121, int 2.2411308159215614e-16, bc 1.9657046823606805e-10, ic 265.27223556902334, tot 265.2722355692199\n", "122, int 2.241204258959483e-16, bc 2.3779225810649507e-10, ic 265.2722385864285, tot 265.2722385866663\n", "123, int 2.2408027723403775e-16, bc 1.3787730505920859e-11, ic 265.27221710553385, tot 265.27221710554767\n", "124, int 2.240315394432624e-16, bc 1.0306689529615554e-10, ic 265.27219235052917, tot 265.2721923506322\n", "125, int 2.2401750758414606e-16, bc 1.9377256743613458e-10, ic 265.2721854526865, tot 265.27218545288025\n", "126, int 2.2404751612500486e-16, bc 2.8930899342860528e-11, ic 265.27220087670804, tot 265.272200876737\n", "127, int 2.2409056735730764e-16, bc 4.8139513209033424e-11, ic 265.2722232846101, tot 265.27222328465825\n", "128, int 2.241072742092741e-16, bc 1.4484423382921108e-10, ic 265.2722321485721, tot 265.2722321487169\n", "129, int 2.240854130206133e-16, bc 3.968832554268609e-11, ic 265.2722216702051, tot 265.2722216702448\n", "130, int 2.2404847471477944e-16, bc 2.019314923606963e-11, ic 265.27220249039505, tot 265.2722024904152\n", "131, int 2.240304611482713e-16, bc 1.0231558655870998e-10, ic 265.2721921631258, tot 265.2721921632281\n", "132, int 2.240453260147344e-16, bc 4.367534459093214e-11, ic 265.27219890273415, tot 265.2721989027778\n", "133, int 2.2407607280695145e-16, bc 7.820639101596694e-12, ic 265.2722151820435, tot 265.27221518205135\n", "134, int 2.240938041239137e-16, bc 7.073543140112548e-11, ic 265.27222557650185, tot 265.27222557657257\n", "135, int 2.2408366650323255e-16, bc 4.0838082915328755e-11, ic 265.2722213288736, tot 265.27222132891444\n", "136, int 2.2405848650509786e-16, bc 3.2886250146690887e-12, ic 265.27220834773226, tot 265.27220834773556\n", "137, int 2.2404222524292733e-16, bc 4.6201636266784973e-11, ic 265.2721982780011, tot 265.2721982780473\n", "138, int 2.2404840309144807e-16, bc 3.612925583706961e-11, ic 265.2722001626579, tot 265.27220016269405\n", "139, int 2.240685423475526e-16, bc 1.885851501001734e-12, ic 265.2722112607991, tot 265.272211260801\n", "140, int 2.2408287238530003e-16, bc 2.982267904849678e-11, ic 265.27222020337683, tot 265.2722202034067\n", "141, int 2.240796770642351e-16, bc 3.037028267760533e-11, ic 265.2722197622094, tot 265.27221976223973\n", "142, int 2.2406381834854365e-16, bc 1.4988715563851729e-12, ic 265.2722107603351, tot 265.2722107603366\n", "143, int 2.2405104831526735e-16, bc 1.9834809142360577e-11, ic 265.2722025088165, tot 265.27220250883636\n", "144, int 2.2405228376822796e-16, bc 2.443235024018886e-11, ic 265.2722023189259, tot 265.27220231895035\n", "145, int 2.2406461836507063e-16, bc 1.3107066430470549e-12, ic 265.2722093715183, tot 265.2722093715196\n", "146, int 2.2407557127886663e-16, bc 1.3456141582934844e-11, ic 265.2722169208682, tot 265.27221692088165\n", "147, int 2.2407573814924876e-16, bc 1.9013318697247428e-11, ic 265.2722176001651, tot 265.2722176001841\n", "148, int 2.2406624764144473e-16, bc 1.0068483590267019e-12, ic 265.27221177199556, tot 265.2722117719966\n", "149, int 2.2405637495859836e-16, bc 9.360220064313918e-12, ic 265.2722054092593, tot 265.2722054092687\n", "150, int 2.2405521658936994e-16, bc 1.4363838243824922e-11, ic 265.2722043379691, tot 265.27220433798345\n", "151, int 2.240627667712153e-16, bc 7.302765163419433e-13, ic 265.2722089884471, tot 265.27220898844786\n", "152, int 2.240713723321921e-16, bc 6.648718034463208e-12, ic 265.2722148201748, tot 265.27221482018143\n", "153, int 2.240729238919203e-16, bc 1.0582837557671088e-11, ic 265.272215986576, tot 265.27221598658656\n", "154, int 2.2406676585024493e-16, bc 5.315394391997019e-13, ic 265.2722117636713, tot 265.2722117636718\n", "155, int 2.240595736704667e-16, bc 4.855433763384376e-12, ic 265.2722072095735, tot 265.2722072095783\n", "156, int 2.240572609440776e-16, bc 7.744737143267066e-12, ic 265.2722059325198, tot 265.2722059325275\n", "157, int 2.240622412502672e-16, bc 4.3050483425517705e-13, ic 265.2722094313608, tot 265.27220943136126\n", "158, int 2.2406923001130556e-16, bc 3.726435392897853e-12, ic 265.27221344897913, tot 265.2722134489829\n", "159, int 2.2407150268396166e-16, bc 5.445795724090541e-12, ic 265.2722144793914, tot 265.27221447939684\n", "160, int 2.2406708108293557e-16, bc 3.666016871583383e-13, ic 265.2722115667067, tot 265.272211566707\n", "161, int 2.2406065398774366e-16, bc 2.837110104139673e-12, ic 265.2722077285406, tot 265.27220772854344\n", "162, int 2.2405867766360086e-16, bc 3.802311330375341e-12, ic 265.2722072456682, tot 265.272207245672\n", "163, int 2.2406250157851553e-16, bc 2.836798450225192e-13, ic 265.27220967481463, tot 265.2722096748149\n", "164, int 2.240684267685877e-16, bc 2.189848129219296e-12, ic 265.27221305340174, tot 265.27221305340396\n", "165, int 2.2407006101982197e-16, bc 2.802654809619387e-12, ic 265.27221374291975, tot 265.27221374292253\n", "166, int 2.2406582396066005e-16, bc 1.3278579082641462e-13, ic 265.27221126973086, tot 265.272211269731\n", "167, int 2.24060771086584e-16, bc 1.7847520336622402e-12, ic 265.272208436363, tot 265.27220843636474\n", "168, int 2.2405987974422926e-16, bc 1.9009646287648785e-12, ic 265.2722079598558, tot 265.27220795985767\n", "169, int 2.240639040434811e-16, bc 4.059474856417909e-14, ic 265.27221031834307, tot 265.2722103183431\n", "170, int 2.240681924293659e-16, bc 1.320612998297055e-12, ic 265.27221271801193, tot 265.27221271801324\n", "171, int 2.240683852452104e-16, bc 1.2539309868220272e-12, ic 265.2722126648815, tot 265.2722126648828\n", "172, int 2.240646708025659e-16, bc 1.2544243699612757e-14, ic 265.2722104537002, tot 265.2722104537002\n", "173, int 2.2406092068463337e-16, bc 1.2291544735157367e-12, ic 265.27220867160884, tot 265.2722086716101\n", "174, int 2.240613401270045e-16, bc 8.604382939654542e-13, ic 265.27220891770213, tot 265.272208917703\n", "175, int 2.2406488702181386e-16, bc 3.15884369714043e-14, ic 265.27221087095035, tot 265.2722108709504\n", "176, int 2.240677586420181e-16, bc 9.948906932663593e-13, ic 265.27221229348487, tot 265.2722122934859\n", "177, int 2.2406683489923795e-16, bc 4.908496569269727e-13, ic 265.2722122228432, tot 265.27221222284373\n", "178, int 2.2406352644299886e-16, bc 9.347592686871631e-14, ic 265.2722100984657, tot 265.2722100984658\n", "179, int 2.2406154144135143e-16, bc 6.967013771452812e-13, ic 265.2722093372307, tot 265.2722093372314\n", "180, int 2.240628168423413e-16, bc 2.561980846655515e-13, ic 265.2722096537024, tot 265.2722096537027\n", "181, int 2.2406553909049837e-16, bc 1.1177053748680221e-13, ic 265.2722112951347, tot 265.2722112951348\n", "182, int 2.24067069585857e-16, bc 5.491153864077558e-13, ic 265.27221227037285, tot 265.2722122703734\n", "183, int 2.240653888796343e-16, bc 1.1297410354221479e-13, ic 265.2722110733576, tot 265.2722110733577\n", "184, int 2.2406331476259515e-16, bc 1.4445108791841937e-13, ic 265.2722099039799, tot 265.27220990398007\n", "185, int 2.240626074610678e-16, bc 3.643502058219006e-13, ic 265.272209663599, tot 265.27220966359937\n", "186, int 2.2406399484328904e-16, bc 3.608228218163548e-14, ic 265.27221003212645, tot 265.2722100321265\n", "187, int 2.2406575886766934e-16, bc 1.5242389056653594e-13, ic 265.2722114497346, tot 265.27221144973475\n", "188, int 2.2406608630261384e-16, bc 2.286328678463567e-13, ic 265.27221143624854, tot 265.27221143624877\n", "189, int 2.2406476661413224e-16, bc 1.0104899772836462e-14, ic 265.2722109418521, tot 265.2722109418521\n", "190, int 2.2406327579795523e-16, bc 1.7572397801191714e-13, ic 265.27220978563173, tot 265.2722097856319\n", "191, int 2.24063323139095e-16, bc 1.7447022017218206e-13, ic 265.2722097856315, tot 265.2722097856317\n", "192, int 2.2406459552389243e-16, bc 7.603653831241876e-15, ic 265.2722109418519, tot 265.2722109418519\n", "193, int 2.2406561288712965e-16, bc 1.5548556908141775e-13, ic 265.27221144973413, tot 265.2722114497343\n", "194, int 2.240651220641856e-16, bc 5.961615072045887e-14, ic 265.27221094185404, tot 265.2722109418541\n", "195, int 2.24064143717115e-16, bc 1.2394735608158795e-14, ic 265.27221030864945, tot 265.27221030864945\n", "196, int 2.2406338888023104e-16, bc 1.4150199024662302e-13, ic 265.2722098216876, tot 265.27220982168774\n", "197, int 2.240640041858865e-16, bc 3.071345193689061e-14, ic 265.2722100577957, tot 265.27221005779575\n", "198, int 2.240650918889116e-16, bc 3.686505920951107e-14, ic 265.2722107642253, tot 265.27221076422535\n", "199, int 2.240655944263526e-16, bc 1.0683803424197877e-13, ic 265.27221109169983, tot 265.27221109169994\n", "200, int 2.2406481782830104e-16, bc 1.7313102720125512e-14, ic 265.27221069140825, tot 265.27221069140825\n", "201, int 2.2406359961684984e-16, bc 7.985433603426018e-14, ic 265.2722102604934, tot 265.27221026049347\n", "202, int 2.2406365183222226e-16, bc 8.115497884169168e-14, ic 265.27221026049375, tot 265.2722102604938\n", "203, int 2.240644736624134e-16, bc 5.087620811970598e-15, ic 265.27221111051074, tot 265.27221111051074\n", "204, int 2.240653203125171e-16, bc 4.505093130144355e-14, ic 265.2722109387474, tot 265.27221093874743\n", "205, int 2.240649444706727e-16, bc 3.376870994203224e-14, ic 265.2722107642263, tot 265.2722107642264\n", "206, int 2.2406425073747314e-16, bc 5.2350727309451e-15, ic 265.2722105898433, tot 265.2722105898433\n", "207, int 2.2406357028133387e-16, bc 7.688308675682723e-14, ic 265.27221026049244, tot 265.2722102604925\n", "208, int 2.2406435867344035e-16, bc 6.219122998296677e-15, ic 265.27221058984424, tot 265.27221058984424\n", "209, int 2.2406509671786616e-16, bc 2.7790846067552583e-14, ic 265.27221076422694, tot 265.27221076422694\n", "210, int 2.2406509826186875e-16, bc 3.3694980806171435e-14, ic 265.2722107642264, tot 265.27221076422643\n", "211, int 2.240644744653639e-16, bc 1.9321850671901505e-15, ic 265.27221075157973, tot 265.27221075157973\n", "212, int 2.2406384141445155e-16, bc 4.0679428141982e-14, ic 265.2722101958307, tot 265.2722101958308\n", "213, int 2.240639642251219e-16, bc 2.1086133056638645e-14, ic 265.27221037475874, tot 265.27221037475874\n", "214, int 2.2406471890625044e-16, bc 8.920950153449344e-15, ic 265.2722108247347, tot 265.2722108247347\n", "215, int 2.240648702277616e-16, bc 2.974417858282036e-14, ic 265.2722106914086, tot 265.27221069140865\n", "216, int 2.2406452605789936e-16, bc 2.6454549949305253e-15, ic 265.2722104427232, tot 265.2722104427232\n", "217, int 2.2406394424012403e-16, bc 2.7903060992404832e-14, ic 265.2722100519703, tot 265.2722100519703\n", "218, int 2.2406431505546653e-16, bc 9.972640660320387e-15, ic 265.2722101068437, tot 265.2722101068437\n", "219, int 2.2406480241014323e-16, bc 1.6939730596975816e-14, ic 265.2722107188082, tot 265.2722107188082\n", "220, int 2.2406480698534005e-16, bc 1.6133101121305546e-14, ic 265.2722109418526, tot 265.2722109418526\n", "221, int 2.2406424705652287e-16, bc 1.3618950421001304e-15, ic 265.2722104536958, tot 265.2722104536958\n", "222, int 2.240638611574468e-16, bc 2.7314474738016764e-14, ic 265.27221019583175, tot 265.27221019583175\n", "223, int 2.2406428908212977e-16, bc 4.801395250082687e-15, ic 265.2722103872702, tot 265.2722103872702\n", "224, int 2.2406468145328574e-16, bc 7.711398116198517e-15, ic 265.2722107326525, tot 265.2722107326525\n", "225, int 2.2406469743866097e-16, bc 1.363832397032914e-14, ic 265.27221111051057, tot 265.27221111051057\n", "226, int 2.240643853478474e-16, bc 2.7067153822912717e-15, ic 265.2722104427239, tot 265.2722104427239\n", "227, int 2.2406397990462446e-16, bc 2.352520508583887e-14, ic 265.2722101958321, tot 265.2722101958321\n", "228, int 2.2406428322896374e-16, bc 3.769228852645856e-15, ic 265.27221038727157, tot 265.27221038727157\n", "229, int 2.240647149708632e-16, bc 4.851950835056034e-15, ic 265.27221048890095, tot 265.27221048890095\n", "230, int 2.240646974692258e-16, bc 5.553293691866121e-15, ic 265.2722107515799, tot 265.2722107515799\n", "231, int 2.240643566367798e-16, bc 4.334780046033344e-15, ic 265.2722104427232, tot 265.2722104427232\n", "232, int 2.24063986102078e-16, bc 7.09950024455259e-15, ic 265.2722103005535, tot 265.2722103005535\n", "233, int 2.24064244578159e-16, bc 3.400605407956705e-15, ic 265.27221038727055, tot 265.27221038727055\n", "234, int 2.2406455077484073e-16, bc 1.548377286372045e-15, ic 265.2722104427272, tot 265.2722104427272\n", "235, int 2.240644988287953e-16, bc 1.7699609994946516e-15, ic 265.27221044272545, tot 265.27221044272545\n", "236, int 2.2406446030810947e-16, bc 8.891828948964504e-16, ic 265.2722105139467, tot 265.2722105139467\n", "237, int 2.2406436003579406e-16, bc 1.5517643593698782e-16, ic 265.2722105139473, tot 265.2722105139473\n", "238, int 2.240644507249897e-16, bc 8.028524498793449e-16, ic 265.2722105139486, tot 265.2722105139486\n", "239, int 2.2406446829815154e-16, bc 6.597374454739031e-16, ic 265.2722105139485, tot 265.2722105139485\n", "240, int 2.240644010425232e-16, bc 1.2197277087439885e-16, ic 265.2722105139475, tot 265.2722105139475\n", "241, int 2.2406446737946025e-16, bc 1.2003488125206718e-15, ic 265.2722104427248, tot 265.2722104427248\n", "242, int 2.240644981411007e-16, bc 7.169300100450199e-17, ic 265.2722105139476, tot 265.2722105139476\n", "243, int 2.2406453352940043e-16, bc 2.8677200401800796e-16, ic 265.2722105139488, tot 265.2722105139488\n", "244, int 2.2406453352940043e-16, bc 3.6646112839348855e-16, ic 265.27221051394883, tot 265.27221051394883\n", "245, int 2.240643992312334e-16, bc 6.64074657827984e-18, ic 265.27221051394787, tot 265.27221051394787\n", "246, int 2.2406437577822197e-16, bc 2.744388866686301e-16, ic 265.2722105139473, tot 265.2722105139473\n", "247, int 2.240643266610096e-16, bc 1.7564089752643953e-16, ic 265.2722105139474, tot 265.2722105139474\n", "248, int 2.2406440094232007e-16, bc 8.470349324877705e-17, ic 265.2722104536982, tot 265.2722104536982\n", "249, int 2.2406440094232007e-16, bc 2.9937585427315195e-16, ic 265.2722104536986, tot 265.2722104536986\n", "250, int 2.240643752732949e-16, bc 8.673616552703423e-18, ic 265.272210453698, tot 265.272210453698\n", "251, int 2.240643732226587e-16, bc 1.9569877006631937e-16, ic 265.2722104536972, tot 265.2722104536972\n", "252, int 2.240643732226587e-16, bc 1.566673198032738e-16, ic 265.2722104536973, tot 265.2722104536973\n", "253, int 2.2406438259878583e-16, bc 4.391022438160988e-17, ic 265.27221045369816, tot 265.27221045369816\n", "254, int 2.2406438259878583e-16, bc 2.0613393804380653e-16, ic 265.2722104536985, tot 265.2722104536985\n", "255, int 2.2406438259878583e-16, bc 2.1684041381758557e-18, ic 265.27221045369794, tot 265.27221045369794\n", "256, int 2.2406438659925977e-16, bc 7.806258950618082e-17, ic 265.2722104536975, tot 265.2722104536975\n", "257, int 2.2406438659925977e-16, bc 7.169300100450199e-17, ic 265.2722104536975, tot 265.2722104536975\n", "258, int 2.2406438659925977e-16, bc 2.1684041381758557e-18, ic 265.27221045369794, tot 265.27221045369794\n", "259, int 2.2406438659925977e-16, bc 9.87980553166396e-17, ic 265.27221045369834, tot 265.27221045369834\n", "260, int 2.2406438659925977e-16, bc 3.049319271859971e-17, ic 265.2722104536981, tot 265.2722104536981\n", "261, int 2.2406438659925977e-16, bc 2.2903820524593034e-17, ic 265.27221045369765, tot 265.27221045369765\n", "262, int 2.2406438659925977e-16, bc 8.470349324877705e-17, ic 265.2722104536974, tot 265.2722104536974\n", "263, int 2.2406438659925977e-16, bc 2.1684041381758557e-18, ic 265.2722104536978, tot 265.2722104536978\n", "264, int 2.2406438659925977e-16, bc 3.916682995081845e-17, ic 265.27221045369816, tot 265.27221045369816\n", "265, int 2.2406438659925977e-16, bc 3.916682995081845e-17, ic 265.27221045369816, tot 265.27221045369816\n", "266, int 2.2406438659925977e-16, bc 5.421010345439639e-19, ic 265.2722104536978, tot 265.2722104536978\n", "267, int 2.2406438659925977e-16, bc 5.421024097317323e-17, ic 265.27221045369754, tot 265.27221045369754\n", "268, int 2.2406438659925977e-16, bc 1.3552560243293308e-17, ic 265.2722104536977, tot 265.2722104536977\n", "269, int 2.2406438659925977e-16, bc 1.097755609540247e-17, ic 265.272210453698, tot 265.272210453698\n", "270, int 2.2406438659925977e-16, bc 4.892469251657984e-17, ic 265.2722104536982, tot 265.2722104536982\n", "271, int 2.2406438659925977e-16, bc 1.3552525863599098e-19, ic 265.2722104536979, tot 265.2722104536979\n", "272, int 2.2406438659925977e-16, bc 3.049319271859971e-17, ic 265.2722104536976, tot 265.2722104536976\n", "273, int 2.2406438659925977e-16, bc 1.9515647376545205e-17, ic 265.27221045369765, tot 265.27221045369765\n", "274, int 2.2406438659925977e-16, bc 1.097755609540247e-17, ic 265.272210453698, tot 265.272210453698\n", "275, int 2.2406438659925977e-16, bc 2.2903820524593034e-17, ic 265.27221045369805, tot 265.27221045369805\n", "276, int 2.2406438659925977e-16, bc 1.3552525863599098e-19, ic 265.2722104536979, tot 265.2722104536979\n", "277, int 2.2406438659925977e-16, bc 8.673616552703423e-18, ic 265.2722104536977, tot 265.2722104536977\n", "278, int 2.2406438659925977e-16, bc 8.673616552703423e-18, ic 265.2722104536977, tot 265.2722104536977\n", "279, int 2.2406438659925977e-16, bc 1.3552525863599098e-19, ic 265.2722104536978, tot 265.2722104536978\n", "280, int 2.2406438659925977e-16, bc 1.6398577711177956e-17, ic 265.27221045369805, tot 265.27221045369805\n", "281, int 2.2406438659925977e-16, bc 3.388140060823327e-18, ic 265.27221045369794, tot 265.27221045369794\n", "282, int 2.2406438659925977e-16, bc 3.388140060823327e-18, ic 265.2722104536978, tot 265.2722104536978\n", "283, int 2.2406438659925977e-16, bc 6.64074657827984e-18, ic 265.27221045369777, tot 265.27221045369777\n", "284, int 2.2406438659925977e-16, bc 5.421010345439639e-19, ic 265.2722104536978, tot 265.2722104536978\n", "285, int 2.2406438659925977e-16, bc 4.878911844136301e-18, ic 265.27221045369794, tot 265.27221045369794\n", "286, int 2.2406438659925977e-16, bc 4.878911844136301e-18, ic 265.27221045369794, tot 265.27221045369794\n", "287, int 2.2406438659925977e-16, bc 5.421010345439639e-19, ic 265.2722104536978, tot 265.2722104536978\n", "288, int 2.2406438659925977e-16, bc 4.878911844136301e-18, ic 265.2722104536978, tot 265.2722104536978\n", "289, int 2.2406438659925977e-16, bc 1.2197279610340753e-18, ic 265.2722104536978, tot 265.2722104536978\n", "290, int 2.2406438659925977e-16, bc 2.1684041381758557e-18, ic 265.27221045369794, tot 265.27221045369794\n", "291, int 2.2406438659925977e-16, bc 3.388140060823327e-18, ic 265.27221045369794, tot 265.27221045369794\n", "292, int 2.2406438659925977e-16, bc 1.3552525863599098e-19, ic 265.2722104536979, tot 265.2722104536979\n", "293, int 2.2406438659925977e-16, bc 2.1684041381758557e-18, ic 265.2722104536978, tot 265.2722104536978\n", "294, int 2.2406438659925977e-16, bc 2.1684041381758557e-18, ic 265.2722104536978, tot 265.2722104536978\n", "295, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "296, int 2.2406438659925977e-16, bc 2.1684041381758557e-18, ic 265.27221045369794, tot 265.27221045369794\n", "297, int 2.2406438659925977e-16, bc 1.2197279610340753e-18, ic 265.27221045369794, tot 265.27221045369794\n", "298, int 2.2406438659925977e-16, bc 1.3552525863599098e-19, ic 265.2722104536978, tot 265.2722104536978\n", "299, int 2.2406438659925977e-16, bc 1.2197279610340753e-18, ic 265.2722104536978, tot 265.2722104536978\n", "300, int 2.2406438659925977e-16, bc 5.421010345439639e-19, ic 265.2722104536978, tot 265.2722104536978\n", "301, int 2.2406438659925977e-16, bc 1.3552525863599098e-19, ic 265.2722104536979, tot 265.2722104536979\n", "302, int 2.2406438659925977e-16, bc 5.421010345439639e-19, ic 265.2722104536979, tot 265.2722104536979\n", "303, int 2.2406438659925977e-16, bc 1.3552525863599098e-19, ic 265.2722104536979, tot 265.2722104536979\n", "304, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "305, int 2.2406438659925977e-16, bc 1.3552525863599098e-19, ic 265.2722104536978, tot 265.2722104536978\n", "306, int 2.2406438659925977e-16, bc 1.3552525863599098e-19, ic 265.2722104536978, tot 265.2722104536978\n", "307, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "308, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "309, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "310, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "311, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "312, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "313, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "314, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "315, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "316, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "317, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "318, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "319, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "320, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "321, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "322, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "323, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "324, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "325, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "326, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "327, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "328, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "329, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "330, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "331, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "332, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "333, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "334, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "335, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "336, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "337, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "338, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "339, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "340, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "341, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "342, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "343, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "344, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "345, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "346, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "347, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "348, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "349, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "350, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "351, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "352, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "353, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "354, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "355, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "356, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "357, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "358, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "359, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "360, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "361, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "362, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "363, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "364, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "365, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "366, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "367, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "368, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "369, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "370, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "371, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "372, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "373, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "374, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "375, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "376, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "377, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "378, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "379, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "380, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "381, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "382, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "383, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "384, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "385, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "386, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "387, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "388, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "389, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "390, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "391, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "392, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "393, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "394, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "395, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "396, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "397, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "398, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "399, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "400, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "401, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "402, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "403, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "404, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "405, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "406, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "407, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "408, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "409, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "410, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "411, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "412, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "413, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "414, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "415, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "416, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "417, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "418, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "419, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "420, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "421, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "422, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "423, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "424, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "425, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "426, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "427, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "428, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "429, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "430, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "431, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "432, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "433, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "434, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "435, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "436, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "437, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "438, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "439, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "440, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "441, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "442, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "443, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "444, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "445, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "446, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "447, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "448, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "449, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "450, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "451, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "452, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "453, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "454, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "455, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "456, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "457, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "458, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "459, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "460, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "461, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "462, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "463, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "464, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "465, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "466, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "467, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "468, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "469, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "470, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "471, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "472, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "473, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "474, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "475, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "476, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "477, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "478, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "479, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "480, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "481, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "482, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "483, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "484, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "485, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "486, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "487, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "488, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "489, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "490, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "491, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "492, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "493, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "494, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "495, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "496, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "497, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "498, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "499, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "500, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "501, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "502, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "503, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "504, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "505, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "506, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "507, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "508, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "509, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "510, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "511, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "512, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "513, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "514, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "515, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "516, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "517, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "518, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "519, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "520, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "521, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "522, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "523, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "524, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "525, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "526, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "527, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "528, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "529, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "530, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "531, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "532, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "533, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "534, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "535, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "536, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "537, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "538, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "539, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "540, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "541, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "542, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "543, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "544, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "545, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "546, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "547, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "548, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "549, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "550, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "551, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "552, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "553, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "554, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "555, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "556, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "557, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "558, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "559, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "560, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "561, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "562, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "563, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "564, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "565, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "566, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "567, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "568, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "569, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "570, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "571, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "572, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "573, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "574, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "575, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "576, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "577, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "578, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "579, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "580, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "581, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "582, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "583, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "584, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "585, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "586, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "587, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "588, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "589, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "590, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "591, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "592, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "593, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "594, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "595, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "596, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "597, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "598, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "599, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "600, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "601, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "602, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "603, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "604, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "605, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "606, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "607, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "608, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "609, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "610, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "611, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "612, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "613, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "614, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "615, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "616, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "617, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "618, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "619, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "620, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "621, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "622, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "623, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "624, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "625, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "626, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "627, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "628, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "629, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "630, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "631, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "632, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "633, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "634, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "635, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "636, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "637, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "638, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "639, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "640, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "641, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "642, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "643, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "644, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "645, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "646, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "647, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "648, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "649, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "650, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "651, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "652, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "653, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "654, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "655, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "656, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "657, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "658, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "659, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "660, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "661, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "662, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "663, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "664, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "665, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "666, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "667, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "668, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "669, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "670, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "671, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "672, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "673, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "674, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "675, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "676, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "677, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "678, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "679, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "680, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "681, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "682, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "683, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "684, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "685, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "686, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "687, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "688, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "689, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "690, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "691, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "692, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "693, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "694, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "695, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "696, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "697, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "698, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "699, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "700, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "701, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "702, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "703, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "704, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "705, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "706, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "707, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "708, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "709, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "710, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "711, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "712, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "713, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "714, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "715, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "716, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "717, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "718, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "719, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "720, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "721, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "722, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "723, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "724, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "725, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "726, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "727, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "728, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "729, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "730, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "731, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "732, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "733, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "734, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "735, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "736, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "737, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "738, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "739, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "740, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "741, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "742, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "743, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "744, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "745, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "746, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "747, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "748, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "749, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "750, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "751, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "752, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "753, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "754, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "755, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "756, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "757, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "758, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "759, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "760, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "761, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "762, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "763, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "764, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "765, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "766, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "767, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "768, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "769, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "770, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "771, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "772, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "773, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "774, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "775, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "776, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "777, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "778, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "779, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "780, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "781, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "782, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "783, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "784, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "785, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "786, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "787, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "788, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "789, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "790, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "791, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "792, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "793, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "794, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "795, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "796, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "797, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "798, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "799, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "800, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "801, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "802, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "803, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "804, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "805, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "806, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "807, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "808, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "809, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "810, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "811, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "812, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "813, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "814, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "815, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "816, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "817, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "818, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "819, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "820, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "821, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "822, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "823, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "824, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "825, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "826, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "827, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "828, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "829, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "830, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "831, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "832, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "833, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "834, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "835, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "836, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "837, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "838, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "839, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "840, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "841, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "842, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "843, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "844, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "845, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "846, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "847, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "848, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "849, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "850, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "851, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "852, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "853, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "854, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "855, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "856, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "857, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "858, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "859, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "860, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "861, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "862, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "863, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "864, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "865, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "866, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "867, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "868, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "869, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "870, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "871, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "872, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "873, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "874, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "875, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "876, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "877, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "878, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "879, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "880, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "881, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "882, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "883, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "884, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "885, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "886, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "887, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "888, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "889, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "890, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "891, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "892, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "893, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "894, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "895, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "896, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "897, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "898, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "899, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "900, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "901, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "902, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "903, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "904, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "905, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "906, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "907, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "908, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "909, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "910, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "911, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "912, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "913, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "914, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "915, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "916, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "917, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "918, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "919, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "920, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "921, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "922, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "923, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "924, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "925, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "926, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "927, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "928, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "929, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "930, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "931, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "932, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "933, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "934, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "935, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "936, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "937, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "938, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "939, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "940, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "941, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "942, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "943, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "944, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "945, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "946, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "947, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "948, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "949, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "950, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "951, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "952, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "953, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "954, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "955, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "956, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "957, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "958, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "959, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "960, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "961, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "962, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "963, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "964, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "965, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "966, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "967, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "968, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "969, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "970, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "971, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "972, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "973, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "974, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "975, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "976, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "977, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "978, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "979, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "980, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "981, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "982, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "983, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "984, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "985, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "986, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "987, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "988, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "989, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "990, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "991, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "992, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "993, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "994, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "995, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "996, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "997, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "998, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "999, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n", "1000, int 2.2406438659925977e-16, bc 0.0, ic 265.2722104536978, tot 265.2722104536978\n" ] } ], "source": [ "def fit(model, x_input, c, epoch) -> list:\n", " def int_loss(d2u_di2, c):\n", " # print(np.array(d2u_di2[0][0:-1]))\n", " return tf.reduce_mean(\n", " (np.array(d2u_di2[0][0:-1])-c**2*np.array(d2u_di2[0][-1]))**2)\n", "\n", " def bc_loss(u):\n", " lambda_b = 10\n", " return tf.cast(lambda_b*tf.reduce_mean(u[0]**2+u[-1]**2), tf.float64)\n", "\n", " def ic_loss(u, du_di):\n", " lambda_c = 10\n", " gg1 = tf.reduce_mean((np.asarray(u)-np.asarray(ic))**2).numpy()\n", " gg2 = tf.reduce_mean(du_di[0][0:-1]**2).numpy()\n", " gg3 = gg1+gg2\n", " return lambda_c*gg3\n", "\n", " optimizer = keras.optimizers.Adam(learning_rate=1e-3)\n", " interior_losses = []\n", " boundary_losses = []\n", " total_losses = []\n", " for ep in range(1, epoch+1):\n", " # the first tier tape for computing the gradient of the whole network\n", " with tf.GradientTape() as tape_0:\n", " with tf.GradientTape() as tape_1:\n", " tape_1.watch(x_input)\n", " with tf.GradientTape() as tape_2:\n", " tape_2.watch(x_input)\n", " # u will be [21, 1]\n", " u = model(x_input)\n", " # print(u)\n", " # this will return both du_dx and du_dt\n", " # the shape of du_di is [x/dx, 2]\n", " du_di = tape_2.gradient(u, x_input)\n", " # print(du_di)\n", " d2u_di2 = tape_1.gradient(du_di, x_input)\n", " # print(d2u_di2)\n", " # # del tape_2, tape_1\n", " interior_loss = int_loss(d2u_di2, c)\n", " boundary_loss = bc_loss(u[0])\n", " # print(x_input[-1])\n", " if x_input[-1][-1] == 0:\n", " initial_loss = ic_loss(u[0], du_di)\n", " else:\n", " initial_loss = 0\n", " # print(interior_loss, boundary_loss,initial_loss)\n", " total_loss = interior_loss+boundary_loss+initial_loss\n", " # the final gradient of the whole network\n", " grads = tape_0.gradient(total_loss, model.trainable_variables)\n", " # keep records of losses\n", " interior_losses.append(interior_loss)\n", " boundary_losses.append(boundary_loss)\n", " total_losses.append(total_loss)\n", " optimizer.apply_gradients(zip(grads, model.trainable_variables))\n", " print(f\"{ep}, int {interior_loss.numpy()}, bc {boundary_loss.numpy()}, ic {initial_loss}, tot {total_loss.numpy()}\")\n", " # return interior_losses, boundary_losses, total_losses, u\n", "fit(model, tf.reshape(x_input[0],(1,22)), c, 1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get the model" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "model = get_model(22, 21, 10, 10, act_func='tanh')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare dataset" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(21, 22)\n", "The shape of ic: (1, 21)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEJCAYAAACE39xMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAy00lEQVR4nO3de3hU1b3/8feamUxCIEDIAJEQLgESknBLjAasAmIMiNeq5dQLVSu1nhxLqZUj3ooeq01BqgcLx/ZAQe2vVVvtqdaKNBUJiCCQBDERQiB4gwC5cUkISWav3x8DKSGBmSQz2XP5vp6Hh8zM3rM/i4Eve9Zeey2ltdYIIYQIeBazAwghhPAOKehCCBEkpKALIUSQkIIuhBBBQgq6EEIECSnoQggRJKSgC58ZNmwYP//5z73+vvv370cpxcaNG72epzPv/eGHH6KU4uuvv+5QHiG8TQq66DCl1AV/DRs2zKfHj4+P5+DBg2RmZnZov61bt/KTn/yk5fHIkSN58sknvfLeXWWz2Vi9enWH95szZw5Tp071eh4RmGxmBxCB5+DBgy0/f/LJJ9x444188sknxMfHA2C1Wn16fKvVSmxsbIf369+/v8/eWwh/IGfoosNiY2NbfvXr1w9wFcszz51dOBsbG/nxj39Mv379GDhwIA899BBOp7PV+7344ouMHj2aiIgIRo0axTPPPENzc/N5j39ut8iZx2+88QbXX389kZGRJCQk8Oqrr7ba7+wul6lTp7J3716eeuqplm8W+/fvb7fL5bHHHiM5OZnIyEji4+O5//77OXr0aIf+zIqLi5k+fTp9+/alZ8+eJCcnt+QbNmwYTqeTe+65pyULQE1NDXfeeSdDhgyhR48eJCUlsWTJEs7c3P3kk0+ycuVK1q9f37LfmbP8EydO8OMf/5i4uDgiIyNJS0vjrbfe6lBmEYC0EF2wYcMGDejy8vI2rw0dOlT37dtX/+IXv9ClpaX6tdde01arVf/ud79r2WbhwoV6yJAh+q233tL79u3T7777ro6Pj9ePP/74eY9ZXl6uAb1hw4ZWj4cPH65ff/11vWfPHv3www9rq9WqS0tLW+V5+umntdZaV1VV6WHDhumf/vSn+uDBg/rgwYO6ubm5zXtrrfXTTz+t8/PzdXl5uc7Ly9NJSUn6e9/7Xsvr69at04D+6quvzpt57Nix+rbbbtPFxcV67969+u9//7t+5513tNZaHz58WFutVv3CCy+0ZNFa64MHD+rc3Fy9fft2vW/fPv3qq6/qnj17tvz5HT9+XN9+++160qRJLfvV19drwzD01KlT9ZQpU/SGDRv03r179W9+8xsdFham8/LyzptRBD4p6KJL3BX066+/vtVz06dP19/97ne11lrX1dXpHj166Pfee6/VNi+//LLu06fPeY95voK+ZMmSlm2ampp0z5499UsvvdQqz5mCrrXWI0aM0AsXLrzge7fnrbfe0na7XTudTq21ZwW9d+/eetWqVed93Wq1XvD1M+bOnauzsrJaHt977716ypQprbZZt26dDg8P17W1ta2ev+eee/SNN97o9hgicEkfuvCpCRMmtHocFxdHeXk54OqGOHnyJLfccktLNwOA0+mkoaGBI0eOeNTv3d6xbDYbAwcO5NChQ13KD/DWW2/xwgsvUFZWxrFjxzAMg8bGRioqKhg0aJBH7/HQQw8xZ84cVq9ezdSpU7nhhhtIT0+/4D6GYbBo0SJee+01vv76axoaGmhqamLo0KEX3G/r1q00NjYSFxfX6vnGxkZGjRrlUV4RmKSgC5+y2+2tHiulMAwDoOX3P/3pTyQmJrbZ90z/vDeO1VlbtmzhO9/5Do888giLFy8mOjqazZs3c9ddd9HY2Ojx+zzxxBPccccdrFmzhg8++IBnn32W//zP/7zgMMolS5bwi1/8gl/96lekp6cTFRXF888/z7vvvnvBYxmGQZ8+fdi6dWub1879MxLBRQq6ME1qaioRERHs27ePmTNndvvx7XZ7mwu059q4cSMOh6NV4f3zn//cqeMlJCSQk5NDTk4Oubm5LF68uOV928uSn5/PjBkzuPfee1ue27Nnj9s2ZGRkUFtbS0NDA2PGjOlUVhGYpKAL0/Tq1YtHH32URx99FICrr76a5uZmdu7cSWFhIb/85S99evzhw4fz0Ucf8eWXXxIZGdnuN4KkpCSOHDnCypUrufLKK9m4cSPLly/v0HFOnDjBww8/zC233MLw4cOpra1lzZo1pKSktMqybt06rrnmGux2Ow6Hg6SkJF599VXWrVtHXFwcr7zyClu2bCE6OrrVfn/6058oLi5m4MCBREVFMW3aNLKysrj55pv55S9/yfjx46mpqWHTpk1ERETwgx/8oPN/aMKvybBFYaonnniC559/nhUr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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dx = 0.05\n", "dt = 0.05\n", "time_span = 1\n", "x_end = 1\n", "\n", "x_list = np.arange(0, 1, dx)\n", "t_list = np.arange(0, 1, dt)\n", "# shape = (21,21)\n", "x_input = [[xi for xi in np.arange(0, x_end+dx, dx)] + [t] for t in np.arange(0, time_span+dt,dt)]\n", "# print(x_input)\n", "\n", "x_input = tf.constant(x_input)\n", "print(np.shape(x_input))\n", "# # Get the initial condition (t=0)\n", "ic = init_fn(x_input[0,:-1], 0.5, 0.1).reshape([int(x_end/dx)+1, 1])\n", "plt.plot(x_input[0,:-1], ic)\n", "plt.title(\"The initial state\")\n", "ic = tf.constant(ic, shape=(1,21))\n", "# # print(ic)\n", "print(f\"The shape of ic: {np.shape(ic)}\")" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model(tf.reshape(x_input[0],(1,22)))" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tf.Tensor(\n", "[[-0.012898 0.02222678 -0.0128542 -0.01158767 0.03555278 0.08095921\n", " 0.00429811 0.050879 -0.00666965 0.01769467 -0.01542692 0.01694963\n", " 0.05618155 0.11014224 0.07092215 0.01258487 0.00087706 -0.09974011\n", " -0.06612167 -0.03730256 0.10024071]], shape=(1, 21), dtype=float32)\n" ] }, { "ename": "InvalidArgumentError", "evalue": "Incompatible shapes: [0,21] vs. [21,1] [Op:Sub]", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mInvalidArgumentError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/var/folders/6h/mmvp5df90fb3fsqtc5d9mxt40000gn/T/ipykernel_47351/3380751972.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# for t_s in range(len(x_input)):\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_input\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m22\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/var/folders/6h/mmvp5df90fb3fsqtc5d9mxt40000gn/T/ipykernel_47351/1116548464.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(model, x_input, c, epoch)\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0;31m# print(x_input[-1])\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 76\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mx_input\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 77\u001b[0;31m \u001b[0minitial_loss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mic_loss\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdu_di\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 78\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0minitial_loss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/var/folders/6h/mmvp5df90fb3fsqtc5d9mxt40000gn/T/ipykernel_47351/1116548464.py\u001b[0m in \u001b[0;36mic_loss\u001b[0;34m(u, du_di)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0mlambda_c\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m100\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 44\u001b[0m \u001b[0;31m# shape of ic is [101, 1]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 45\u001b[0;31m \u001b[0mgg1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreduce_mean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mic\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 46\u001b[0m \u001b[0mgg2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreduce_mean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdu_di\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0;31m# print(np.shape(gg1), np.shape(gg2))\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/miniforge3/envs/tf/lib/python3.8/site-packages/tensorflow/python/ops/math_ops.py\u001b[0m in \u001b[0;36mbinary_op_wrapper\u001b[0;34m(x, y)\u001b[0m\n\u001b[1;32m 1232\u001b[0m \u001b[0;31m# r_binary_op_wrapper use different force_same_dtype values.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1233\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmaybe_promote_tensors\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mforce_same_dtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1234\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1235\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1236\u001b[0m \u001b[0;31m# Even if dispatching the op failed, the RHS may be a tensor aware\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/miniforge3/envs/tf/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[0;34m\"\"\"Call target, and fall back on dispatchers if there is a TypeError.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 205\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 206\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 207\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 208\u001b[0m \u001b[0;31m# Note: convert_to_eager_tensor currently raises a ValueError, not a\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/miniforge3/envs/tf/lib/python3.8/site-packages/tensorflow/python/ops/math_ops.py\u001b[0m in \u001b[0;36msubtract\u001b[0;34m(x, y, name)\u001b[0m\n\u001b[1;32m 546\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mdispatch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_dispatch_support\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 547\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msubtract\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 548\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mgen_math_ops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msub\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 549\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 550\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/miniforge3/envs/tf/lib/python3.8/site-packages/tensorflow/python/ops/gen_math_ops.py\u001b[0m in \u001b[0;36msub\u001b[0;34m(x, y, name)\u001b[0m\n\u001b[1;32m 10550\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_result\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10551\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0m_core\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_NotOkStatusException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m> 10552\u001b[0;31m \u001b[0m_ops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraise_from_not_ok_status\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10553\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0m_core\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_FallbackException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10554\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/miniforge3/envs/tf/lib/python3.8/site-packages/tensorflow/python/framework/ops.py\u001b[0m in \u001b[0;36mraise_from_not_ok_status\u001b[0;34m(e, name)\u001b[0m\n\u001b[1;32m 6895\u001b[0m \u001b[0mmessage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmessage\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\" name: \"\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mname\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0;34m\"\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6896\u001b[0m \u001b[0;31m# pylint: disable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 6897\u001b[0;31m \u001b[0msix\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraise_from\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_status_to_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6898\u001b[0m \u001b[0;31m# pylint: enable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6899\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/miniforge3/envs/tf/lib/python3.8/site-packages/six.py\u001b[0m in \u001b[0;36mraise_from\u001b[0;34m(value, from_value)\u001b[0m\n", "\u001b[0;31mInvalidArgumentError\u001b[0m: Incompatible shapes: [0,21] vs. [21,1] [Op:Sub]" ] } ], "source": [ "# for t_s in range(len(x_input)):\n", "fit(model, tf.reshape(x_input[0],(1,22)), c, 1)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tf.constant([1,2,3])**2" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1, int 2.470602543412797e-13,bc 5.600417352091824e-10, ic 27.93001890403208, tot 27.93001890459237\n", "2, int 2.4425813147832335e-13,bc 2.392385738403391e-07, ic 27.93218612892408, tot 27.9321863681629\n", "3, int 2.324050076901599e-13,bc 1.5172992107181926e-07, ic 27.928302290243934, tot 27.928302441974086\n", "4, int 2.3046771450012425e-13,bc 2.0206579165460425e-07, ic 27.92803764561826, tot 27.928037847684283\n", "5, int 2.352963053842054e-13,bc 7.176923499940813e-09, ic 27.9296636603352, tot 27.92966366751236\n", "6, int 2.4025543507088934e-13,bc 8.822872388236647e-08, ic 27.93133735876812, tot 27.931337446997084\n", "7, int 2.403019532868571e-13,bc 1.4195906317127083e-07, ic 27.93168783407957, tot 27.931687976038873\n", "8, int 2.35714537272552e-13,bc 3.558021433036629e-08, ic 27.93085336904624, tot 27.93085340462669\n", "9, int 2.294745692627271e-13,bc 9.842421988537353e-09, ic 27.92959690312545, tot 27.9295969129681\n", "10, int 2.248442241127396e-13,bc 8.243357996207124e-08, ic 27.9287552855344, tot 27.928755367968204\n", "11, int 2.236033020597819e-13,bc 7.675150470731751e-08, ic 27.928805353433805, tot 27.928805430185534\n", "12, int 2.2510484645523988e-13,bc 1.2215240374757741e-08, ic 27.929549219402105, tot 27.92954923161757\n", "13, int 2.273677984759475e-13,bc 1.1239209563029817e-08, ic 27.930483820234567, tot 27.930483831474003\n", "14, int 2.281862736653623e-13,bc 5.556395876737952e-08, ic 27.931065561567703, tot 27.93106561713189\n", "15, int 2.2641405233353569e-13,bc 4.8521204831786235e-08, ic 27.930996420176008, tot 27.93099646869744\n", "16, int 2.2255037975056165e-13,bc 7.699388682169683e-09, ic 27.930400373721262, tot 27.930400381420874\n", "17, int 2.1811716663835533e-13,bc 7.372367605285035e-09, ic 27.92965650774635, tot 27.929656515118936\n", "18, int 2.1479524961267865e-13,bc 3.6240564327272295e-08, ic 27.92919159151023, tot 27.929191627751006\n", "19, int 2.1349828579447626e-13,bc 3.274632476291117e-08, ic 27.9292297384786, tot 27.92922977122514\n", "20, int 2.1392109126316796e-13,bc 5.694131388622736e-09, ic 27.9297041914489, tot 27.929704197143245\n" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/var/folders/6h/mmvp5df90fb3fsqtc5d9mxt40000gn/T/ipykernel_41481/3826703814.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlosses\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx_input\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepoch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/var/folders/6h/mmvp5df90fb3fsqtc5d9mxt40000gn/T/ipykernel_41481/2776831954.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(model, x_input, c, epoch)\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[0md2u_di2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtape_1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgradient\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdu_di\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx_input\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mtape_2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtape_1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 72\u001b[0;31m \u001b[0minterior_loss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint_loss\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md2u_di2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 73\u001b[0m \u001b[0mboundary_loss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbc_loss\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 74\u001b[0m \u001b[0minitial_loss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mic_loss\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdu_di\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/var/folders/6h/mmvp5df90fb3fsqtc5d9mxt40000gn/T/ipykernel_41481/2776831954.py\u001b[0m in \u001b[0;36mint_loss\u001b[0;34m(d2u_di2, c)\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md2u_di2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mj\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md2u_di2\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 23\u001b[0;31m \u001b[0md2u_dx2\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0md2u_di2\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 24\u001b[0m \u001b[0md2u_dt2\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0md2u_di2\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0;31m# d2u_dx2 is [101, 101, 1]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/miniforge3/envs/tf/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[0;34m\"\"\"Call target, and fall back on dispatchers if there is a TypeError.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 205\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 206\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 207\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 208\u001b[0m \u001b[0;31m# Note: convert_to_eager_tensor currently raises a ValueError, not a\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/miniforge3/envs/tf/lib/python3.8/site-packages/tensorflow/python/ops/array_ops.py\u001b[0m in \u001b[0;36m_slice_helper\u001b[0;34m(tensor, slice_spec, var)\u001b[0m\n\u001b[1;32m 1024\u001b[0m skip_on_eager=False) as name:\n\u001b[1;32m 1025\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mbegin\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m packed_begin, packed_end, packed_strides = (stack(begin), stack(end),\n\u001b[0m\u001b[1;32m 1027\u001b[0m stack(strides))\n\u001b[1;32m 1028\u001b[0m if (packed_begin.dtype == dtypes.int64 or\n", "\u001b[0;32m~/miniforge3/envs/tf/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[0;34m\"\"\"Call target, and fall back on dispatchers if there is a TypeError.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 205\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 206\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 207\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 208\u001b[0m \u001b[0;31m# Note: convert_to_eager_tensor currently raises a ValueError, not a\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/miniforge3/envs/tf/lib/python3.8/site-packages/tensorflow/python/ops/array_ops.py\u001b[0m in \u001b[0;36mstack\u001b[0;34m(values, axis, name)\u001b[0m\n\u001b[1;32m 1410\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1411\u001b[0m \u001b[0;31m# If the input is a constant list, it can be converted to a constant op\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1412\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconvert_to_tensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1413\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1414\u001b[0m \u001b[0;32mpass\u001b[0m \u001b[0;31m# Input list contains non-constant tensors\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/miniforge3/envs/tf/lib/python3.8/site-packages/tensorflow/python/profiler/trace.py\u001b[0m in \u001b[0;36mwrapped\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 161\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mTrace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrace_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mtrace_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 162\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 163\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 164\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapped\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "losses = fit(model, x_input, c, epoch)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.05, 1.05, 0.0014371787197887897, 0.0014595753513276578)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "test_predict = model(x_input[0])\n", "plt.plot(x_input[0,:,0], test_predict)\n", "plt.axis('equal')" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[3., 3., 3., 3., 3., 3., 3., 3., 3., 3.],\n", " [3., 3., 3., 3., 3., 3., 3., 3., 3., 3.],\n", " [3., 3., 3., 3., 3., 3., 3., 3., 3., 3.],\n", " [3., 3., 3., 3., 3., 3., 3., 3., 3., 3.],\n", " [3., 3., 3., 3., 3., 3., 3., 3., 3., 3.],\n", " [3., 3., 3., 3., 3., 3., 3., 3., 3., 3.],\n", " [3., 3., 3., 3., 3., 3., 3., 3., 3., 3.],\n", " [3., 3., 3., 3., 3., 3., 3., 3., 3., 3.],\n", " [3., 3., 3., 3., 3., 3., 3., 3., 3., 3.],\n", " [3., 3., 3., 3., 3., 3., 3., 3., 3., 3.]])" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_mat = np.asarray(list([[i, 3] for _ in range(10)] for i in range(10)))\n", "first = np.zeros([10,10])\n", "second = np.zeros([10,10])\n", "for i in range(len(test_mat)):\n", " for j in range(len(test_mat[0])):\n", " first[i, j] = test_mat[i, j, 0]\n", " second[i, j] = test_mat[i, j, 1]\n", "# first = np.asarray(first).reshape(10, 10)\n", "# second = np.asarray(second).reshape(10, 10)\n", "second" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def fit_old(model, x_input, c, epoch, verbose=True):\n", "\n", " optimizer = keras.optimizers.Adam(learning_rate=1e-3)\n", " interior_losses = []\n", " boundary_losses = []\n", " total_losses = []\n", " for _ in range(1, epoch+1):\n", " # the first tier tape for computing the gradient of the whole network\n", " with tf.GradientTape() as tape_0:\n", " with tf.GradientTape(persistent=True) as tape_1:\n", " tape_1.watch(x_input)\n", " with tf.GradientTape(persistent=True) as tape_2:\n", " tape_2.watch(x_input)\n", " u = model(x_input)\n", " du_di = tape_2.gradient(u, x_input)\n", " d2u_di2 = tape_1.gradient(du_di, x_input)\n", " del tape_2\n", " del tape_1\n", " d2u_dx2, d2u_dt2 = zip(*d2u_di2)\n", " interior_loss = tf.reduce_mean(\n", " (np.array(d2u_dx2)-c**2*np.array(d2u_dt2))**2)\n", " boundary_loss = 10*(u[0]**2+(u[-1]-1)**2)\n", " loss = interior_loss + boundary_loss + \\\n", " tf.math.reduce_sum(model.losses)\n", "\n", " interior_losses.append(interior_loss)\n", " boundary_losses.append(boundary_loss)\n", " total_losses.append(loss)\n", " grads = tape_0.gradient(loss, model.trainable_variables)\n", " optimizer.apply_gradients(zip(grads, model.trainable_variables))\n", " return interior_losses, boundary_losses, total_losses, u" ] } ], "metadata": { "interpreter": { "hash": "83eb3a94852d7da6265f5c02f9c348bfbb051e60fbf28829dfd0a8aff7ca6bfd" }, "kernelspec": { "display_name": "Python 3.8.12 64-bit ('tf': conda)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.12" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }