Skip to content

Instantly share code, notes, and snippets.

@adonath
Created July 26, 2013 13:07
Show Gist options
  • Save adonath/6088712 to your computer and use it in GitHub Desktop.
Save adonath/6088712 to your computer and use it in GitHub Desktop.
Helper IPython Notebook for implementing new astropy models with SymPy.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "SymPyModels"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Implementing new Models and testing against SymPy\n",
"\n",
"This is an IPython notebook which is useful for implementing new models.\n",
"\n",
"##Template for implementing new 1D models:\n",
"\n",
" class Name1DModel(Parametric1DModel):\n",
" \"\"\"\n",
" One dimensional Name1D model.\n",
" \n",
" Parameters\n",
" ---------\n",
" \n",
" Notes\n",
" -----\n",
" Model formula:\n",
" \n",
" .. math::\n",
" \n",
" f(x) = \n",
"\n",
" See Also\n",
" --------\n",
" \n",
" \"\"\"\n",
" def __init__(self):\n",
" super(Name1DModel, self).__init__(locals())\n",
" \n",
" def eval(self, x):\n",
" \"\"\"\n",
" Model function Name1D.\n",
" \"\"\"\n",
" return []\n",
" \n",
" def deriv(self, x):\n",
" \"\"\"\n",
" Model function derivatives Name1D.\n",
" \"\"\"\n",
" return []\n",
"\n",
"\n",
"If no derivative function is provided it should be removed completely!\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Model derivatives and test values with SymPy\n",
"\n",
"For all models test values and derivatives should be provided. This can be done with this notebook and SymPy: \n",
"\n",
"* Create a new cell for your model\n",
"* Define the model parameters as SymPy symbols: \n",
"\n",
"\n",
" A, x_0, sigma = symbols('A x_0 sigma')\n",
"\n",
"\n",
"* Set the parameter values in a dict:\n",
"\n",
" parameters = {A:1, x_0:0, sigma:1} \n",
"\n",
"* Define the model function:\n",
"\n",
" f = A * exp(-(x - x_0) ** 2 / (2 * sigma ** 2))\n",
"\n",
"* Define the x values, where you want to evaluate the model:\n",
"\n",
" x_values = [0, np.sqrt(2), -np.sqrt(2)]\n",
"\n",
"* Call eval_sympy with the following arguments:\n",
"\n",
" eval_sympy(f, parameters, x_values)\n",
"\n",
"* Check that the formula shown is correct! Than you can copy and paste the model derivates and the Latex string in your code."
]
},
{
"cell_type": "code",
"collapsed": true,
"input": [
"from sympy import symbols, latex, diff, Symbol\n",
"from sympy.functions import sin, cos, exp, log, sqrt\n",
"import numpy as np\n",
"%load_ext sympy.interactive.ipythonprinting"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = Symbol('x')\n",
"y = Symbol('y')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def eval_sympy(f, parameters, x_values, y_values=None, derivative=True):\n",
" \"\"\"\n",
" Calculate model values and derivatives using sympy.\n",
"\n",
" Evaluate sympy expression at given x or x and y values, calculate derivatives\n",
" and print latex expression of the model formula.\n",
" \"\"\"\n",
" if derivative:\n",
" for param in parameters.keys():\n",
" deriv = diff(f, param)\n",
" print \"d_{0} = {1}\\n\".format(param, deriv)\n",
" \n",
" if y_values == None:\n",
" y_vals = []\n",
" # eval sympy expression\n",
" for x_val in x_values:\n",
" parameters[x] = x_val\n",
" y_vals.append(round(f.evalf(subs=parameters), 6))\n",
"\n",
" # Output values as list and latex expression\n",
" print \"y_values = {0}\\n\".format(y_vals)\n",
" print \"Latex string: f(x) = {0}\\n\".format(latex(f).replace(\"\\\\\", \"\\\\\\\\\"))\n",
" else:\n",
" z_vals = []\n",
" # eval sympy expression\n",
" for x_val, y_val in zip(x_values, y_values):\n",
" parameters[x] = x_val\n",
" parameters[y] = y_val\n",
" z_vals.append(round(f.evalf(subs=parameters), 6))\n",
"\n",
" # Output values as list and latex expression\n",
" print \"z_values = {0}\\n\".format(z_vals)\n",
" print \"Latex string: f(x, y) = {0}\\n\".format(latex(f).replace(\"\\\\\", \"\\\\\\\\\"))\n",
" return f\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Gaussian1DModel"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A, x_0, sigma = symbols('A x_0 sigma')\n",
"parameters = {A:1, x_0:0, sigma:1}\n",
"f = A * exp(-(x - x_0) ** 2 / (2 * sigma ** 2))\n",
"x_values = [0, np.sqrt(2), -np.sqrt(2)]\n",
"eval_sympy(f, parameters, x_values)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"d_sigma = A*(x - x_0)**2*exp(-(x - x_0)**2/(2*sigma**2))/sigma**3\n",
"\n",
"d_x_0 = -A*(-2*x + 2*x_0)*exp(-(x - x_0)**2/(2*sigma**2))/(2*sigma**2)\n",
"\n",
"d_A = exp(-(x - x_0)**2/(2*sigma**2))\n",
"\n",
"y_values = [1.0, 0.367879, 0.367879]\n",
"\n",
"Latex string: f(x) = A e^{- \\\\frac{\\\\left(x - x_{0}\\\\right)^{2}}{2 \\\\sigma^{2}}}\n",
"\n"
]
},
{
"latex": [
"$$A e^{- \\frac{\\left(x - x_{0}\\right)^{2}}{2 \\sigma^{2}}}$$"
],
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAjCAYAAAApF3xtAAAABHNCSVQICAgIfAhkiAAAAx1JREFU\naIHt2F+IVHUUwPFPu2trhBXC5maF4sKaEbViBrGGkIkoiEWEFD1IFJVhoIiiQS29RNsfQXwwQUER\n1Icwo4J6iIjIIAqCyiCljKSysqUCK4Pt4dxl705zZ2Zn585car4vv5nf7577O/dwzvmd36FNWS5q\ntQItZhDduB670gsdLVGnOCzC21jQakWKyAwMtVqJIvIAZpZO/t9zzCb04Tw2pxeKaph+jOAW3IDv\ncQfW49cKcldgSRWZfnyJ0UoKdNWpeJ50Ya5Q/jUM4DMcFR84A2vLyJ3BFxkySzAd1+IgluOtHL8h\nFwYxG5cJI70qTs++GmSzZIaT8WlhoHKGnUARPWYOPhAfcRJf4Xb8gVNVZLdmyFySrP8pEu3F1ZQo\nomFGRLg8UYdslszvyXgpzqmSX6Czjs3z5iwW4usGvnNUeOI04Y39+LyB728ag+Ij8uBG9OT07v8+\nzaxj1mNehfUPcaRJulSliAVe1cTYDCZrmB34DU/moEujyWwp1MJk2g4343FcM9lNWsSUWgq11jEd\neDYZe+vZqIF04DHjRdtwxnM7RT30Y57KPIJH8Rc+znOjGlgt7jzwsvCMLMq2FGqhllDqwT14SRRf\nrfaYPtyb/D5l3EilbBJG256XIvtEIoOP8Ldsgw5gjwi7F3FAuHMj6U69801x4Ww6g9if+v+GOE5n\nlXl2HT7B1am5LViTk263YVvq/8N4Dt8I716a07668B6uSs3tE4a5qeTZW3HBuGcRTabXcWUOul1u\nYsmwAg8lvzdi8VQ3qHQqbcAr+C4190My9grvGGMIv+BO3CUupydELqjUcauX+/GMuE8txSo8lazN\nF+E8JbIKvNmiRD8hcsoYc3CdCJuxEJsmeqZ7hTvnzX3YLU7IThFSM4VnXxAtzffz2vyQaPSUcrcI\npa2pud5kbkteyrSCcqfLMvwsqsZSvk3G9JH9kwiXcmG5AA9ORcGiMF9k9awjdq7wjkMl88N418TQ\nXCaS9fTGqthc+nBcxOgoPvXv+uAYTifr5/EOViZrXXgBh/G8KMfXKebtvU2bNm3aFJV/AA1yizhA\niy3zAAAAAElFTkSuQmCC\n",
"prompt_number": 5,
"text": [
" 2\n",
" -(x - x\u2080) \n",
" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
" 2 \n",
" 2\u22c5\u03c3 \n",
"A\u22c5\u212f "
]
}
],
"prompt_number": 5
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Gaussian2DModel"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A, x_0, y_0, sigma_x, sigma_y, theta = symbols('A x_0 y_0 sigma_x sigma_y theta')\n",
"a = cos(theta) ** 2 / (2*sigma_x ** 2) + sin(theta) ** 2 / (2*sigma_y ** 2)\n",
"b = -sin(2 * theta) / (4*sigma_x ** 2) + sin(2*theta) / (4*sigma_y ** 2)\n",
"c = sin(theta) ** 2 / (2*sigma_x ** 2) + cos(theta) ** 2 / (2*sigma_y ** 2)\n",
"f = (A * exp(-a * (x - x_0) ** 2 - c * (y - y_0) ** 2 - 2 * b * (x - x_0) * (y - y_0)))\n",
"parameters = {A:1, x_0:0, y_0:0, sigma_x:1, sigma_y:1, theta:0}\n",
"x_values = [0, np.sqrt(2), -np.sqrt(2)]\n",
"y_values = [0, np.sqrt(2), -np.sqrt(2)]\n",
"eval_sympy(f, parameters, x_values, y_values)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"d_theta = A*((x - x_0)**2*(-sin(theta)*cos(theta)/sigma_y**2 + sin(theta)*cos(theta)/sigma_x**2) - (x - x_0)*(y - y_0)*(cos(2*theta)/sigma_y**2 - cos(2*theta)/sigma_x**2) - (y - y_0)**2*(-sin(theta)*cos(theta)/sigma_y**2 + sin(theta)*cos(theta)/sigma_x**2))*exp((x - x_0)**2*(-sin(theta)**2/(2*sigma_y**2) - cos(theta)**2/(2*sigma_x**2)) - (x - x_0)*(y - y_0)*(sin(2*theta)/(2*sigma_y**2) - sin(2*theta)/(2*sigma_x**2)) - (y - y_0)**2*(cos(theta)**2/(2*sigma_y**2) + sin(theta)**2/(2*sigma_x**2)))\n",
"\n",
"d_sigma_y = A*((x - x_0)**2*sin(theta)**2/sigma_y**3 + (x - x_0)*(y - y_0)*sin(2*theta)/sigma_y**3 + (y - y_0)**2*cos(theta)**2/sigma_y**3)*exp((x - x_0)**2*(-sin(theta)**2/(2*sigma_y**2) - cos(theta)**2/(2*sigma_x**2)) - (x - x_0)*(y - y_0)*(sin(2*theta)/(2*sigma_y**2) - sin(2*theta)/(2*sigma_x**2)) - (y - y_0)**2*(cos(theta)**2/(2*sigma_y**2) + sin(theta)**2/(2*sigma_x**2)))\n",
"\n",
"d_y_0 = A*((x - x_0)*(sin(2*theta)/(2*sigma_y**2) - sin(2*theta)/(2*sigma_x**2)) - (-2*y + 2*y_0)*(cos(theta)**2/(2*sigma_y**2) + sin(theta)**2/(2*sigma_x**2)))*exp((x - x_0)**2*(-sin(theta)**2/(2*sigma_y**2) - cos(theta)**2/(2*sigma_x**2)) - (x - x_0)*(y - y_0)*(sin(2*theta)/(2*sigma_y**2) - sin(2*theta)/(2*sigma_x**2)) - (y - y_0)**2*(cos(theta)**2/(2*sigma_y**2) + sin(theta)**2/(2*sigma_x**2)))\n",
"\n",
"d_x_0 = A*((-2*x + 2*x_0)*(-sin(theta)**2/(2*sigma_y**2) - cos(theta)**2/(2*sigma_x**2)) + (y - y_0)*(sin(2*theta)/(2*sigma_y**2) - sin(2*theta)/(2*sigma_x**2)))*exp((x - x_0)**2*(-sin(theta)**2/(2*sigma_y**2) - cos(theta)**2/(2*sigma_x**2)) - (x - x_0)*(y - y_0)*(sin(2*theta)/(2*sigma_y**2) - sin(2*theta)/(2*sigma_x**2)) - (y - y_0)**2*(cos(theta)**2/(2*sigma_y**2) + sin(theta)**2/(2*sigma_x**2)))\n",
"\n",
"d_A = exp((x - x_0)**2*(-sin(theta)**2/(2*sigma_y**2) - cos(theta)**2/(2*sigma_x**2)) - (x - x_0)*(y - y_0)*(sin(2*theta)/(2*sigma_y**2) - sin(2*theta)/(2*sigma_x**2)) - (y - y_0)**2*(cos(theta)**2/(2*sigma_y**2) + sin(theta)**2/(2*sigma_x**2)))\n",
"\n",
"d_sigma_x = A*((x - x_0)**2*cos(theta)**2/sigma_x**3 - (x - x_0)*(y - y_0)*sin(2*theta)/sigma_x**3 + (y - y_0)**2*sin(theta)**2/sigma_x**3)*exp((x - x_0)**2*(-sin(theta)**2/(2*sigma_y**2) - cos(theta)**2/(2*sigma_x**2)) - (x - x_0)*(y - y_0)*(sin(2*theta)/(2*sigma_y**2) - sin(2*theta)/(2*sigma_x**2)) - (y - y_0)**2*(cos(theta)**2/(2*sigma_y**2) + sin(theta)**2/(2*sigma_x**2)))\n",
"\n",
"z_values = [1.0, 0.135335, 0.135335]\n"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Latex string: f(x, y) = A e^{\\\\left(x - x_{0}\\\\right)^{2} \\\\left(- \\\\frac{\\\\sin^{2}{\\\\left (\\\\theta \\\\right )}}{2 \\\\sigma_{y}^{2}} - \\\\frac{\\\\cos^{2}{\\\\left (\\\\theta \\\\right )}}{2 \\\\sigma_{x}^{2}}\\\\right) - \\\\left(x - x_{0}\\\\right) \\\\left(y - y_{0}\\\\right) \\\\left(\\\\frac{\\\\sin{\\\\left (2 \\\\theta \\\\right )}}{2 \\\\sigma_{y}^{2}} - \\\\frac{\\\\sin{\\\\left (2 \\\\theta \\\\right )}}{2 \\\\sigma_{x}^{2}}\\\\right) - \\\\left(y - y_{0}\\\\right)^{2} \\\\left(\\\\frac{\\\\cos^{2}{\\\\left (\\\\theta \\\\right )}}{2 \\\\sigma_{y}^{2}} + \\\\frac{\\\\sin^{2}{\\\\left (\\\\theta \\\\right )}}{2 \\\\sigma_{x}^{2}}\\\\right)}\n",
"\n"
]
},
{
"latex": [
"$$A e^{\\left(x - x_{0}\\right)^{2} \\left(- \\frac{\\sin^{2}{\\left (\\theta \\right )}}{2 \\sigma_{y}^{2}} - \\frac{\\cos^{2}{\\left (\\theta \\right )}}{2 \\sigma_{x}^{2}}\\right) - \\left(x - x_{0}\\right) \\left(y - y_{0}\\right) \\left(\\frac{\\sin{\\left (2 \\theta \\right )}}{2 \\sigma_{y}^{2}} - \\frac{\\sin{\\left (2 \\theta \\right )}}{2 \\sigma_{x}^{2}}\\right) - \\left(y - y_{0}\\right)^{2} \\left(\\frac{\\cos^{2}{\\left (\\theta \\right )}}{2 \\sigma_{y}^{2}} + \\frac{\\sin^{2}{\\left (\\theta \\right )}}{2 \\sigma_{x}^{2}}\\right)}$$"
],
"output_type": "pyout",
"png": "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\n",
"prompt_number": 20,
"text": [
" \u239b 2 2 \u239e \n",
" 2 \u239c sin (\u03b8) cos (\u03b8)\u239f \u239b sin(2\u22c5\u03b8) sin(2\u22c5\n",
" (x - x\u2080) \u22c5\u239c- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f - (x - x\u2080)\u22c5(y - y\u2080)\u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\n",
" \u239c 2 2 \u239f \u239c 2 2\n",
" \u239d 2\u22c5sigma_y 2\u22c5\u03c3\u2093 \u23a0 \u239d2\u22c5sigma_y 2\u22c5\u03c3\u2093 \n",
"A\u22c5\u212f \n",
"\n",
" \u239b 2 2 \u239e\n",
"\u03b8)\u239e 2 \u239c cos (\u03b8) sin (\u03b8)\u239f\n",
"\u2500\u2500\u239f - (y - y\u2080) \u22c5\u239c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f\n",
" \u239f \u239c 2 2 \u239f\n",
" \u23a0 \u239d2\u22c5sigma_y 2\u22c5\u03c3\u2093 \u23a0\n",
" "
]
}
],
"prompt_number": 20
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"PowerLaw1DModel"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A, alpha = symbols('A alpha')\n",
"f = A * x**(-alpha)\n",
"parameters = {A:1, alpha:2}\n",
"x_values = [1, 10, 100]\n",
"eval_sympy(f, parameters, x_values)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"d_alpha = -A*x**(-alpha)*log(x)\n",
"\n",
"d_A = x**(-alpha)\n",
"\n",
"y_values = [1.0, 0.01, 0.0001]\n",
"\n",
"Latex string: f(x) = A x^{- \\\\alpha}\n",
"\n"
]
},
{
"latex": [
"$$A x^{- \\alpha}$$"
],
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAADAAAAATCAYAAADWOo4fAAAABHNCSVQICAgIfAhkiAAAAepJREFU\nSInt1Dlo1EEUx/HPrkFQEcSDxAtjtogWkiIWHp0HYikiWFkJGgvBC7tYRfEACw8M4qpVUCsbSxVR\nRLxABVE8UIKoIAii4hUt5r9k9s9ms+vuCsJ+m5n3Zv7v/5t58x7/OZkq9x/GJ/Q2QEspMtiKX/iJ\n+diBFkzGm2qCLUwC5eursSwnsD2yT2ET1qGNcJJKyGJ/MrbVKGoLOsqs38Y54cLWYFa09gyLcB9v\nq/npZvTgO+5V82EN7MT5Er4nokvMVhBompCyfrxXewYq5R2+RHYGOdxJdIwpOEcjL7y9G7iLLozF\nUGpfNzYIddKOjcJ7nYSZ2IPnVRwgi714gc/JP6/hKC7jJD6OFmQpzkb2JfxGa2pfB44ZzugZPMWS\nJMaQ0D3+KS24jumRLy8coCu19zgmRvYF3Erms3EIUxojc2S2CUUTs084wKqUf27KHkRfg3QVMVIb\nnSGIf4wVkX9OMqYL+WU07xTe/JV6CPxbBrCshH+tkIHdZb7twTeMj3y5+kkrplQbXY4PQqWnGUzG\nOAPjcAALEnslHhhugVnsqllphXTiteKCjGkXMjAQ+QpZWY95eCgUf4FeLK630DQ53MSPRMwjoQ5i\nLuJVsv4VV7EaU3EaB4VMTBBabz+OCBlp0qRJg/gDGXhbN76V5cUAAAAASUVORK5CYII=\n",
"prompt_number": 7,
"text": [
" -\u03b1\n",
"A\u22c5x "
]
}
],
"prompt_number": 7
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"MexicanHat1DModel"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A, x_0, sigma = symbols('A x_0 sigma')\n",
"f = A * (1 - (x - x_0)**2/(2*sigma**2)) * exp(-(x - x_0)**2/(2*sigma**2))\n",
"parameters = {A:1, x_0:0, sigma:1}\n",
"x_values = [0, 1, -1, 3, -3]\n",
"eval_sympy(f, parameters, x_values)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"d_sigma = A*(1 - (x - x_0)**2/(2*sigma**2))*(x - x_0)**2*exp(-(x - x_0)**2/(2*sigma**2))/sigma**3 + A*(x - x_0)**2*exp(-(x - x_0)**2/(2*sigma**2))/sigma**3\n",
"\n",
"d_x_0 = -A*(1 - (x - x_0)**2/(2*sigma**2))*(-2*x + 2*x_0)*exp(-(x - x_0)**2/(2*sigma**2))/(2*sigma**2) - A*(-2*x + 2*x_0)*exp(-(x - x_0)**2/(2*sigma**2))/(2*sigma**2)\n",
"\n",
"d_A = (1 - (x - x_0)**2/(2*sigma**2))*exp(-(x - x_0)**2/(2*sigma**2))\n",
"\n",
"y_values = [1.0, 0.303265, 0.303265, -0.038881, -0.038881]\n",
"\n",
"Latex string: f(x) = A \\\\left(1 - \\\\frac{\\\\left(x - x_{0}\\\\right)^{2}}{2 \\\\sigma^{2}}\\\\right) e^{- \\\\frac{\\\\left(x - x_{0}\\\\right)^{2}}{2 \\\\sigma^{2}}}\n",
"\n"
]
},
{
"latex": [
"$$A \\left(1 - \\frac{\\left(x - x_{0}\\right)^{2}}{2 \\sigma^{2}}\\right) e^{- \\frac{\\left(x - x_{0}\\right)^{2}}{2 \\sigma^{2}}}$$"
],
"output_type": "pyout",
"png": "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\ndwAAAABJRU5ErkJggg==\n",
"prompt_number": 8,
"text": [
" 2\n",
" -(x - x\u2080) \n",
" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
" \u239b 2\u239e 2 \n",
" \u239c (x - x\u2080) \u239f 2\u22c5\u03c3 \n",
"A\u22c5\u239c1 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f\u22c5\u212f \n",
" \u239c 2 \u239f \n",
" \u239d 2\u22c5\u03c3 \u23a0 "
]
}
],
"prompt_number": 8
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"MexicanHat2DModel"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A, x_0, y_0, sigma = symbols('A x_0 y_0 sigma')\n",
"f = A * (1 - ((x - x_0)**2 + (y - y_0)**2)/(2*sigma**2)) * exp(-((x - x_0)**2 + (y - y_0)**2)/(2*sigma**2))\n",
"parameters = {A:1, x_0:0, y_0:0, sigma:1}\n",
"x_values = [0, 1, -1, 3, -3, 0, 0, 0, 0]\n",
"y_values = [0, 0, 0, 0, 0, 1, -1, 3, -3]\n",
"eval_sympy(f, parameters, x_values, y_values)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"d_y_0 = A*(1 - ((x - x_0)**2 + (y - y_0)**2)/(2*sigma**2))*(2*y - 2*y_0)*exp((-(x - x_0)**2 - (y - y_0)**2)/(2*sigma**2))/(2*sigma**2) - A*(-2*y + 2*y_0)*exp((-(x - x_0)**2 - (y - y_0)**2)/(2*sigma**2))/(2*sigma**2)\n",
"\n",
"d_sigma = -A*(1 - ((x - x_0)**2 + (y - y_0)**2)/(2*sigma**2))*(-(x - x_0)**2 - (y - y_0)**2)*exp((-(x - x_0)**2 - (y - y_0)**2)/(2*sigma**2))/sigma**3 + A*((x - x_0)**2 + (y - y_0)**2)*exp((-(x - x_0)**2 - (y - y_0)**2)/(2*sigma**2))/sigma**3\n",
"\n",
"d_x_0 = A*(1 - ((x - x_0)**2 + (y - y_0)**2)/(2*sigma**2))*(2*x - 2*x_0)*exp((-(x - x_0)**2 - (y - y_0)**2)/(2*sigma**2))/(2*sigma**2) - A*(-2*x + 2*x_0)*exp((-(x - x_0)**2 - (y - y_0)**2)/(2*sigma**2))/(2*sigma**2)\n",
"\n",
"d_A = (1 - ((x - x_0)**2 + (y - y_0)**2)/(2*sigma**2))*exp((-(x - x_0)**2 - (y - y_0)**2)/(2*sigma**2))\n",
"\n",
"z_values = [1.0, 0.303265, 0.303265, -0.038881, -0.038881, 0.303265, 0.303265, -0.038881, -0.038881]\n",
"\n",
"Latex string: f(x, y) = A \\\\left(1 - \\\\frac{\\\\left(x - x_{0}\\\\right)^{2} + \\\\left(y - y_{0}\\\\right)^{2}}{2 \\\\sigma^{2}}\\\\right) e^{\\\\frac{- \\\\left(x - x_{0}\\\\right)^{2} - \\\\left(y - y_{0}\\\\right)^{2}}{2 \\\\sigma^{2}}}\n",
"\n"
]
},
{
"latex": [
"$$A \\left(1 - \\frac{\\left(x - x_{0}\\right)^{2} + \\left(y - y_{0}\\right)^{2}}{2 \\sigma^{2}}\\right) e^{\\frac{- \\left(x - x_{0}\\right)^{2} - \\left(y - y_{0}\\right)^{2}}{2 \\sigma^{2}}}$$"
],
"output_type": "pyout",
"png": "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\n",
"prompt_number": 9,
"text": [
" 2 2\n",
" - (x - x\u2080) - (y - y\u2080) \n",
" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
" \u239b 2 2\u239e 2 \n",
" \u239c (x - x\u2080) + (y - y\u2080) \u239f 2\u22c5\u03c3 \n",
"A\u22c5\u239c1 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f\u22c5\u212f \n",
" \u239c 2 \u239f \n",
" \u239d 2\u22c5\u03c3 \u23a0 "
]
}
],
"prompt_number": 9
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Lorentz1DModel"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A, x_0, gamma = symbols('A x_0 gamma')\n",
"f = A * gamma ** 2 / ((x - x_0)**2 + gamma**2)\n",
"parameters = {A:1, x_0:0, gamma:1}\n",
"x_values = [0, 1, -1, 3, -3]\n",
"eval_sympy(f, parameters, x_values)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"d_gamma = -2*A*gamma**3/(gamma**2 + (x - x_0)**2)**2 + 2*A*gamma/(gamma**2 + (x - x_0)**2)\n",
"\n",
"d_x_0 = A*gamma**2*(2*x - 2*x_0)/(gamma**2 + (x - x_0)**2)**2\n",
"\n",
"d_A = gamma**2/(gamma**2 + (x - x_0)**2)\n",
"\n",
"y_values = [1.0, 0.5, 0.5, 0.1, 0.1]\n",
"\n",
"Latex string: f(x) = \\\\frac{A \\\\gamma^{2}}{\\\\gamma^{2} + \\\\left(x - x_{0}\\\\right)^{2}}\n",
"\n"
]
},
{
"latex": [
"$$\\frac{A \\gamma^{2}}{\\gamma^{2} + \\left(x - x_{0}\\right)^{2}}$$"
],
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAE4AAAAtCAYAAAAAyl3pAAAABHNCSVQICAgIfAhkiAAAA0FJREFU\naIHt2luoFVUcx/FPR/PS5QhdjiEG0cUOFQSaD6K+iBYmhxAqsBCF8KEMKuihAuUIihdQX31SJIp6\nqBAE6016yC4cKuwhiApfpI6BpNjxktXDWps9Htpnz4yzZ+Z45gsD/1kz+79+a7H2mrXmNzTk4qaq\nBWSkD5sxO57vqVDLpGII98b4IyyqSkhfVRXn5AGsi/HP2p3Y0IWZuD3Gn2FeVULqMOJm4SRuSXHv\nJZzHchzH6d7Jqj+v418sSHn/HGztnZzJwUJhgr+EFSl/sxk3x2Nlj3TVmpnCUxJ+xfrEtU0YxU94\nPJbdjRdxDn/gLB4rRWnNWKk9x36Ot2P8DN7CgNBp78Xy9ZhepsCJqErII0LHPRHP+zE/xn9hV4xH\n8SEexhj+LlFj7ZiBtePK9uFIh/vn46DQubWhiuXIy/h0XNnv2iNuPL8JW6xzvRRVZ5biKM5gdaJ8\nHU7gArYLD40kA3iuDIE3GhulX+OVRh12Dt1YKCxLasVk6LjTws6ioaGhoaEkWp5DM/lmJI1ZM9UM\nksLaWxuDpCRStTfNOm6qGSSFtbc2BklJpGrvtBSJruKyYJD8g2NFqKsxhbZ3qhkkhbU3j0HyahEV\nV0QhhtAL8hkkw3krrJhU7U16DpuwA3/iWXwvOEtjynltvRQPCQbNCG7FU3gTv5SY6/14pKIXztJw\ninvWCn+HfryU0PJVjA/jnoz15sk1iAezVNLqlOt1luYKjnxyJ7JM+LyhxXlhRLdYI7ygvCI83d+N\n5UvwSYw3JO5/BfdPoOGbqPtyilzb8IPgc+zHj8K8dirqyU0RztJwl+s7O5SPYHGM51xH/Z1yPYl3\nYnxAe6QNai98u9Jp59BrZ2mGa0fjEN7AfcJk/K0wejfmyN0t1xJ8F+OTwnqNMOpandyVTvPXHfg4\ni9qM3Cm4Wi3uErY6Q9iC13ARH+TI3S3XQKLuC66d91KP8E4d9zS+yCD2/xib4NpZ3JY4PxSPIuiW\nq0/YHYyPyfClQKe/ahHO0u4Jrl1U3ecMo9qvjPoFn5cw142kTdKp48pwlr4U1lplcwKPxngRvo7x\nKhnWb1XzvLCOK5Np2Bvr3hLLBt347xkbGhoaGnrNf6oaovOSUcI2AAAAAElFTkSuQmCC\n",
"prompt_number": 10,
"text": [
" 2 \n",
" A\u22c5\u03b3 \n",
"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n",
" 2 2\n",
"\u03b3 + (x - x\u2080) "
]
}
],
"prompt_number": 10
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Box1DModel"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from sympy.functions.special.delta_functions import Heaviside\n",
"A, x_0, width = symbols('A x_0 w')\n",
"f = Heaviside((x - x_0) + width/2) - Heaviside((x - x_0) - width/2) \n",
"parameters = {A:1, x_0:0, width:1}\n",
"x_values = [0, 1, -1, 0.5, -0.5]\n",
"eval_sympy(f, parameters, x_values)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"d_w = DiracDelta(-w/2 + x - x_0)/2 + DiracDelta(w/2 + x - x_0)/2\n",
"\n",
"d_x_0 = DiracDelta(-w/2 + x - x_0) - DiracDelta(w/2 + x - x_0)\n",
"\n",
"d_A = 0\n",
"\n",
"y_values = [1.0, 0.0, 0.0, 0.5, 0.5]\n",
"\n",
"Latex string: f(x) = - \\\\operatorname{Heaviside}{\\\\left (- \\\\frac{1}{2} w + x - x_{0} \\\\right )} + \\\\operatorname{Heaviside}{\\\\left (\\\\frac{1}{2} w + x - x_{0} \\\\right )}\n",
"\n"
]
},
{
"latex": [
"$$- \\operatorname{Heaviside}{\\left (- \\frac{1}{2} w + x - x_{0} \\right )} + \\operatorname{Heaviside}{\\left (\\frac{1}{2} w + x - x_{0} \\right )}$$"
],
"output_type": "pyout",
"png": "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\n",
"prompt_number": 11,
"text": [
" \u239b w \u239e \u239bw \u239e\n",
"- Heaviside\u239c- \u2500 + x - x\u2080\u239f + Heaviside\u239c\u2500 + x - x\u2080\u239f\n",
" \u239d 2 \u23a0 \u239d2 \u23a0"
]
}
],
"prompt_number": 11
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Airy2DModel"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from mpmath import j1\n",
"A, x_0, y_0, sigma = 1, 0, 0, 1\n",
"x_values = np.array([0.00001, 1, -1, -0.5, -0.5])\n",
"y_values = np.array([0.00001, -1, 0.5, 0.5, -0.5])\n",
"for x_val, y_val in zip(x_values, y_values):\n",
" r = np.sqrt((x_val - x_0) ** 2 + (y_val - y_0)**2) / sigma\n",
" print A * j1(2 * np.pi * r) / (np.pi * r)\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0.999999999013039\n",
"0.0578939146823616\n",
"0.000787957636764354\n",
"-0.0968896894157079\n",
"-0.0968896894157079\n"
]
}
],
"prompt_number": 12
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Beta1DModel"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A, x_0, gamma, alpha = symbols('A x_0 gamma alpha')\n",
"f = A * (1 + ((x - x_0)/gamma) ** 2) ** (-alpha)\n",
"parameters = {A:1, x_0:0, gamma:1, alpha:2}\n",
"x_values = [0, 1, -1, 3, -3]\n",
"eval_sympy(f, parameters, x_values)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"d_gamma = 2*A*alpha*(1 + (x - x_0)**2/gamma**2)**(-alpha)*(x - x_0)**2/(gamma**3*(1 + (x - x_0)**2/gamma**2))\n",
"\n",
"d_alpha = -A*(1 + (x - x_0)**2/gamma**2)**(-alpha)*log(1 + (x - x_0)**2/gamma**2)\n",
"\n",
"d_x_0 = -A*alpha*(1 + (x - x_0)**2/gamma**2)**(-alpha)*(-2*x + 2*x_0)/(gamma**2*(1 + (x - x_0)**2/gamma**2))\n",
"\n",
"d_A = (1 + (x - x_0)**2/gamma**2)**(-alpha)\n",
"\n",
"y_values = [1.0, 0.25, 0.25, 0.01, 0.01]\n",
"\n",
"Latex string: f(x) = A \\\\left(1 + \\\\frac{\\\\left(x - x_{0}\\\\right)^{2}}{\\\\gamma^{2}}\\\\right)^{- \\\\alpha}\n",
"\n"
]
},
{
"latex": [
"$$A \\left(1 + \\frac{\\left(x - x_{0}\\right)^{2}}{\\gamma^{2}}\\right)^{- \\alpha}$$"
],
"output_type": "pyout",
"png": "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\n",
"prompt_number": 13,
"text": [
" -\u03b1\n",
" \u239b 2\u239e \n",
" \u239c (x - x\u2080) \u239f \n",
"A\u22c5\u239c1 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f \n",
" \u239c 2 \u239f \n",
" \u239d \u03b3 \u23a0 "
]
}
],
"prompt_number": 13
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Beta2DModel"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A, x_0, y_0, gamma, alpha = symbols('A x_0 y_0 gamma alpha')\n",
"f = A * (1 + ((x - x_0) ** 2 + (y - y_0) ** 2) / gamma ** 2) ** (-alpha)\n",
"parameters = {A:1, x_0:0, y_0:0, gamma:1, alpha:2}\n",
"x_values = [0, 1, -1, 3, -3]\n",
"y_values = [0, -1, 3, 1, -3]\n",
"eval_sympy(f, parameters, x_values, y_values)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"d_y_0 = -A*alpha*(1 + ((x - x_0)**2 + (y - y_0)**2)/gamma**2)**(-alpha)*(-2*y + 2*y_0)/(gamma**2*(1 + ((x - x_0)**2 + (y - y_0)**2)/gamma**2))\n",
"\n",
"d_gamma = 2*A*alpha*(1 + ((x - x_0)**2 + (y - y_0)**2)/gamma**2)**(-alpha)*((x - x_0)**2 + (y - y_0)**2)/(gamma**3*(1 + ((x - x_0)**2 + (y - y_0)**2)/gamma**2))\n",
"\n",
"d_x_0 = -A*alpha*(1 + ((x - x_0)**2 + (y - y_0)**2)/gamma**2)**(-alpha)*(-2*x + 2*x_0)/(gamma**2*(1 + ((x - x_0)**2 + (y - y_0)**2)/gamma**2))\n",
"\n",
"d_A = (1 + ((x - x_0)**2 + (y - y_0)**2)/gamma**2)**(-alpha)\n",
"\n",
"d_alpha = -A*(1 + ((x - x_0)**2 + (y - y_0)**2)/gamma**2)**(-alpha)*log(1 + ((x - x_0)**2 + (y - y_0)**2)/gamma**2)\n",
"\n",
"z_values = [1.0, 0.111111, 0.008264, 0.008264, 0.00277]\n",
"\n",
"Latex string: f(x, y) = A \\\\left(1 + \\\\frac{\\\\left(x - x_{0}\\\\right)^{2} + \\\\left(y - y_{0}\\\\right)^{2}}{\\\\gamma^{2}}\\\\right)^{- \\\\alpha}\n",
"\n"
]
},
{
"latex": [
"$$A \\left(1 + \\frac{\\left(x - x_{0}\\right)^{2} + \\left(y - y_{0}\\right)^{2}}{\\gamma^{2}}\\right)^{- \\alpha}$$"
],
"output_type": "pyout",
"png": "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\n",
"prompt_number": 14,
"text": [
" -\u03b1\n",
" \u239b 2 2\u239e \n",
" \u239c (x - x\u2080) + (y - y\u2080) \u239f \n",
"A\u22c5\u239c1 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u239f \n",
" \u239c 2 \u239f \n",
" \u239d \u03b3 \u23a0 "
]
}
],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment