Skip to content

Instantly share code, notes, and snippets.

@inducer
Created May 15, 2013 17:59
Show Gist options
  • Save inducer/5585945 to your computer and use it in GitHub Desktop.
Save inducer/5585945 to your computer and use it in GitHub Desktop.
Quadrature playground.ipynb
{
"metadata": {
"name": "Quadrature playground"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"%pylab inline\n",
"\n",
"import numpy as np\n",
"import numpy.linalg as la\n",
"import scipy as sp\n",
"import modepy as mp\n",
"import matplotlib.pyplot as pt"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n",
"For more information, type 'help(pylab)'.\n"
]
}
],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dims = 2\n",
"n = 6\n",
"\n",
"basis = mp.simplex_onb(dims, n+3)\n",
"nodes = mp.warp_and_blend_nodes(dims, n)\n",
"vdm = mp.vandermonde(basis, nodes).T\n",
"print vdm.shape"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(55, 28)\n"
]
}
],
"prompt_number": 46
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"rhs = np.zeros(vdm.shape[0])\n",
"rhs[0] = 1"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 37
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"weights = np.dot(la.pinv(vdm), rhs)\n",
"print la.norm(np.dot(vdm, weights)-rhs)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"0.204379015516\n"
]
}
],
"prompt_number": 38
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"nodes.size"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 39,
"text": [
"56"
]
}
],
"prompt_number": 39
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"starting_guess = np.zeros(nodes.size)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 40
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"it = [0]\n",
"\n",
"def resid(node_offsets):\n",
" node_offsets = node_offsets.reshape(*nodes.shape)\n",
" my_nodes = nodes + node_offsets\n",
" vdm = mp.vandermonde(basis, my_nodes).T\n",
" \n",
" rhs = np.zeros(vdm.shape[0])\n",
" rhs[0] = 1\n",
" \n",
" weights = np.dot(la.pinv(vdm), rhs)\n",
" \n",
" resid = la.norm(np.dot(vdm, weights)-rhs)\n",
" it[0] += 1\n",
" if it[0] % 100 == 0:\n",
" print it[0], resid\n",
" return resid\n",
"\n",
"import scipy.optimize\n",
"opt_result = sp.optimize.minimize(\n",
" resid, starting_guess, method=\"Nelder-Mead\", \n",
" tol=1e-10, options=dict(max_iter=10**5))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"100 0.507153189455\n",
"200"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.505686306206\n",
"300"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.503531641439\n",
"400"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.500963709239\n",
"500"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.496380258627\n",
"600"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.49283626228\n",
"700"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.486850068661\n",
"800"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.478996751582\n",
"900"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.468785780515\n",
"1000"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.455374370091\n",
"1100"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.439206832594\n",
"1200"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.421198354756\n",
"1300"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.40504924355\n",
"1400"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.395156685901\n",
"1500"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.392428678539\n",
"1600"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.386894632777\n",
"1700"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.381801667181\n",
"1800"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.374182573858\n",
"1900"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.366122151764\n",
"2000"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.358301507007\n",
"2100"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.349007554538\n",
"2200"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.342503962594\n",
"2300"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.336082667839\n",
"2400"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.328101062869\n",
"2500"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.320482744491\n",
"2600"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.316838110061\n",
"2700"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.305998021382\n",
"2800"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.29607517404\n",
"2900"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.28639716417\n",
"3000"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.278926876286\n",
"3100"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.270147709011\n",
"3200"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.259986610051\n",
"3300"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.249745210752\n",
"3400"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.23906932628\n",
"3500"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.227150038157\n",
"3600"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.217817595626\n",
"3700"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.212751034803\n",
"3800"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.205821258886\n",
"3900"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.196418688109\n",
"4000"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.188663300382\n",
"4100"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.179940042556\n",
"4200"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.173966922798\n",
"4300"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.168689837766\n",
"4400"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.159593674906\n",
"4500"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.16055196386\n",
"4600"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.157969214783\n",
"4700"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.154072345182\n",
"4800"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.150834307878\n",
"4900"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.149994497926\n",
"5000"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.147851980707\n",
"5100"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.143106761553\n",
"5200"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.139657521261\n",
"5300"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.13585344742\n",
"5400"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.134556531923\n",
"5500"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.132033830131\n",
"5600"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.130909951145\n",
"5700"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.127445374641\n",
"5800"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.124863093046\n",
"5900"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.123887215049\n",
"6000"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.122564467308\n",
"6100"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.121179543894\n",
"6200"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.118902910584\n",
"6300"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.11608200906\n",
"6400"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.112492411727\n",
"6500"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.107749134704\n",
"6600"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.100778030769\n",
"6700"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0878808083241\n",
"6800"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0791472084324\n",
"6900"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0791182315085\n",
"7000"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0724088465124\n",
"7100"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0710141917914\n",
"7200"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0718866617198\n",
"7300"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0685548136393\n",
"7400"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0668627436516\n",
"7500"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0624386914104\n",
"7600"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0592688583398\n",
"7700"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0588999477532\n",
"7800"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0574017280311\n",
"7900"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0559112947208\n",
"8000"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0540428681278\n",
"8100"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0500911117175\n",
"8200"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0447137760537\n",
"8300"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0430000562291\n",
"8400"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0421719013438\n",
"8500"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-51-81800440b4de>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 20\u001b[0m opt_result = sp.optimize.minimize(\n\u001b[1;32m 21\u001b[0m \u001b[0mresid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstarting_guess\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Nelder-Mead\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 22\u001b[0;31m tol=1e-10, options=dict(max_iter=10**5))\n\u001b[0m",
"\u001b[0;32m/usr/lib/python2.7/dist-packages/scipy/optimize/_minimize.pyc\u001b[0m in \u001b[0;36mminimize\u001b[0;34m(fun, x0, args, method, jac, hess, hessp, bounds, constraints, tol, callback, options)\u001b[0m\n\u001b[1;32m 336\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 337\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'nelder-mead'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 338\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_minimize_neldermead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfun\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 339\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mmeth\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'powell'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 340\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_minimize_powell\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfun\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/lib/python2.7/dist-packages/scipy/optimize/optimize.pyc\u001b[0m in \u001b[0;36m_minimize_neldermead\u001b[0;34m(func, x0, args, callback, xtol, ftol, maxiter, maxfev, disp, return_all, **unknown_options)\u001b[0m\n\u001b[1;32m 450\u001b[0m \u001b[0mxbar\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreduce\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msim\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mN\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 451\u001b[0m \u001b[0mxr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mrho\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mxbar\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mrho\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0msim\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 452\u001b[0;31m \u001b[0mfxr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 453\u001b[0m \u001b[0mdoshrink\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 454\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/lib/python2.7/dist-packages/scipy/optimize/optimize.pyc\u001b[0m in \u001b[0;36mfunction_wrapper\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 266\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfunction_wrapper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 267\u001b[0m \u001b[0mncalls\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 268\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunction\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 269\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mncalls\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunction_wrapper\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 270\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<ipython-input-51-81800440b4de>\u001b[0m in \u001b[0;36mresid\u001b[0;34m(node_offsets)\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mnode_offsets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnode_offsets\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mnodes\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mmy_nodes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnodes\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mnode_offsets\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mvdm\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvandermonde\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbasis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmy_nodes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mrhs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvdm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/home/andreas/research/software/modepy/modepy/matrices.pyc\u001b[0m in \u001b[0;36mvandermonde\u001b[0;34m(functions, points)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunctions\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 53\u001b[0;31m \u001b[0mf_values\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpoints\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/home/andreas/research/software/modepy/modepy/tools.pyc\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 265\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 266\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexpected_rank\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 267\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 268\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexpected_rank\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 269\u001b[0m \u001b[0mcontrolling_arg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcontrolling_arg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnewaxis\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/home/andreas/research/software/modepy/modepy/modes.pyc\u001b[0m in \u001b[0;36mpkdo_2d\u001b[0;34m(order, rs)\u001b[0m\n\u001b[1;32m 152\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 153\u001b[0m \u001b[0mh1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mjacobi\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 154\u001b[0;31m \u001b[0mh2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mjacobi\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 155\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mh1\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mh2\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 156\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/home/andreas/research/software/modepy/modepy/modes.pyc\u001b[0m in \u001b[0;36mjacobi\u001b[0;34m(alpha, beta, n, x)\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[0mh1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m2.\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0malpha\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mbeta\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 93\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 94\u001b[0;31m \u001b[0mfoo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1.\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1.\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0malpha\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mbeta\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1.\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0malpha\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1.\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mbeta\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh1\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1.\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh1\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m3.\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 95\u001b[0m \u001b[0manew\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m2.\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mh1\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m2.\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfoo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
" 0.0411310850196\n"
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"-c:22: OptimizeWarning: Unknown solver options: max_iter\n"
]
}
],
"prompt_number": 51
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"starting_guess = opt_result.x"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fixed_nodes = nodes + opt_result.x.reshape(*nodes.shape)\n",
"pt.plot(fixed_nodes[0], fixed_nodes[1], \"x\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 35,
"text": [
"[<matplotlib.lines.Line2D at 0x3b34050>]"
]
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 35
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment