Skip to content

Instantly share code, notes, and snippets.

@goerz
Created August 11, 2020 03:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save goerz/14b8fdc868ed4fb3419ea2fe3d183310 to your computer and use it in GitHub Desktop.
Save goerz/14b8fdc868ed4fb3419ea2fe3d183310 to your computer and use it in GitHub Desktop.
Numerical instabilities in Krotov's method due to pulse discretization
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Numerical instabilities in Krotov's method due to pulse discretization"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.427918Z",
"start_time": "2020-08-11T02:48:34.156063Z"
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pylab as plt\n",
"import krotov\n",
"from functools import partial\n",
"from itertools import cycle"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.442482Z",
"start_time": "2020-08-11T02:48:35.430446Z"
}
},
"outputs": [],
"source": [
"def plot(\n",
" tlist, *S,\n",
" labels=('control', 'pulse', 'control (restored)'),\n",
" fmts=('x-', 'd', 'o'),\n",
" alphas=(1, 1, 0.4),\n",
" figsize=(8, 5), # inches\n",
" grid=False, show=False, xlim=None, ylim=None\n",
"):\n",
" fig, ax = plt.subplots(figsize=figsize)\n",
" fmt = cycle(fmts)\n",
" label = cycle(labels)\n",
" alpha = cycle(alphas)\n",
" tlist_intervals = (tlist + 0.5 * (tlist[1] - tlist[0]))[:-1]\n",
" for vals in S:\n",
" if len(vals) == len(tlist) - 1:\n",
" x = tlist_intervals\n",
" else:\n",
" x = tlist\n",
" ax.plot(\n",
" x, vals, next(fmt), label=next(label), alpha=next(alpha),\n",
" )\n",
" if grid:\n",
" ax.grid()\n",
" if xlim:\n",
" ax.set_xlim(xlim)\n",
" if ylim:\n",
" ax.set_ylim(ylim)\n",
" ax.legend()\n",
" if show:\n",
" fig.show()\n",
" else:\n",
" return fig"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.451645Z",
"start_time": "2020-08-11T02:48:35.445929Z"
}
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Flattop pulse"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider an analytical \"flattop\" pulse shape with the following parameters:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.460542Z",
"start_time": "2020-08-11T02:48:35.456602Z"
}
},
"outputs": [],
"source": [
"T_RISE = 1.5\n",
"T = 100"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.469950Z",
"start_time": "2020-08-11T02:48:35.464560Z"
}
},
"outputs": [],
"source": [
"Sfunc = partial(\n",
" krotov.shapes.flattop,\n",
" t_start=0.0,\n",
" t_stop=T,\n",
" t_rise=T_RISE,\n",
" func='sinsq',\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is discretized onto a time grid, where we evaluate `Sfunc` *exactly* on the points of a time grid `tlist`:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.480848Z",
"start_time": "2020-08-11T02:48:35.473677Z"
}
},
"outputs": [],
"source": [
"NT = 500"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.493158Z",
"start_time": "2020-08-11T02:48:35.486066Z"
}
},
"outputs": [],
"source": [
"tlist = np.linspace(0, T, NT)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.504239Z",
"start_time": "2020-08-11T02:48:35.497060Z"
}
},
"outputs": [],
"source": [
"def discretize(control, tlist, args=(None,), kwargs=None):\n",
" return np.array(\n",
" [float(control(t, *args, **(kwargs or {}))) for t in tlist],\n",
" dtype=np.float64,\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.512965Z",
"start_time": "2020-08-11T02:48:35.508074Z"
}
},
"outputs": [],
"source": [
"S_control = discretize(Sfunc, tlist, args=())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The result looks as follows:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.724965Z",
"start_time": "2020-08-11T02:48:35.517475Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(tlist, S_control);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## \"Un-averaging\" conversion between time grid sampling and midpoint sampling"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For Krotov's method, we have to re-sample the control to the midpoints of the time grid intervals (since Krotov calculated updates for an interval). Here (as in the `krotov` package), we'll call the values sampled on `tlist` as the \"control\" and the values sampled on the midpoints as the \"pulse\" (this is not standardized nomenclature, but just helps us keep track of variable names and such)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since the \"pulse\" has one less point that the \"control\", the control → pulse conversion is \"lossy\" in general. However, the inverse pulse → control preserves all of the pulse information, if we define it such that the control values are the average of the two adjacent pulse values. We always *exactly* preserves the first and last point, as exact boundary conditions are important for control (especially with the update shape, which usually needs to be exactly zero at the beginning and end)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.733871Z",
"start_time": "2020-08-11T02:48:35.727188Z"
}
},
"outputs": [],
"source": [
"def pulse_onto_tlist(pulse):\n",
" \"\"\"Pulse to control conversion.\"\"\"\n",
" control = np.zeros(len(pulse) + 1, dtype=pulse.dtype.type)\n",
" control[0] = pulse[0]\n",
" for i in range(1, len(control) - 1):\n",
" control[i] = 0.5 * (pulse[i - 1] + pulse[i])\n",
" control[-1] = pulse[-1]\n",
" return control"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The original conversion of the control to a pulse then has to be defined via \"un-averaging\":"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.748255Z",
"start_time": "2020-08-11T02:48:35.737756Z"
}
},
"outputs": [],
"source": [
"def control_onto_interval(control):\n",
" \"\"\"Control to Pulse conversion.\"\"\"\n",
" pulse = np.zeros(len(control) - 1, dtype=control.dtype.type)\n",
" pulse[0] = control[0]\n",
" for i in range(1, len(control) - 1):\n",
" pulse[i] = 2.0 * control[i] - pulse[i - 1]\n",
" pulse[-1] = control[-1]\n",
" return pulse"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, the un-averaging introduces a problem:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.761232Z",
"start_time": "2020-08-11T02:48:35.751894Z"
}
},
"outputs": [],
"source": [
"S_pulse = control_onto_interval(S_control)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:35.958464Z",
"start_time": "2020-08-11T02:48:35.764076Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(tlist, S_control, S_pulse);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A zoomed-in view:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.149713Z",
"start_time": "2020-08-11T02:48:35.960498Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(tlist, S_control, S_pulse, grid=True, xlim=(0, 5), ylim=(0.9, 1.1));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Clearly, the blue control values are the average of the orange pulse values, which we want, but this is achieved by a zig-zag in the pulse values, which we don't want.\n",
"\n",
"If this were used in Krotov as an update-shape, the zig-zag would be imprinted on the optimized pulse at every iteration, leading to potential numerical instability.\n",
"\n",
"The zig-zag problems occurs when there are \"under-sampled\" steep rises but does not occur when the sampling is sufficiently dense that variations in the control values between neighboring time points are small (as the should be if we want to treat the piecewise constant pulse sampled on the grid as a good approximation of the time-continuous original)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note however that we can safely convert the zig-zag pulse back to the control:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.155532Z",
"start_time": "2020-08-11T02:48:36.151802Z"
}
},
"outputs": [],
"source": [
"S_control_rest = pulse_onto_tlist(S_pulse)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.352592Z",
"start_time": "2020-08-11T02:48:36.157532Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(tlist, S_control, S_pulse, S_control_rest);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"zoomed in, on the start of the pulse:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.549499Z",
"start_time": "2020-08-11T02:48:36.354508Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(tlist, S_control, S_pulse, S_control_rest, grid=True, xlim=(0, 3));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We recover the original pulse exactly (technically, except for the last-but-one control value, which was lost in the conversion to the pulse, and whose value in the conversion back to the control is determined only the surrounding values; in this example, it happens to match the original value almost to machine precision)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.561164Z",
"start_time": "2020-08-11T02:48:36.553247Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"4.565792188770956e-15"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(S_control - S_control_rest)[-2]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Every other point is restored *exactly*:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.577187Z",
"start_time": "2020-08-11T02:48:36.564954Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.max(np.abs((S_control - S_control_rest)[:-2]))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.588187Z",
"start_time": "2020-08-11T02:48:36.580374Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.max(np.abs((S_control - S_control_rest)[-1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Averaging control values"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We could also do this the other way around: average the control values on the time grid to obtain the pulse values on the intervals, and un-average to restore the control"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.600881Z",
"start_time": "2020-08-11T02:48:36.591761Z"
}
},
"outputs": [],
"source": [
"def control_onto_interval2(control):\n",
" pulse = np.zeros(len(control) - 1, dtype=control.dtype.type)\n",
" pulse[0] = control[0]\n",
" for i in range(1, len(control) - 1):\n",
" pulse[i] = 0.5 * (control[i+1] + control[i])\n",
" pulse[-1] = control[-1]\n",
" return pulse"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.618703Z",
"start_time": "2020-08-11T02:48:36.611939Z"
}
},
"outputs": [],
"source": [
"def pulse_onto_tlist2(pulse):\n",
" control = np.zeros(len(pulse) + 1, dtype=pulse.dtype.type)\n",
" control[0] = pulse[0]\n",
" for i in range(1, len(control) - 1):\n",
" control[i] = 2.0 * pulse[i-1] - control[i-1]\n",
" control[-1] = pulse[-1]\n",
" return control"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, this has two major drawbacks:\n",
" \n",
"* We now see the numerical instability in the backward transformation\n",
"* The backward transformed (\"restored\") control does not match the original control. That is, we lose the ability to \"round-trip\""
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.631146Z",
"start_time": "2020-08-11T02:48:36.624128Z"
}
},
"outputs": [],
"source": [
"S_pulse2 = control_onto_interval2(S_control)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.642285Z",
"start_time": "2020-08-11T02:48:36.634391Z"
}
},
"outputs": [],
"source": [
"S_control_rest2 = pulse_onto_tlist2(S_pulse2)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:36.957070Z",
"start_time": "2020-08-11T02:48:36.646276Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(tlist, S_control, S_pulse2, S_control_rest2);"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:37.317328Z",
"start_time": "2020-08-11T02:48:36.960225Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(tlist, S_control, S_pulse2, S_control_rest2, grid=True, xlim=(0, 3));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that even though we cannot round-trip the original control, we *can* round-trip the \"restored\" control: The orange diamond pulse values are averages both of the original blue cross controls and the restored green circle controls."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:37.330155Z",
"start_time": "2020-08-11T02:48:37.319848Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.max(np.abs(S_control_rest2 - pulse_onto_tlist2(control_onto_interval2(S_control_rest2))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The difference between the original and the restored control is ultimately due to the requirement of preserving the boundary condition (the first pulse value being exactly at zero). There is no way around this, though: Due to the lossy conversion between control and pulse, we effectively lose information about the boundary values if we were to *only* take averages in `control_onto_interval2` without using the first and last value preserve the boundary-value information."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is also not a good idea to use averaging in both directions of the conversion: while this eliminates the \"zig-zag\" instability, it completely removes the ability to round trip. With every round trip, the control will deviate more and more from the original."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## \"Safe\" sampling via midpoints"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There is a solution for maintaining both numerical stability and the ability to round-trip without losing *any* information! This solution is based on two observations for the original \"un-averaging\" conversion:\n",
"\n",
"1. Averaging is safe: when determining control or pulse values as the average of the two surrounding values, if the original values do not show any zig-zag, then the averaged values will not show a zig-zag\n",
"2. Round-tripping from pulse values (on the midpoints) to control values (on the grid points) and back to pulse values is exact: Whatever the control values may be, the pulse values defined on the midpoints will be exactly the same on both ends of the conversion.\n",
"\n",
"Thus, we can guarantee numerical stability and exactness if we limit the control values to those that will produce a \"safe\" pulse when converting to the midpoint sampling. We can do this by modifying the `discretize` function: For all non-boundary points, we can evaluate the analytical control function as the time interval midpoints (calculate a \"pulse\"), and then transform back to the time grid points by averaging:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:37.339761Z",
"start_time": "2020-08-11T02:48:37.332918Z"
}
},
"outputs": [],
"source": [
"def discretize_safe(control, tlist, args=(None,), kwargs=None):\n",
" tlist_intervals = (tlist + 0.5*(tlist[1] - tlist[0]))[:-1]\n",
" tlist_intervals[0] = tlist[0]\n",
" tlist_intervals[-1] = tlist[-1]\n",
" return pulse_onto_tlist(discretize(control, tlist_intervals, args=args, kwargs=kwargs))"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:37.348726Z",
"start_time": "2020-08-11T02:48:37.342651Z"
}
},
"outputs": [],
"source": [
"S_control_safe = discretize_safe(Sfunc, tlist, args=())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The result (black) for this new discretization in comparison with the original discretization (blue) is shown below:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:37.603437Z",
"start_time": "2020-08-11T02:48:37.352032Z"
}
},
"outputs": [
{
"data": {
"image/png": "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7j/+4z+abDN9+nS9/vrrLa4JqY8wRlIqXlOm9WWVR4xbX1ap4jVlgSr6p8bC+NChQ8c0zzvuuEPXX399S8o6Lhw+fFg/+9nPNGjQoFZbxplnnqnHHnusyXbNCeOvfe1ruuOOOxJRFlIcYYykFMlK17xlJfFAXl9WqXnLShTJSm/RfH/5y18qEokoNzdXs2bNkhQN1/HjxysSiWjChAnatWuXJGn27Nm64YYbNGrUKJ199tnx/6Dnz5+v559/XkOHDtWiRYt0//336/LLL9f48eM1YcIEvf/++7riiisUiUQ0cuRIbdmypdGadu7cqc6dOysjI0OStHz5cg0ZMkS5ubm68MIL4zWOGTNG5513ns477zytX79eUnTPduzYsZo6darOPvtszZ8/Xw899JCGDx+unJwclZWVxT/L3LlzlZ+frwEDBui3v/1tnTo++ugjffnLX9bw4cOVl5enxx9/XJK0f/9+TZ8+XQMHDtS0adO0f//+ej/H008/rby8POXk5OjLX/6yPv74Y0lSnz59VFhYqPPOO085OTnavn17nffu27dPV199tQYNGqRp06ZpxIgR8b3vk046STfffLNyc3P1wgsvHLFnvmTJEg0YMEDDhw/XunXr6q2rqKhIs2bN0gUXXKD+/fvrvvvukxS9kOqWW27RkCFDlJOTo0ceeSS+rocMGSIpurf9uc99TpMnT1b//v31rW99S1J0G9i/f7+GDh2qL37xi/roo4906aWXKjc3V0OGDInPa8yYMXrqqaeO+Y80HEfcPcjPsGHDHMeXbdu2HVX7daUVnrdwld/55HbPW7jK15VWtGj5r7zyivfv398rKqLz2bNnj7u7T5kyxe+//353d//5z3/uU6dOdXf3a6+91q+88ko/fPiwv/rqq56dne3u7s8++6xfeuml8fkuWbLEe/bsGZ/fvHnzvKioyN3dn376ac/NzY23+/rXv16nrl/84hd+0003xYeHDBni5eXl7u7+wQcfuLv7Rx995Pv373d39507d3r19+fZZ5/19PR03717tx84cMDPPPNMLygocHf3H/3oR37jjTfGP8tFF13khw8f9p07d3rPnj19//79R3yWW2+91ZcuXRpfbv/+/f3DDz/0O++807/0pS+5u/uf/vQnT0tL840bNx7xGfbv3+9ZWVm+Y8cOd3efNWuWL1q0yN3dzzrrLL/r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\n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(tlist, S_control, S_control_safe, labels=('control (sampled on grid points)', 'control (sampled via midpoints)'), fmts=('x', '+k' ));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the \"safe\" sampling, the control values are no longer exactly equal to the values of the analytical control function evaluated at the time grid points. We can plot the deviation:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:37.785798Z",
"start_time": "2020-08-11T02:48:37.605906Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(tlist, S_control_safe - S_control, labels=(('deviation',)), grid=True, xlim=(0, 3));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, we also observe no zig-zag when converting this \"safe\" control into a pulse. Moreover, can can restore the control from the pulse exactly (with an error below machine precision):"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:37.791633Z",
"start_time": "2020-08-11T02:48:37.787801Z"
}
},
"outputs": [],
"source": [
"S_pulse_safe = control_onto_interval(S_control_safe)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:37.797913Z",
"start_time": "2020-08-11T02:48:37.794039Z"
}
},
"outputs": [],
"source": [
"S_control_rest_safe = pulse_onto_tlist(S_pulse_safe)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:37.981388Z",
"start_time": "2020-08-11T02:48:37.800073Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(tlist, S_control_safe, S_pulse_safe, S_control_rest_safe);"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:38.180811Z",
"start_time": "2020-08-11T02:48:37.983442Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot(tlist, S_control_safe, S_pulse_safe, S_control_rest_safe, xlim=(0, 3), grid=True);"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"ExecuteTime": {
"end_time": "2020-08-11T02:48:38.188595Z",
"start_time": "2020-08-11T02:48:38.183039Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"2.7755575615628914e-17"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.max(np.abs(S_control_safe - S_control_rest_safe))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We conclude that `discretize_safe` should replace `discretize` when initializing controls and update shapes in Krotov's method."
]
}
],
"metadata": {
"gist": {
"data": {
"description": "docs/notebooks/Untitled.ipynb",
"public": false
},
"id": ""
},
"hide_input": false,
"jupytext": {
"encoding": "# -*- coding: utf-8 -*-"
},
"kernelspec": {
"display_name": "Python 3",
"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.7.6"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment