Skip to content

Instantly share code, notes, and snippets.

@nmayorov
Created April 21, 2016 17:29
Show Gist options
  • Save nmayorov/b9ba2add85c5cbc2ca08afa43131b1c0 to your computer and use it in GitHub Desktop.
Save nmayorov/b9ba2add85c5cbc2ca08afa43131b1c0 to your computer and use it in GitHub Desktop.
Qualitative benchmarks for solve_bvp
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Qualitative benchmarks for solve_bvp"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here I want to establish that `solve_bvp` can solve most of the test problems presented in the literature. It should converge in a few number of iterations to a reasonable and smooth solution.\n",
"\n",
"I list problems in the order they appear in papers."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from scipy.integrate import solve_bvp"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Global tolerance setting:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"TOL = 1e-3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Problems from \"A BVP Solver Based on Residual Control and the MATLAB PSE.\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"mu = 0.02\n",
"l = 0.0279\n",
"eta = 0.01\n",
"def fun(x, y):\n",
" beta = 1575 * (1 + np.cos(2 * np.pi * x))\n",
" return np.vstack((\n",
" mu - beta * y[0] * y[2],\n",
" beta * y[0] * y[2] - y[1] / l,\n",
" y[1] / l - y[2] / eta\n",
" ))\n",
"\n",
"\n",
"def bc(ya, yb):\n",
" return ya - yb\n",
"\n",
"x = np.linspace(0, 1, 5)\n",
"y = np.full((3, x.size), 0.01)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 1.39e-02 5 4 \n",
" 2 2.41e-02 9 8 \n",
" 3 1.45e-02 17 13 \n",
" 4 1.95e-02 30 14 \n",
" 5 9.14e-03 44 18 \n",
" 6 1.69e-04 62 0 \n",
"Solved in 6 iterations, number of nodes 62, maximum relative residual 1.69e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1076c8240>]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10747dfd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def fun(x, y, p):\n",
" A = p[0]\n",
" return np.vstack((\n",
" y[1], y[2], 100 * (y[1]**2 - y[0]*y[2] - A),\n",
" y[4], -100 * y[0] * y[4] - 1, y[6], -70 * y[0] * y[6]\n",
" ))\n",
"\n",
"\n",
"def bc(ya, yb, p):\n",
" A = p[0]\n",
" return np.array([ya[0], ya[1], yb[0] - 1, yb[1], ya[3], yb[3], ya[5], yb[5] - 1])\n",
"\n",
"x = np.linspace(0, 1, 10)\n",
"y = np.ones((7, x.size))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 1.30e+00 10 18 \n",
" 2 2.42e-02 28 12 \n",
" 3 3.47e-03 40 2 \n",
" 4 7.51e-04 42 0 \n",
"Solved in 4 iterations, number of nodes 42, maximum relative residual 7.51e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, p=[1], tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x107b26e48>]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x107687d68>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3. "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"eps = 1e-4\n",
"\n",
"def fun(x, y):\n",
" t = np.pi * x\n",
" return np.vstack((\n",
" y[1], -(x * y[1] + eps * np.pi**2 * np.cos(t) + t * np.sin(t)) / eps\n",
" ))\n",
"\n",
"def bc(ya, yb):\n",
" return np.array([ya[0] + 2, yb[0]])\n",
"\n",
"x = np.linspace(-1, 1, 10)\n",
"y = np.zeros((2, x.size))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 1.24e+00 10 18 \n",
" 2 1.12e+00 28 54 \n",
" 3 2.44e+00 82 132 \n",
" 4 1.78e-01 214 17 \n",
" 5 2.63e-02 231 24 \n",
" 6 3.08e-03 255 7 \n",
" 7 9.83e-04 262 0 \n",
"Solved in 7 iterations, number of nodes 262, maximum relative residual 9.83e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1077634a8>]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n2WdJAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x107687d30>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Problems from \"Solving Boundary Value Problems for Ordinary Differential Equations in Matlab with bvp4c\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def fun(x, y):\n",
" return np.vstack((\n",
" 0.5 * y[0] * (y[2] - y[0]) / y[1],\n",
" -0.5 * (y[2] - y[0]),\n",
" (0.9 - 1000 * (y[2] - y[4]) - 0.5 * y[2] * (y[2] - y[0])) / y[3],\n",
" 0.5 * (y[2] - y[0]),\n",
" -100 * (y[4] - y[2])\n",
" ))\n",
"\n",
"def bc(ya, yb):\n",
" return np.array([ya[0] - 1, ya[1] - 1, ya[2] - 1, ya[3] + 10, yb[2] - yb[4]])\n",
"\n",
"x = np.linspace(0, 1, 5)\n",
"y = np.empty((5, x.size))\n",
"y[0] = 1\n",
"y[1] = 1\n",
"y[2] = -4.5 * x**2 + 8.91 * x + 1\n",
"y[3] = -10\n",
"y[4] = -4.5 * x**2 + 9 * x + 0.91"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 6.11e-03 5 4 \n",
" 2 1.09e-03 9 1 \n",
" 3 4.89e-04 10 0 \n",
"Solved in 3 iterations, number of nodes 10, maximum relative residual 4.89e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x107f8d5c0>]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1077320f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])\n",
"plt.plot(res.x, res.y[1])\n",
"plt.plot(res.x, res.y[2])\n",
"plt.plot(res.x, res.y[3] + 10)\n",
"plt.plot(res.x, res.y[4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"p = 1e-5\n",
"\n",
"def fun(x, y):\n",
" return np.vstack((\n",
" y[1],\n",
" -3 * p * y[0] / (p + x**2)**2\n",
" ))\n",
"\n",
"def bc(ya, yb):\n",
" return np.array([ya[0] + 0.1 * (p + 1e-2)**-0.5, yb[0] - 0.1 * (p + 1e-2)**-0.5])\n",
"\n",
"x = np.linspace(-0.1, 0.1, 10)\n",
"y = np.empty((2, x.size))\n",
"y[0] = 0\n",
"y[1] = 10"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 6.72e-01 10 12 \n",
" 2 4.29e-01 22 18 \n",
" 3 1.27e-01 40 28 \n",
" 4 1.73e-02 68 23 \n",
" 5 5.74e-03 91 4 \n",
" 6 1.50e-03 95 2 \n",
" 7 9.55e-04 97 0 \n",
"Solved in 7 iterations, number of nodes 97, maximum relative residual 9.55e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x108102e80>]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEACAYAAACznAEdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAE8hJREFUeJzt3X2MXXWdx/H3t/SRlpayhdK0UBYECvwDaCroqhMVLGSz\nVePjJiJk4+JmqzH4AJs1YbKuUf5Bo2RDVDRgNBijiwU0CyqzSgy0qOXBtFCz0ALF4aGl7cy0dNr5\n7R/3QscyM52Zc+85v3Pv+5WczLnn/s4933t6Zj49v98950ZKCUmSZlRdgCQpDwaCJAkwECRJTQaC\nJAkwECRJTQaCJAloUSBExC0R0R8Rj0zQ5hsRsTUiNkXE+a3YriSpdVp1hvA94D3jPRkRlwFnpJTO\nBK4Gbm7RdiVJLdKSQEgp3Q/smqDJWuC2ZtsHgUURsbQV25YktUZZYwjLgadHPX62uUySlAkHlSVJ\nAMwsaTvPAqeMeryiuex1IsKbK0nSFKWUouhrtDIQojmNZT3wr8CPIuIi4OWUUv94L+QN9xp6e3vp\n7e2tuozKtWo/DA/Dgw/Cffc1fm7aBDt3wplnwhlnwCmnwPLlsGwZnHgiLFkCixfD8cfDwoUwa1bx\n91KUx8Rh7ovDIgpnAdCiQIiIHwI9wN9ExHbgemA2kFJK30op/TwiLo+IPwODwFWt2K40GQ88AN/+\nNtxxB6xcCe98J1x1FVx4YePxDDtOJaBFgZBS+sdJtFnXim1Jk7VpE3zmM7B9O3zyk43Hp5xy9PWk\nblXWGIKmoaenp+oSsjDV/XDwIFx/PXznO/DlL8OVV8LMDjnSPSYOc1+0XuTWXx8RKbeaVB/798OH\nPgRDQ/CDH8BSr3ZRF4iI7AaVpUqNjMDHPgZz5sBPfpLHILBUJwaCOsaNN8KOHfDrXxsG0nTYZaSO\nsHUrvOUtsHEjnHZa1dVI5WpVl5GBoI7wvvfBxRfDF75QdSVS+QwEqenRR+HSS+HJJ2Hu3KqrkcrX\nqkDwkhzV3te/DuvWGQZSUZ4hqNYGBxu3m3j8cT9iqu7lGYIE3HknXHSRYSC1goGgWvvpTxsXokkq\nzi4j1dahQ427kj76aKPbSOpWdhmp6z30UCMIDAOpNQwE1VZfX+NW1pJaw0BQbW3Y0BhQltQaBoJq\na8MGWL266iqkzmEgqJZ27Gjc4vr006uuROocBoJq6eGH4YILoEVfJSsJA0E1tXkznHtu1VVIncVA\nUC1t2QKrVlVdhdRZDATV0ubNcM45VVchdRYDQbVkIEitZyCodnbuhOFhb2gntZqBoNrZtq3xNZl+\nwkhqLQNBtbN9O5x6atVVSJ3HQFDtbNsGK1dWXYXUeQwE1Y5nCFJ7GAiqHc8QpPYwEFQ727cbCFI7\nGAiqnWeegRUrqq5C6jx+haZqZWQE5syBwUGYPbvqaqQ8+BWa6kq7dsFxxxkGUjsYCKqV/n6vUJba\nxUBQrRgIUvsYCKoVA0FqHwNBtdLfDyedVHUVUmcyEFQrniFI7WMgqFaef95AkNrFQFCtPP+8XUZS\nuxgIqpWdO+GEE6quQupMBoJqxUCQ2sdAUK3s2gWLF1ddhdSZDATVioEgtY+BoNrYt6/xc968auuQ\nOpWBoNpw/EBqLwNBtWF3kdReBoJqw0CQ2qslgRARayJiS0Q8ERHXjvH8OyLi5Yj4Q3P6Yiu2q+5i\nIEjtNbPoC0TEDOAm4F3ADmBjRPwspbTliKa/SSn9Q9HtqXs5hiC1VyvOEFYDW1NK21JKw8DtwNox\n2hX+ejd1N88QpPZqRSAsB54e9fiZ5rIjXRwRmyLi7og4twXbVZcxEKT2KtxlNEm/B05NKQ1FxGXA\nHcBZ4zXu7e19bb6np4eenp5216ca2L0bTj+96iqk6vX19dHX19fy142UUrEXiLgI6E0prWk+vg5I\nKaUbJljnSeCNKaWdYzyXitakznTVVfD2tzd+SjosIkgpFe6Wb0WX0UbgDRGxMiJmAx8B1o9uEBFL\nR82vphFErwsDaSJ79sDChVVXIXWuwl1GKaVDEbEOuIdGwNySUtocEVc3nk7fAj4QEf8CDAP7gA8X\n3a66z+7dBoLUToW7jFrNLiONZ/Vq+OY34c1vrroSKS85dRlJpbDLSGovA0G1YSBI7WUgqDYMBKm9\nHENQLYyMwMyZcPAgzPC/MdJfcQxBXWVgAI491jCQ2slfL9XCwAAcd1zVVUidzUBQLezdayBI7WYg\nqBb27oUFC6quQupsBoJqwS4jqf0MBNWCXUZS+xkIqoWBAbuMpHYzEFQLBoLUfgaCamFwEObPr7oK\nqbMZCKqFgQEDQWo3A0G1MDhol5HUbgaCasEuI6n9DATVgl1GUvsZCKoFu4yk9jMQVAt2GUntZyCo\nFuwyktrPQFAt2GUktZ+BoFqwy0hqPwNBtWAgSO1nIKgWDASp/QwE1cLQkIEgtZuBoOyNjMD+/TB3\nbtWVSJ3NQFD29u1rhMEMj1aprfwVU/aGhuDYY6uuQup8BoKy5/iBVA4DQdkbHPQMQSqDgaDs2WUk\nlcNAUPbsMpLKYSAoe3YZSeUwEJQ9u4ykchgIyp6BIJXDQFD2HEOQymEgKHuDgzBvXtVVSJ3PQFD2\nPEOQymEgKHuOIUjlMBCUPQNBKoeBoOzt22cgSGUwEJQ9zxCkchgIyp6BIJXDQFD2hob82KlUBgNB\n2fMMQSqHgaDsGQhSOQwEZc9PGUnlaEkgRMSaiNgSEU9ExLXjtPlGRGyNiE0RcX4rtqvu4BiCVI7C\ngRARM4CbgPcA5wEfjYhVR7S5DDgjpXQmcDVwc9HtqnvYZSSVoxVnCKuBrSmlbSmlYeB2YO0RbdYC\ntwGklB4EFkXE0hZsW13ALiOpHK0IhOXA06MeP9NcNlGbZ8doI43JLiOpHDOrLmAsvb29r8339PTQ\n09NTWS2q1vAwjIzArFlVVyLlo6+vj76+vpa/bqSUir1AxEVAb0ppTfPxdUBKKd0wqs3NwH0ppR81\nH28B3pFS6h/j9VLRmtQ59uyBFSsaPyWNLSJIKUXR12lFl9FG4A0RsTIiZgMfAdYf0WY9cAW8FiAv\njxUG0pEcUJbKU7jLKKV0KCLWAffQCJhbUkqbI+LqxtPpWymln0fE5RHxZ2AQuKrodtUdHD+QylO4\ny6jV7DLSaH/6E3z4w/DYY1VXIuUrpy4jqW08Q5DKYyAoa44hSOUxEJQ1zxCk8hgIytrQEMyfX3UV\nUncwEJQ1zxCk8hgIyppjCFJ5DARlzRvbSeUxEJQ1zxCk8hgIyppjCFJ5DARlzUCQymMgKGt+7FQq\nj4GgrBkIUnkMBGVtcNBBZaksBoKy5hmCVB4DQVnzY6dSeQwEZc0uI6k8BoKyZpeRVB4DQVmzy0gq\nj4GgrBkIUnkMBGVtcNAuI6kskdsX2kdEyq0mVSMlOOYYOHgQZvhfF2lcEUFKKYq+jr9mytb+/TBn\njmEglcVfNWXL7iKpXAaCsuWAslQuA0HZGhjwDEEqk4GgbA0OwoIFVVchdQ8DQdlyDEEql4GgbBkI\nUrkMBGVrYMAuI6lMBoKy5RmCVC4DQdkyEKRyGQjKll1GUrkMBGXLMwSpXAaCsmUgSOUyEJQtr1SW\nymUgKFueIUjlMhCUrYEBOO64qquQuoeBoGzt3WsgSGUyEJStvXv92KlUJgNB2bLLSCqXgaBs2WUk\nlctAULbsMpLKFSmlqmv4KxGRcqtJ5UsJZs6EAwfgmGOqrkbKW0SQUoqir+MZgrI0NARz5xoGUpkM\nBGXJ7iKpfAaCsrRnDyxaVHUVUncxEJSl3bth4cKqq5C6y8wiK0fEYuBHwErgKeBDKaXdY7R7CtgN\njADDKaXVRbarzrdnj4Egla3oGcJ1wC9TSmcDvwb+bZx2I0BPSukCw0CTYSBI5SsaCGuBW5vztwLv\nHaddtGBb6iKOIUjlK/pH+qSUUj9ASukvwEnjtEvAvRGxMSI+UXCb6gKeIUjlO+oYQkTcCywdvYjG\nH/gvjtF8vCvK3ppSei4iTqQRDJtTSvePt83e3t7X5nt6eujp6Tlameowu3d72wppPH19ffT19bX8\ndQtdqRwRm2mMDfRHxMnAfSmlc46yzvXA3pTSjeM875XK4rOfhZNPhs9/vupKpPzlcqXyeuDK5vzH\ngZ8d2SAijo2IBc35+cClwGMFt6sOt2sXnHBC1VVI3aVoINwAXBIRjwPvAr4KEBHLIuKuZpulwP0R\n8UfgAeDOlNI9BberDrdrFyxeXHUVUncpdB1CSmkn8O4xlj8H/H1z/kng/CLbUffZudNAkMrmR0GV\nJc8QpPIZCMqSgSCVz0BQlhxUlspnICg7Bw7AK694+2upbAaCsrNrFxx/PEThT1VLmgoDQdlx/ECq\nhoGg7Dh+IFXDQFB2PEOQqmEgKDsvvABLllRdhdR9DARlp78fli49ejtJrWUgKDsGglQNA0HZMRCk\nahgIyo6BIFXDQFB2DASpGgaCstPfDyeN9+3cktqm0FdotoNfodndDh2CuXNhaAhmzaq6GqkecvkK\nTamlXnoJFi0yDKQqGAjKyo4dsGxZ1VVI3clAUFa2bYOVK6uuQupOBoKysn27gSBVxUBQVrZtg1NP\nrboKqTsZCMqKZwhSdQwEZcUzBKk6BoKy4hmCVB0DQdkYGIDdu+Hkk6uuROpOBoKysWULnHUWHHNM\n1ZVI3clAUDY2b4Zzzqm6Cql7GQjKhoEgVctAUDYMBKlaBoKy8eijcN55VVchdS8DQVl46SV4/nk4\n++yqK5G6l4GgLDz0ELzpTX7CSKqSgaAsbNgAq1dXXYXU3QwEZeE3v4GLL666Cqm7+RWaqtzQECxd\nCs8+CwsXVl2NVD9+haY6xm9/CxdcYBhIVTMQVLk77oDLL6+6Ckl2GalSBw7A8uWwcSOcdlrV1Uj1\nZJeROsLdd8OqVYaBlAMDQZW68Ub41KeqrkISGAiq0H33wY4d8P73V12JJDAQVJHhYbjmGvjKV2Dm\nzKqrkQQGgirypS81rj344AerrkTSq/y/mUr34x/Dd7/b+GRRFP5chKRW8QxBpfr+9xuDyHfdBcuW\nVV2NpNE8Q1ApXnwRPvc5uP9++NWv/N4DKUeFzhAi4gMR8VhEHIqICydotyYitkTEExFxbZFtql76\n+xvjBeeeC4sXw6ZNhoGUq6JdRo8C7wP+d7wGETEDuAl4D3Ae8NGIWFVwu12hr6+v6hKmLCV44gm4\n+ebG7ShWrYKnnmrczfRrX4MFC6b+mnXcD+3ivjjMfdF6hQIhpfR4SmkrMNHQ4Gpga0ppW0ppGLgd\nWFtku90i1wM+JXj5ZXjsMfjFL+Cmm+DTn4ZLLoElS+Dd74bf/Q6uuAK2b4dbbmkEw3Tluh+q4L44\nzH3RemWMISwHnh71+BkaIaGCUoJDh2BkBA4ebMy/Oh08eHgaHv7r6cCBw9Mrr8D+/Y1paAj27YPB\nwcb83r2Nafdu2LWrMb34IrzwAsyeDStWNKYzzoCzzoLLLoPzz3ewWKqrowZCRNwLLB29CEjAv6eU\n7mxHUW972+H5se5zN9Gy0c9Nd1lKR1925PxEyyaaRkbG/zk01OhmGRk5/Id/9JQSzJjRmGbObHz9\n5KvTrFmNZa9Os2YdnmbPPjzNnQtz5sC8eYen+fMb05IljVtSL1zY6P8//ng48cTGNG/e+P9+kuqp\nJXc7jYj7gM+mlP4wxnMXAb0ppTXNx9cBKaV0wziv5a1OJWmKWnG301Z2GY1XzEbgDRGxEngO+Ajw\n0fFepBVvSpI0dUU/dvreiHgauAi4KyJ+0Vy+LCLuAkgpHQLWAfcAfwJuTyltLla2JKnVsvuCHElS\nNUq/dUVELI6IeyLi8Yj4n4hYNE67WyKiPyIemc76dTCFfTHmhX0RcX1EPBMRf2hOa8qrvjUmc9Fi\nRHwjIrZGxKaIOH8q69bJNPbFBaOWPxURD0fEHyNiQ3lVt8fR9kVEnB0Rv4uI/RFxzVTWrZuC+2Jq\nx0VKqdQJuAH4QnP+WuCr47T7O+B84JHprF+HaTLvhUZo/xlYCcwCNgGrms9dD1xT9fso8P7HfW+j\n2lwG3N2cfzPwwGTXrdNUZF80H/8fsLjq91HivlgCvBH40ujfgS49LsbcF9M5Lqq4ud1a4Nbm/K3A\ne8dqlFK6H9g13fVrYjLv5WgX9tV5EH4yFy2uBW4DSCk9CCyKiKWTXLdOiuwLaBwHnXKzyqPui5TS\niyml3wMHp7puzRTZFzDF46KKA+iklFI/QErpL8BJJa+fk8m8l7Eu7Fs+6vG6ZvfBd2rYfXa09zZR\nm8msWyfT2RfPjmqTgHsjYmNEfKJtVZajyL9tNx4XE5nScdGWK5UnuJjti2M0LzqqnfWoeJv3xX8B\n/5FSShHxn8CNwD9Nq9D6qPMZUTu9NaX0XEScSOMPwObmWba625SOi7YEQkrpkvGeaw4UL00p9UfE\nycDzU3z5ouuXqgX74lng1FGPVzSXkVJ6YdTybwNtuXK8jcZ9b0e0OWWMNrMnsW6dFNkXpJSea/58\nISL+m0ZXQ10DYTL7oh3r5qjQ+5nqcVFFl9F64Mrm/MeBn03QNnj9/winsn7uJvNeXruwLyJm07iw\nbz1AM0Re9X7gsfaV2hbjvrdR1gNXwGtXvb/c7GabzLp1Mu19ERHHRsSC5vL5wKXU71gYbar/tqP/\nRnTjcTHaa/tiWsdFBaPmJwC/BB6ncbHa8c3ly4C7RrX7IbADeAXYDlw10fp1nKawL9Y022wFrhu1\n/DbgERqfPLgDWFr1e5rGPnjdewOuBv55VJubaHzS4mHgwqPtl7pO090XwN82j4E/0rglfcfvCxrd\nsE8DLwM7m38jFnTjcTHevpjOceGFaZIkoHM+piZJKshAkCQBBoIkqclAkCQBBoIkqclAkCQBBoIk\nqclAkCQB8P/+hePKxK5BcAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x107f99080>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"q = 5\n",
"\n",
"def fun(x, y, p):\n",
" l = p[0]\n",
" return np.vstack((\n",
" y[1],\n",
" -(l - 2 * q * np.cos(2 * x)) * y[0]\n",
" ))\n",
"\n",
"\n",
"def bc(ya, yb, p):\n",
" return np.array([ya[1], yb[1], ya[0] - 1])\n",
"\n",
"x = np.linspace(0, np.pi, 10)\n",
"y = np.empty((2, x.size))\n",
"y[0] = np.cos(4 * x)\n",
"y[1] = -4 * np.sin(4 * x)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 5.61e-02 10 9 \n",
" 2 2.48e-02 19 16 \n",
" 3 2.79e-03 35 6 \n",
" 4 9.02e-04 41 0 \n",
"Solved in 4 iterations, number of nodes 41, maximum relative residual 9.02e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, p=[15], tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"17.097331513395851"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res.p[0]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x108162978>]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1081151d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def fun(x, y, p):\n",
" T = p[0]\n",
" return np.vstack((\n",
" 3 * T * (y[0] + y[1] - y[0]**3/3 - 1.3),\n",
" -T / 3 * (y[0] - 0.7 + 0.8 * y[1])\n",
" ))\n",
"\n",
"def bc(ya, yb, p):\n",
" T = p[0]\n",
" return np.array([ya[0] - yb[0], \n",
" ya[1] - yb[1],\n",
" T * (ya[0] - 0.7 + 0.8 * ya[1]) + 3])\n",
"\n",
"x = np.linspace(0, 1, 5)\n",
"y = np.empty((2, x.size))\n",
"y[0] = np.sin(2 * np.pi * x)\n",
"y[1] = np.cos(2 * np.pi * x)\n"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 4.16e+00 5 8 \n",
" 2 1.23e+00 13 16 \n",
" 3 2.57e-01 29 17 \n",
" 4 8.92e-03 46 17 \n",
" 5 1.79e-03 63 2 \n",
" 6 9.65e-04 65 0 \n",
"Solved in 6 iterations, number of nodes 65, maximum relative residual 9.65e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, p=[2 * np.pi], tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"10.710846754842606"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res.p[0]"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1082031d0>]"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108173c88>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 5."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"beta = 0.5\n",
"eta = 6\n",
"\n",
"def fun(x, y):\n",
" return np.vstack((\n",
" y[1],\n",
" y[2],\n",
" -y[0]*y[2] - beta * (1 - y[1]**2)\n",
" ))\n",
"\n",
"def bc(ya, yb):\n",
" return np.array([ya[0], ya[1], yb[1] - 1])\n",
"\n",
"x = np.linspace(0, eta, 5)\n",
"y = np.empty((3, x.size))\n",
"y[0] = x\n",
"y[1] = 1\n",
"y[2] = 0 "
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 4.08e-03 5 3 \n",
" 2 7.77e-04 8 0 \n",
"Solved in 2 iterations, number of nodes 8, maximum relative residual 7.77e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, tol=TOL, verbose=2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Value reported in the paper matches:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.92773204165310086"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res.y[2, 0]"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x108433fd0>]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108203e48>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])\n",
"plt.plot(res.x, res.y[1])\n",
"plt.plot(res.x, res.y[2])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 6."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"phi = 0.6\n",
"gamma = 40\n",
"beta = 0.2\n",
"\n",
"def fun(x, y):\n",
" return np.vstack((\n",
" y[1], \n",
" phi**2 * y[0] * np.exp(gamma * beta * (1 - y[0]) / ( 1 + beta * (1 - y[0]) ) )\n",
" ))\n",
"\n",
"def bc(ya, yb):\n",
" return np.array([ya[1], yb[0] - 1])\n",
"\n",
"S = np.array([[0, 0], \n",
" [0, -2]])\n",
"\n",
"x = np.linspace(0, 1, 10)\n",
"y = np.empty((2, x.size))\n",
"y[0] = 0.5\n",
"y[1] = 0"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 1.95e+00 10 14 \n",
" 2 8.11e-05 24 0 \n",
"Solved in 2 iterations, number of nodes 24, maximum relative residual 8.11e-05.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, S=S, tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1085365f8>]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n0AAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108223860>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 7."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"d = 0.1\n",
"\n",
"def fun(x, y, p):\n",
" return np.vstack((\n",
" y[1],\n",
" 0.5 * (y[0]**3 - y[1]) / x\n",
" ))\n",
"\n",
"def bc(ya, yb, p):\n",
" a = p[0]\n",
" return np.array([\n",
" ya[0] - (0.1 + 0.1 * a * d**0.5 + 0.01 * d),\n",
" ya[1] - (0.05 * a * d**-0.5 + 0.01),\n",
" yb[0] - 1 / 6\n",
" ])\n",
"\n",
"x = np.linspace(d, 16, 5)\n",
"y = np.empty((2, x.size))\n",
"y[0] = 1\n",
"y[1] = 1"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 1.38e+00 5 5 \n",
" 2 2.33e+00 10 5 \n",
" 3 1.03e-02 15 1 \n",
" 4 4.34e-03 16 1 \n",
" 5 1.44e-03 17 1 \n",
" 6 3.60e-04 18 0 \n",
"Solved in 6 iterations, number of nodes 18, maximum relative residual 3.60e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, p=[0.2], tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x108556cc0>]"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nV9n7AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108556550>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])\n",
"plt.plot(res.x, res.y[1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 8. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Already solved as #2 in the previous section."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 9."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Multi-point BVP --- not currently implemented."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Proplems from \"A User-Friendly Fortran BVP Solver\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On page 6."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"eps = 0.1\n",
"\n",
"def fun(x, y, p):\n",
" l = p[0]\n",
" sx = np.sin(x)\n",
" return np.array([(sx**2 - l * sx**4 / y[0]) / eps])\n",
"\n",
"def bc(ya, yb, p):\n",
" return np.array([ya[0] - 1, yb[0] - 1])\n",
"\n",
"x = np.linspace(-0.5 * np.pi, 0.5 * np.pi, 20)\n",
"y = np.empty((1, x.size))\n",
"y[0] = 0.5"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 3.10e-02 20 4 \n",
" 2 2.53e-03 24 3 \n",
" 3 7.52e-04 27 0 \n",
"Solved in 3 iterations, number of nodes 27, maximum relative residual 7.52e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, p=[1], tol=TOL, verbose=2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The found parameter matches well with the provided value:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.0186469698937208"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res.p[0]"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1086dd7f0>]"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nSUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10867c940>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On page 13."
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def fun(x, y):\n",
" return np.vstack((\n",
" y[1],\n",
" -y[0]**5\n",
" ))\n",
"\n",
"def bc(ya, yb):\n",
" return np.array([ya[1], yb[0] - (3/4)**0.5])\n",
"\n",
"S = np.array([[0, 0], [0, -2]])\n",
"\n",
"x = np.linspace(0, 1, 5)\n",
"y = np.empty((2, x.size))\n",
"y[0] = (3/4)**0.5\n",
"y[1] = 1e-4"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 1.64e-04 5 0 \n",
"Solved in 1 iterations, number of nodes 5, maximum relative residual 1.64e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, S=S, tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x108a76ba8>]"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1086ae390>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Problems from \"Test examples for comparison of codes for nonlinear boundary value problems in ordinary differential equations\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"n = 5\n",
"def fun(x, y):\n",
" return np.vstack((\n",
" y[1],\n",
" n * np.sinh(n * y[0])\n",
" ))\n",
"\n",
"\n",
"def bc(ya, yb):\n",
" return np.array([ya[0], yb[0] - 1])\n",
"\n",
"x = np.linspace(0, 1, 5)\n",
"y = np.empty((2, x.size))\n",
"y[0] = x\n",
"y[1] = 1"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 5.05e+00 5 5 \n",
" 2 3.94e-01 10 6 \n",
" 3 3.52e-02 16 5 \n",
" 4 6.33e-03 21 3 \n",
" 5 9.96e-04 24 0 \n",
"Solved in 5 iterations, number of nodes 24, maximum relative residual 9.96e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x108b78208>]"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nJMX+H9RMBvrW4TsCAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1086e89b0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The solution seems to resemble what is expected. For higher values of n the continuation technique should be used."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Already checked as #6 in the second section."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Skipped, because the problem is quite convoluted with a lot of parameters and regimes. I haven't figured out a suitable starting point (not provided). Potentially this problem is hard for collocation methods, may be considered as a failed problem."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 4."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I use boundary conditions type 1 and \"Brusselator mechanism\" for f and g definition."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"A = 2\n",
"B = 4.6\n",
"Dx = 0.0016\n",
"Dy = 0.008\n",
"L = 0.1\n",
"\n",
"def fun(x, y):\n",
" f = A + y[0]**2 * y[2] - (B + 1) * y[0]\n",
" g = B * y[0] - y[0]**2 * y[2]\n",
" return np.vstack((\n",
" y[1],\n",
" -f * L**2 / Dx,\n",
" y[3],\n",
" -g * L**2 / Dy\n",
" ))\n",
"\n",
"\n",
"def bc(ya, yb):\n",
" return np.array([ya[0] - A, yb[0] - A, ya[2] - B / A, yb[2] - B / A])\n",
"\n",
"x = np.linspace(0, 1, 10)\n",
"y = np.zeros((4, x.size))"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 1.55e-02 10 9 \n",
" 2 3.33e-04 19 0 \n",
"Solved in 2 iterations, number of nodes 19, maximum relative residual 3.33e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x108a83710>]"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108556400>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])\n",
"plt.plot(res.x, res.y[2])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Seems to work well. The problem looks simple."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 5."
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"R = 100\n",
"s = 0.8\n",
"\n",
"def fun(x, y, p):\n",
" k = p[0]\n",
" return np.vstack((\n",
" y[1],\n",
" R**0.5 * y[4] * y[1] + R * (y[0]**2 - y[2]**2 + k),\n",
" y[3],\n",
" 2 * R * y[0] * y[2] + R**0.5 * y[3] * y[4],\n",
" -2 * R**0.5 * y[0]\n",
" ))\n",
"\n",
"\n",
"def bc(ya, yb, p):\n",
" k = p[0]\n",
" return np.array([ya[0], ya[4], ya[2] - 1, yb[0], yb[4], yb[2] - s])\n",
"\n",
"\n",
"x = np.linspace(0, 1, 5)\n",
"y = np.ones((5, x.shape[0] ))"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 4.51e-01 5 6 \n",
" 2 2.92e-02 11 10 \n",
" 3 6.01e-03 21 18 \n",
" 4 1.10e-03 39 1 \n",
" 5 9.23e-04 40 0 \n",
"Solved in 5 iterations, number of nodes 40, maximum relative residual 9.23e-04.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, p=[1], tol=TOL, verbose=2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The parameter value and plots match with ones from the paper."
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.8039883456153466"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res.p[0]"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x108e50fd0>]"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108b39940>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])\n",
"plt.plot(res.x, res.y[2] - 1)\n",
"plt.plot(res.x, res.y[4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 6."
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"B = 6\n",
"Da = 0.053\n",
"gamma = 20\n",
"l = 0.5\n",
"\n",
"def fun(x, y):\n",
" e = Da * (1 - y[0]) * np.exp(y[1] / (1 + y[1] / gamma))\n",
" return np.vstack((\n",
" e,\n",
" B * e\n",
" ))\n",
"\n",
"def bc(ya, yb):\n",
" return ya - (1 - l) * yb\n",
"\n",
"\n",
"x = np.linspace(0, 1, 5)\n",
"y = np.ones((2, x.shape[0]))"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Iteration Max residual Total nodes Nodes added \n",
" 1 8.16e-05 5 0 \n",
"Solved in 1 iterations, number of nodes 5, maximum relative residual 8.16e-05.\n"
]
}
],
"source": [
"res = solve_bvp(fun, bc, x, y, tol=TOL, verbose=2)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x108c8d898>]"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108c8d630>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(res.x, res.y[0])\n",
"plt.plot(res.x, res.y[1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The problems seems to be easy. The values at x=0 match with the ones reported in the paper."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 7."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It contains one algebraic equation and I got lazy to bother with it."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conclusion"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The solver copes well with most of the problems. I consider it to be suitable for practical usage."
]
}
],
"metadata": {
"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.4.4"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment