Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
212 changes: 153 additions & 59 deletions ui-tests/notebooks/Lorenz.ipynb
Original file line number Diff line number Diff line change
@@ -1,155 +1,249 @@
{
"metadata": {
"kernelspec": {
"name": "xpython (env-python)",
"display_name": "Python 3.13 (XPython) [env-python]",
"language": "python"
},
"language_info": {
"codemirror_mode": {
"name": "python",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8"
}
},
"nbformat_minor": 4,
"nbformat": 4,
"cells": [
{
"cell_type": "markdown",
"source": "# The Lorenz Differential Equations",
"metadata": {}
"metadata": {},
"source": [
"# The Lorenz Differential Equations"
]
},
{
"cell_type": "markdown",
"source": "Before we start, we import some preliminary libraries.",
"metadata": {}
"metadata": {},
"source": [
"Before we start, we import some preliminary libraries."
]
},
{
"cell_type": "code",
"source": "import numpy as np\nfrom matplotlib import pyplot as plt\nfrom scipy import integrate\n\nfrom ipywidgets import interactive",
"execution_count": null,
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
"source": [
"import numpy as np\n",
"from matplotlib import pyplot as plt\n",
"from scipy import integrate\n",
"\n",
"from ipywidgets import interactive"
]
},
{
"cell_type": "markdown",
"source": "We will also define the actual solver and plotting routine.",
"metadata": {}
"metadata": {},
"source": [
"We will also define the actual solver and plotting routine."
]
},
{
"cell_type": "code",
"source": "def solve_lorenz(sigma=10.0, beta=8./3, rho=28.0):\n \"\"\"Plot a solution to the Lorenz differential equations.\"\"\"\n\n max_time = 4.0\n N = 30\n\n fig = plt.figure(1)\n ax = fig.add_axes([0, 0, 1, 1], projection='3d')\n ax.axis('off')\n\n # prepare the axes limits\n ax.set_xlim((-25, 25))\n ax.set_ylim((-35, 35))\n ax.set_zlim((5, 55))\n\n def lorenz_deriv(x_y_z, t0, sigma=sigma, beta=beta, rho=rho):\n \"\"\"Compute the time-derivative of a Lorenz system.\"\"\"\n x, y, z = x_y_z\n return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]\n\n # Choose random starting points, uniformly distributed from -15 to 15\n np.random.seed(1)\n x0 = -15 + 30 * np.random.random((N, 3))\n\n # Solve for the trajectories\n t = np.linspace(0, max_time, int(250*max_time))\n x_t = np.asarray([integrate.odeint(lorenz_deriv, x0i, t)\n for x0i in x0])\n\n # choose a different color for each trajectory\n colors = plt.cm.viridis(np.linspace(0, 1, N))\n\n for i in range(N):\n x, y, z = x_t[i,:,:].T\n lines = ax.plot(x, y, z, '-', c=colors[i])\n plt.setp(lines, linewidth=2)\n angle = 104\n ax.view_init(30, angle)\n plt.show()\n\n return t, x_t",
"execution_count": null,
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
"source": [
"def solve_lorenz(sigma=10.0, beta=8./3, rho=28.0):\n",
" \"\"\"Plot a solution to the Lorenz differential equations.\"\"\"\n",
"\n",
" max_time = 4.0\n",
" N = 30\n",
"\n",
" fig = plt.figure(1)\n",
" ax = fig.add_axes([0, 0, 1, 1], projection='3d')\n",
" ax.axis('off')\n",
"\n",
" # prepare the axes limits\n",
" ax.set_xlim((-25, 25))\n",
" ax.set_ylim((-35, 35))\n",
" ax.set_zlim((5, 55))\n",
"\n",
" def lorenz_deriv(x_y_z, t0, sigma=sigma, beta=beta, rho=rho):\n",
" \"\"\"Compute the time-derivative of a Lorenz system.\"\"\"\n",
" x, y, z = x_y_z\n",
" return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]\n",
"\n",
" # Choose random starting points, uniformly distributed from -15 to 15\n",
" np.random.seed(1)\n",
" x0 = -15 + 30 * np.random.random((N, 3))\n",
"\n",
" # Solve for the trajectories\n",
" t = np.linspace(0, max_time, int(250*max_time))\n",
" x_t = np.asarray([integrate.odeint(lorenz_deriv, x0i, t)\n",
" for x0i in x0])\n",
"\n",
" # choose a different color for each trajectory\n",
" colors = plt.cm.viridis(np.linspace(0, 1, N))\n",
"\n",
" for i in range(N):\n",
" x, y, z = x_t[i,:,:].T\n",
" lines = ax.plot(x, y, z, '-', c=colors[i])\n",
" plt.setp(lines, linewidth=2)\n",
" angle = 104\n",
" ax.view_init(30, angle)\n",
" plt.show()\n",
"\n",
" return t, x_t"
]
},
{
"cell_type": "markdown",
"source": "We explore the Lorenz system of differential equations:\n\n$$\n\\begin{aligned}\n\\dot{x} & = \\sigma(y-x) \\\\\n\\dot{y} & = \\rho x - y - xz \\\\\n\\dot{z} & = -\\beta z + xy\n\\end{aligned}\n$$\n\nLet's change (\\\\(\\sigma\\\\), \\\\(\\beta\\\\), \\\\(\\rho\\\\)) with ipywidgets and examine the trajectories.",
"metadata": {}
"metadata": {},
"source": [
"We explore the Lorenz system of differential equations:\n",
"\n",
"$$\n",
"\\begin{aligned}\n",
"\\dot{x} & = \\sigma(y-x) \\\\\n",
"\\dot{y} & = \\rho x - y - xz \\\\\n",
"\\dot{z} & = -\\beta z + xy\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"Let's change (\\\\(\\sigma\\\\), \\\\(\\beta\\\\), \\\\(\\rho\\\\)) with ipywidgets and examine the trajectories."
]
},
{
"cell_type": "code",
"source": "w=interactive(solve_lorenz,sigma=(0.0,50.0),rho=(0.0,50.0))\nw",
"execution_count": null,
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
"source": [
"w=interactive(solve_lorenz,sigma=(0.0,50.0),rho=(0.0,50.0))\n",
"w"
]
},
{
"cell_type": "markdown",
"source": "For the default set of parameters, we see the trajectories swirling around two points, called attractors. ",
"metadata": {}
"metadata": {},
"source": [
"For the default set of parameters, we see the trajectories swirling around two points, called attractors. "
]
},
{
"cell_type": "markdown",
"source": "The object returned by `interactive` is a `Widget` object and it has attributes that contain the current result and arguments:",
"metadata": {}
"metadata": {},
"source": [
"The object returned by `interactive` is a `Widget` object and it has attributes that contain the current result and arguments:"
]
},
{
"cell_type": "code",
"source": "t, x_t = w.result",
"execution_count": null,
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
"source": [
"t, x_t = w.result"
]
},
{
"cell_type": "code",
"source": "w.kwargs",
"execution_count": null,
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
"source": [
"w.kwargs"
]
},
{
"cell_type": "markdown",
"source": "After interacting with the system, we can take the result and perform further computations. In this case, we compute the average positions in \\\\(x\\\\), \\\\(y\\\\) and \\\\(z\\\\).",
"metadata": {}
"metadata": {},
"source": [
"After interacting with the system, we can take the result and perform further computations. In this case, we compute the average positions in \\\\(x\\\\), \\\\(y\\\\) and \\\\(z\\\\)."
]
},
{
"cell_type": "code",
"source": "xyz_avg = x_t.mean(axis=1)",
"execution_count": null,
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
"source": [
"xyz_avg = x_t.mean(axis=1)"
]
},
{
"cell_type": "code",
"source": "xyz_avg.shape",
"execution_count": null,
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
"source": [
"xyz_avg.shape"
]
},
{
"cell_type": "markdown",
"source": "Creating histograms of the average positions (across different trajectories) show that, on average, the trajectories swirl about the attractors.",
"metadata": {}
"metadata": {},
"source": [
"Creating histograms of the average positions (across different trajectories) show that, on average, the trajectories swirl about the attractors."
]
},
{
"cell_type": "code",
"source": "from matplotlib import pyplot as plt\n%matplotlib inline",
"execution_count": null,
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
"source": [
"from matplotlib import pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"source": "plt.hist(xyz_avg[:,0])\nplt.title('Average $x(t)$');",
"execution_count": null,
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
"source": [
"plt.hist(xyz_avg[:,0])\n",
"plt.title('Average $x(t)$');"
]
},
{
"cell_type": "code",
"source": "plt.hist(xyz_avg[:,1])\nplt.title('Average $y(t)$');",
"execution_count": null,
"metadata": {
"trusted": true
},
"outputs": [],
"execution_count": null
"source": [
"plt.hist(xyz_avg[:,1])\n",
"plt.title('Average $y(t)$');"
]
}
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.13 (XPython) [env-python]",
"language": "python",
"name": "xpython (env-python)"
},
"language_info": {
"codemirror_mode": {
"name": "python",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
23 changes: 0 additions & 23 deletions ui-tests/notebooks/cpp.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -76,29 +76,6 @@
"std::cout << \"some output\" << std::endl;"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9622f20f-5925-4544-a97b-aada3a14209a",
"metadata": {
"trusted": true,
"vscode": {
"languageId": "c++"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"some error\n"
]
}
],
"source": [
"std::cerr << \"some error\" << std::endl;"
]
},
{
"cell_type": "code",
"execution_count": 3,
Expand Down
31 changes: 0 additions & 31 deletions ui-tests/notebooks/r.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -165,13 +165,6 @@
"## Plotting"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some of the following R Code was pulled from https://www.datacamp.com/doc/r/graphics-with-ggplot2, and updated to use newer `ggplot2` APIs."
]
},
{
"cell_type": "code",
"execution_count": null,
Expand Down Expand Up @@ -413,30 +406,6 @@
"print(hsv_color)\n",
"print(lab_color)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true,
"vscode": {
"languageId": "r"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true,
"vscode": {
"languageId": "r"
}
},
"outputs": [],
"source": []
}
],
"metadata": {
Expand Down
Loading
Loading