{ "cells": [ { "cell_type": "markdown", "id": "0fc6751b", "metadata": {}, "source": [ "# Dense & continuous output\n", "\n", "One of the peculiar features of Taylor's method is that it directly provides,\n", "via Taylor series, *dense* (or *continuous*) output.\n", "That is, the Taylor series built by the integrator at each timestep can be used\n", "to compute the solution of the ODE system at *any time* within the timestep\n", "(and not only at the endpoint) via polynomial evaluation.\n", "\n", "Because the construction of the Taylor series is part of the timestepping algorithm,\n", "support for dense output comes at essentially no extra\n", "cost. Additionally, because the dense output is computed via the\n", "Taylor series of the solution of the ODE system, its accuracy\n", "is guaranteed to respect the error tolerance set in the integrator.\n", "\n", "Dense output can be used either from a {ref}`low-level API `, which gives direct access to\n", "the coefficients of the Taylor polynomials of the solution within a timestep,\n", "or from a {ref}`higher-level API `, which facilitates the common use case of using the coefficients\n", "of the Taylor polynomials to compute the continuous extension of the solution.\n", "If you are interested only in the latter, you can skip the next sections and jump\n", "directly to the {ref}`continuous output section `.\n", "\n", "In order to illustrate how to use dense output in heyoka.py,\n", "we will keep things simple and consider a simple harmonic oscillator:\n", "\n", "$$\n", " \\begin{cases}\n", " x^\\prime = v \\\\\n", " v^\\prime = -x\n", " \\end{cases},\n", "$$\n", "\n", "with initial conditions\n", "\n", "$$\n", " \\begin{cases}\n", " x\\left( 0 \\right) = 0 \\\\\n", " v\\left( 0 \\right) = 1\n", " \\end{cases}.\n", "$$\n", "\n", "The analytical solution for this simple ODE system is, of course,\n", "\n", "$$\n", " \\begin{cases}\n", " x\\left( t \\right) = \\sin\\left(t\\right) \\\\\n", " v\\left( t \\right) = \\cos\\left(t\\right)\n", " \\end{cases}.\n", "$$\n", "\n", "(dense_output_low_level)=\n", "## Dense output for the ``step()`` methods\n", "\n", "Let's start by setting up the integrator:" ] }, { "cell_type": "code", "execution_count": 1, "id": "075fd172", "metadata": {}, "outputs": [], "source": [ "import heyoka as hy\n", "import numpy as np\n", "\n", "x, v = hy.make_vars(\"x\", \"v\")\n", "\n", "ta = hy.taylor_adaptive([(x, v),\n", " (v, -x)],\n", " state = [0., 1.])" ] }, { "cell_type": "markdown", "id": "5aaf26b4", "metadata": {}, "source": [ "Enabling dense output in heyoka.py is a two-step process.\n", "\n", "The first step is to invoke one of the ``step()`` methods\n", "passing an extra boolean parameter set to ``True``:" ] }, { "cell_type": "code", "execution_count": 2, "id": "ed5a015d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(, 1.03425164317259)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ta.step(write_tc = True)" ] }, { "cell_type": "markdown", "id": "1676418a", "metadata": {}, "source": [ "The extra ``write_tc = True`` argument instructs the integrator\n", "to record into an internal array the list of Taylor series\n", "coefficients that were generated by the timestepping algorithm.\n", "We can fetch the list of Taylor coefficients\n", "via the ``tc`` read-only property:" ] }, { "cell_type": "code", "execution_count": 3, "id": "300ac177", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.00000000e+00, 1.00000000e+00, -0.00000000e+00,\n", " -1.66666667e-01, 0.00000000e+00, 8.33333333e-03,\n", " -0.00000000e+00, -1.98412698e-04, 0.00000000e+00,\n", " 2.75573192e-06, -0.00000000e+00, -2.50521084e-08,\n", " 0.00000000e+00, 1.60590438e-10, -0.00000000e+00,\n", " -7.64716373e-13, 0.00000000e+00, 2.81145725e-15,\n", " -0.00000000e+00, -8.22063525e-18, 0.00000000e+00],\n", " [ 1.00000000e+00, -0.00000000e+00, -5.00000000e-01,\n", " 0.00000000e+00, 4.16666667e-02, -0.00000000e+00,\n", " -1.38888889e-03, 0.00000000e+00, 2.48015873e-05,\n", " -0.00000000e+00, -2.75573192e-07, 0.00000000e+00,\n", " 2.08767570e-09, -0.00000000e+00, -1.14707456e-11,\n", " 0.00000000e+00, 4.77947733e-14, -0.00000000e+00,\n", " -1.56192070e-16, 0.00000000e+00, 4.11031762e-19]])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ta.tc" ] }, { "cell_type": "markdown", "id": "5f5d899b", "metadata": {}, "source": [ "The Taylor coefficients are stored in a 2D array, where each row refers to a different state variable and the number of columns is the Taylor order of the integrator plus one. Thus, the zero-order coefficients for the $x$ and $v$ variables are, respectively:" ] }, { "cell_type": "code", "execution_count": 4, "id": "71841158", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 1.])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ta.tc[:, 0]" ] }, { "cell_type": "markdown", "id": "e1f4e187", "metadata": {}, "source": [ "Indeed, the zero-order Taylor coefficients for the state variables are nothing but\n", "the initial conditions at the beginning of the timestep that was just taken.\n", "\n", "This brings us to a very important point:\n", "\n", "```{warning}\n", "\n", "The Taylor coefficients stored in an integrator object\n", "always refer to the **last** step taken and **not** to the next\n", "step that the integrator might take.\n", "\n", "It is **very** important to keep this in mind, as this is a frequent source of confusion\n", "and subtle bugs.\n", "```\n", "\n", "We are now ready to ask the integrator to compute the value of the solution at some\n", "arbitrary time. Let's pick $t = 0.5$,\n", "which is about halfway through the timestep that was just taken:" ] }, { "cell_type": "code", "execution_count": 5, "id": "86ced14d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.47942554, 0.87758256])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ta.update_d_output(t = 0.5)" ] }, { "cell_type": "markdown", "id": "58bff24f", "metadata": {}, "source": [ "The ``update_d_output()`` method takes in input an *absolute* time coordinate\n", "and returns a reference to an internal array that will contain the state of the system\n", "at the specified time coordinate, as computed by the evaluation of the Taylor series.\n", "``update_d_output()`` can also be called with a time coordinate relative to the current time\n", "by passing ``rel_time = True`` as an additional function argument.\n", "\n", "The dense output array can be accessed directly via the ``d_output`` property:" ] }, { "cell_type": "code", "execution_count": 6, "id": "4f87b0e7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.47942554, 0.87758256])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ta.d_output" ] }, { "cell_type": "markdown", "id": "fda73301", "metadata": {}, "source": [ "Let's now compare the dense output for the $x$ variable to the exact analytical solution for $t \\in \\left[ 0, 1 \\right]$:" ] }, { "cell_type": "code", "execution_count": 7, "id": "948a6f53", "metadata": {}, "outputs": [ { "data": { "image/png": "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LJS0bXhMCnC9s35s+XcJSJow5oOHMXMd/oXR5LLe6b1HGgghUp7PonXr1mnt2rXOGLt169Y5fzZu3Kjdu3frPe95T2QL7e/v10knnaS77rprwtfvuusunXpq46tby5cvn3L7O++8UyeffHLD/fQwx7nHLJEk/ezxzU51hVc/G2/yYf8MeLPvnEENZjMaq1Sdplp+bNpV1N6xivrSKS6m+GAH4jva2G5Q72xO4Geado9vu13rAZgrjL29nRgBhqm8jPBrpdiBTu/oHZ7PogMPrJV0Vqvt79sO6vLLL9fFF1+sk08+WcuXL9e//du/6fnnn9ell14qqVY6v3HjRv37v/+7JOnSSy/VihUrdPnll+v973+/HnroId144436/ve/37XHAG9ec8RC5bJpPb+9oD++sFvH7Dvb0/12jZScZkPnHktQ70c6ndKhi2bo8Y27tXrLsA5Z6C/bbu8JP2jBjMDd83uRHaxtDyFTT+BnnnYrMTi2QHKF0YW73U7/CCaMTL09sYYLMgiD70tDdsA8nUsuuSTwYlq56KKLtG3bNn32s5/Vpk2bdMwxx+j22293Ljhs2rRpwsz6gw8+WLfffrs+8pGP6Gtf+5r22WcfffWrX03cOLskyvf36YzDF+rnf3xRdzy+2XNQ/8s/vahSxdJhi4acju/w7rCFQ3p8426t2TKss322aXBK79vYT9+L5g+NB33DwUZSjpWr2lOsfTCg/N48dvVE0J4J29laASTWoKv8vlWPqOnU53oTGHaSHYiPVaqBtixK0kiplijlggzC4Duo//u///sJfy+VSioUCurv71c+n480qJekyy67TJdddlnD7910001TvnbGGWfo0UfNGM8Af847dql+/scXdfvjm/S/zjrc0z92P3us1kPhPErvA1m2uHYhZE2ATux2kzyCen/soG93saxSpeq7ysEu606n1FanZ0Rj3ozaMdm+N9hFm+1k6oHEsgNDy5JGy1WnpNuPwnj5d5D7Ijh3ID5SqmhmkKCeTD1C5PsM3LFjx4Q/w8PDeuqpp/SqV72KsnaE6rVHLlJ/Jq1nXtrradzX3tGy7n36JUm1MUHwz26WZ49I88MeZ3coQb0vswezsq9XBRlrtW08Azw33x9o/COiZV+0CVx+bx9fgnogcdzBXNAybqf8nsCwowb60s6/3UH31dPkEGEKZePrsmXL9IUv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b3vb2/TMM89o3rx5nVwqepTfc/RLX/qSrr/+eq1du9b52nXXXacvfvGLWr9+fUfWjN6VSqV022236cILL5z2NkmJmcjUx8DY2JgeeeQRnXXWWRO+ftZZZ+nBBx9seJ+HHnpoyu3PPvtsPfzwwyqVSpGtFb0pyDk6WbVa1Z49e/hgikgEPUe//e1va+3atfr0pz8d9RLR44Kcoz/5yU908skn64tf/KL23XdfHX744briiis0MjLSiSWjxwQ5R0899VRt2LBBt99+uyzL0osvvqgf/vCHesMb3tCJJQMtJSVm6uv2AtDa1q1bValUtHjx4glfX7x4sTZv3tzwPps3b254+3K5rK1bt2rp0qWRrRe9J8g5OtmXv/xl7d27V29961ujWCJ6XJBzdPXq1fr4xz+u+++/X319/HOJaAU5R5955hk98MADyuVyuu2227R161Zddtll2r59O/vqEbog5+ipp56qm2++WRdddJGKxaLK5bIuuOACXXfddZ1YMtBSUmImMvUxkkqlJvzdsqwpX2t1+0ZfB8Li9xy1ff/739dVV12lW265RYsWLYpqeYDnc7RSqejtb3+7PvOZz+jwww/v1PIAX++j1WpVqVRKN998s17xilfovPPO07XXXqubbrqJbD0i4+ccfeKJJ/ShD31In/rUp/TII4/ojjvu0Lp163TppZd2YqmAJ0mImUg9xMCCBQuUyWSmXAXdsmXLlCtLtiVLljS8fV9fn+bPnx/ZWtGbgpyjtltuuUXvfe979Z//+Z96/etfH+Uy0cP8nqN79uzRww8/rJUrV+qDH/ygpFoAZVmW+vr6dOedd+q1r31tR9aO3hDkfXTp0qXad999NXv2bOdrRx11lCzL0oYNG7Rs2bJI14zeEuQcveaaa3Taaafpox/9qCTp5S9/uWbMmKHTTz9d//RP/xSbLCiSKykxE5n6GOjv79dJJ52ku+66a8LX77rrLp166qkN77N8+fIpt7/zzjt18sknK5vNRrZW9KYg56hUy9C/613v0ve+9z321yFSfs/RWbNm6bHHHtOqVaucP5deeqmOOOIIrVq1Sqecckqnlo4eEeR99LTTTtMLL7yg4eFh52tPP/200um09ttvv0jXi94T5BwtFApKpyeGG5lMRlI9Gwp0U2JiJgux8IMf/MDKZrPWjTfeaD3xxBPWhz/8YWvGjBnWs88+a1mWZX384x+3Lr74Yuf2zzzzjJXP562PfOQj1hNPPGHdeOONVjabtX74wx926yEg4fyeo9/73vesvr4+62tf+5q1adMm58/OnTu79RCQcH7P0ck+/elPW8cdd1yHVote5Pcc3bNnj7XffvtZf/mXf2n98Y9/tO69915r2bJl1vve975uPQQknN9z9Nvf/rbV19dnff3rX7fWrl1rPfDAA9bJJ59sveIVr+jWQ0DC7dmzx1q5cqW1cuVKS5J17bXXWitXrrSee+45y7KSGzMR1MfI1772NevAAw+0+vv7rRNPPNG69957ne+9853vtM4444wJt7/nnnusE044werv77cOOugg6/rrr+/witFr/JyjZ5xxhiVpyp93vvOdnV84eobf91E3gnp0gt9z9Mknn7Re//rXW4ODg9Z+++1nXX755VahUOjwqtFL/J6jX/3qV62jjz7aGhwctJYuXWq94x3vsDZs2NDhVaNX3H333U0/XyY1ZmJOPQAAAAAAMcWeegAAAAAAYoqgHgAAAACAmCKoBwAAAAAgpgjqAQAAAACIKYJ6AAAAAABiiqAeAAAAAICYIqgHAAAAACCmCOoBAEBgV111lY4//vhuLwMAgJ6VsizL6vYiAACAeVKpVNPvv/Od79SKFSs0Ojqq+fPnd2hVAADAjaAeAAA0tHnzZuf/b7nlFn3qU5/SU0895XxtcHBQs2fP7sbSAADAOMrvAQBAQ0uWLHH+zJ49W6lUasrXJpffv+td79KFF16oz3/+81q8eLHmzJmjz3zmMyqXy/roRz+qefPmab/99tO3vvWtCb9r48aNuuiiizR37lzNnz9fb3rTm/Tss8929gEDABBDBPUAACBUv/zlL/XCCy/ovvvu07XXXqurrrpKb3zjGzV37lz95je/0aWXXqpLL71U69evlyQVCgWdeeaZGhoa0n333acHHnhAQ0NDOuecczQ2NtblRwMAgNkI6gEAQKjmzZunr371qzriiCP0nve8R0cccYQKhYI++clPatmyZfrEJz6h/v5+/epXv5Ik/eAHP1A6ndY3v/lNHXvssTrqqKP07W9/W88//7zuueee7j4YAAAM19ftBQAAgGR52ctepnS6njdYvHixjjnmGOfvmUxG8+fP15YtWyRJjzzyiNasWaOZM2dO+DnFYlFr167tzKIBAIgpgnoAABCqbDY74e+pVKrh16rVqiSpWq3qpJNO0s033zzlZy1cuDC6hQIAkAAE9QAAoKtOPPFE3XLLLVq0aJFmzZrV7eUAABAr7KkHAABd9Y53vEMLFizQm970Jt1///1at26d7r33Xv393/+9NmzY0O3lAQBgNIJ6AADQVfl8Xvfdd58OOOAAveUtb9FRRx2l97znPRoZGSFzDwBACynLsqxuLwIAAAAAAPhHph4AAAAAgJgiqAcAAAAAIKYI6gEAAAAAiCmCegAAAAAAYoqgHgAAAACAmCKoBwAAAAAgpgjqAQAAAACIKYJ6AAAAAABiiqAeAAAAAICYIqgHAAAAACCmCOoBAAAAAIgpgnoAAAAAAGLq/wek1KxJl01zDgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from matplotlib.pylab import plt\n", "\n", "# Construct a time grid from t=0 to t=1.\n", "t_grid = np.linspace(0, 1, 100)\n", "\n", "# Compute the dense output for the x variable\n", "# over the time grid.\n", "x_d_out = np.array([ta.update_d_output(t)[0] for t in t_grid])\n", "\n", "# Compare it to the exact solution.\n", "fig = plt.figure(figsize=(12, 6))\n", "plt.plot(t_grid, (x_d_out - np.sin(t_grid)))\n", "plt.xlabel(\"Time\")\n", "plt.ylabel(\"Absolute error\");" ] }, { "cell_type": "markdown", "id": "19120ed5", "metadata": {}, "source": [ "As you can see, the dense output matches the exact solution to machine precision.\n", "\n", "Let's now ask for the dense output at the very end of the timestep that was just taken (i.e., at the current time coordinate), and let's compare it to the current state vector:" ] }, { "cell_type": "code", "execution_count": 8, "id": "04fda936", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 0.])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ta.update_d_output(ta.time) - ta.state" ] }, { "cell_type": "markdown", "id": "ccc39a58", "metadata": {}, "source": [ "That is, as expected, the dense output at the end of the previous timestep\n", "matches the current state of the system to machine precision.\n", "\n", "Before concluding, we need to highlight a couple of caveats regarding the\n", "use of dense output.\n", "\n", "```{note}\n", "\n", "It is the user's responsibility to ensure that the array of Taylor\n", "coefficients contains up-to-date values. In other words, the user needs to remember\n", "to invoke the ``step()`` methods with the extra boolean argument ``write_tc = True``\n", "before invoking ``update_d_output()``.\n", "Failure to do so will result in ``update_d_output()`` producing incorrect values.\n", "```\n", "\n", "```{note}\n", "\n", "The accuracy of dense output is guaranteed to match the integrator's\n", "accuracy only if the time coordinate falls within the last step taken. Note that heyoka.py will\n", "**not** prevent the invocation of ``update_d_output()`` with time coordinates outside the\n", "guaranteed accuracy range - it is the user's responsibility to be aware\n", "that doing so will produce results whose accuracy does not match the integrator's\n", "error tolerance.\n", "```\n", "\n", "The second point can be better appreciated if we try to compute the dense output past the end of the last timestep taken:" ] }, { "cell_type": "code", "execution_count": 9, "id": "373234c7", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Construct a time grid from t=1 to t=3.\n", "t_grid = np.linspace(1, 3, 100)\n", "\n", "# Compute the dense output for the x variable\n", "# over the time grid.\n", "x_d_out = np.array([ta.update_d_output(t)[0] for t in t_grid])\n", "\n", "# Compare it to the exact solution.\n", "fig = plt.figure(figsize=(12, 6))\n", "plt.semilogy(t_grid, abs((x_d_out - np.sin(t_grid)) / np.sin(t_grid)))\n", "plt.xlabel(\"Time\")\n", "plt.ylabel(\"Relative error\");" ] }, { "cell_type": "markdown", "id": "4c47015f", "metadata": {}, "source": [ "As you can see, past $t \\sim 1$ the dense output is still accurate for another $\\sim 0.5$ time units, but eventually the error with respect to the exact solution begins to increase steadily." ] }, { "cell_type": "markdown", "id": "d3fdc856-a40c-48a6-845a-1c2ea2e08a28", "metadata": {}, "source": [ "## Dense output for the ``propagate_*()`` methods\n", "\n", "Dense output can be enabled also for the time-limited propagation methods\n", "``propagate_for()`` and ``propagate_until()`` via the boolean keyword argument\n", "``write_tc``.\n", "\n", "When ``write_tc`` is set to ``True``, the ``propagate_*()`` methods\n", "will internally invoke the ``step()`` methods with the optional boolean\n", "flag ``write_tc`` set to ``True``, so that at the end of each timestep the Taylor coefficients\n", "will be available. The Taylor coefficients can be used, e.g., inside the\n", "optional callback that can be passed to the ``propagate_*()`` methods.\n", "\n", "Note that ``propagate_grid()`` always unconditionally writes the Taylor coefficients\n", "at the end of each timestep, and thus using the ``write_tc`` argument is not necessary.\n", "\n", "(dense_output_hi_level)=\n", "## Continuous output\n", "\n", "Starting with heyoka.py 0.16,\n", "the ``propagate_for()`` and ``propagate_until()`` methods can optionally return a function object\n", "providing continuous output in the integration interval. That is, this function object can be used\n", "to compute the solution at any time within the time interval covered by ``propagate_for/until()``.\n", "\n", "Continuous output is activated by passing the ``c_output = True`` keyword option to the ``propagate_for/until()`` methods.\n", "Let us see an example:" ] }, { "cell_type": "code", "execution_count": 10, "id": "3f9e30d4-6d00-4a26-bd12-49b3bde7c572", "metadata": {}, "outputs": [], "source": [ "# Reset the integrator state.\n", "ta.state[:] = [0, 1]\n", "ta.time = 0\n", "\n", "# Propagate and return the continuous output.\n", "c_out = ta.propagate_until(10., c_output=True)[4]" ] }, { "cell_type": "markdown", "id": "f3416bcc-59fb-4aeb-b27e-dbbb3bb25534", "metadata": {}, "source": [ "The continuous output function object is the fifth element of the tuple returned by ``propagate_for/until()`` (note that if ``c_output`` is set to ``False`` - the default - then the fifth element of the tuple is ``None``).\n", "\n", "Let us print ``c_out`` to screen:" ] }, { "cell_type": "code", "execution_count": 11, "id": "876106e8-df1b-4730-a7c3-bad2420e8b3c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Direction : forward\n", "Time range: [0, 10)\n", "N of steps: 10" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c_out" ] }, { "cell_type": "markdown", "id": "c3d2c49e-cdf1-4503-825f-2b7a749c1557", "metadata": {}, "source": [ "The screen output informs us that the ``c_out`` object is capable of providing continuous output in\n", "the $\\left[0, 10\\right)$ time interval, and that 10 steps were taken during the integration.\n", "\n", "The call operator of the ``c_out`` object accepts in input either\n", "\n", "* a single absolute time coordinate, or\n", "* a 1D vector of absolute time coordinates.\n", "\n", "In the first case, the return value will be a 1D NumPy array containing the state vector at the desired time. In the second case, the return value will be a 2D NumPy array in which each row contains the state vector at the corresponding input time.\n", "\n", "Let us see a couple of examples:" ] }, { "cell_type": "code", "execution_count": 12, "id": "53fe90c0-22bb-45e2-9310-672ee4ef6f1c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "State vector at t=5: [-0.95892427 0.28366219]\n", "\n", "State vectors at t=[1,2,3,4,5]:\n", "[[ 0.84147098 0.54030231]\n", " [ 0.90929743 -0.41614684]\n", " [ 0.14112001 -0.9899925 ]\n", " [-0.7568025 -0.65364362]\n", " [-0.95892427 0.28366219]]\n", "\n" ] } ], "source": [ "# Print the state vector at t = 5.\n", "print(\"State vector at t=5: {}\\n\".format(c_out(5.)))\n", "\n", "# Print the state vectors at a few different times.\n", "print(\"State vectors at t=[1,2,3,4,5]:\\n{}\\n\".format(c_out([1,2,3,4,5])))" ] }, { "cell_type": "markdown", "id": "5327bb85-c33f-4c66-9312-29e2fb6b08e2", "metadata": {}, "source": [ "Let us test the precision of the continuous output over a fine time grid in the $\\left[0, 10\\right]$ time interval:" ] }, { "cell_type": "code", "execution_count": 13, "id": "529a2e50-bf7d-4369-b167-fd7d35c02462", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Construct a time grid from t=0 to t=10.\n", "t_grid = np.linspace(0, 10, 1000)\n", "\n", "# Compute the continuous output for the x variable\n", "# over the time grid.\n", "x_c_out = c_out(t_grid)\n", "\n", "# Compare it to the exact solution.\n", "fig = plt.figure(figsize=(12, 6))\n", "plt.semilogy(t_grid, abs(x_c_out[:,0] - np.sin(t_grid)))\n", "plt.xlabel(\"Time\")\n", "plt.ylabel(\"Absolute error\");" ] }, { "cell_type": "markdown", "id": "6f542616-d8b5-4474-8611-35c04b6f7203", "metadata": {}, "source": [ "As we can see, the continuous output agrees with the analytical solution to machine precision.\n", "\n", "Continuous output is somewhat similar to ``propagate_grid()``, in the sense that both allow to compute the value of the solution at arbitrary time points. ``propagate_grid()`` is computationally more efficient, but it requires to specify up-front the list of times at which the solution should be computed. Continuous output, on the other hand, is not bound to a predetermined time grid, and it can thus be helpful if time coordinates of interest can be identified only after the solution has been computed.\n", "\n", "Before concluding, we need to highlight a couple of caveats regarding the\n", "use of continuous output.\n", "\n", "```{note}\n", "\n", "The ``continuous_output`` function object stores internally the time\n", "coordinate and Taylor coefficients at the end of each step taken during the integration interval.\n", "This means that the memory usage of a ``continuous_output`` object scales linearly\n", "with the number of timesteps taken during the integration interval. Thus, for a sufficiently\n", "long integration interval, the ``continuous_output`` object might end up exhausting the available memory.\n", "```\n", "\n", "```{note}\n", "\n", "Like for dense output, the accuracy of ``continuous_output`` is guaranteed to\n", "match the integrator’s accuracy only if the time coordinate falls within the integration interval.\n", "Note that heyoka.py will not prevent the use of a ``continuous_output`` object outside the\n", "guaranteed accuracy range - it is the user’s responsibility to be aware that doing so will\n", "produce results whose accuracy does not match the integrator’s error tolerance.\n", "```\n", "\n", "Note that, like the other main classes in heyoka.py, ``continuous_output`` supports [serialisation](<./pickling.ipynb>)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.6" } }, "nbformat": 4, "nbformat_minor": 5 }