Created
May 15, 2013 17:59
-
-
Save inducer/5585945 to your computer and use it in GitHub Desktop.
Quadrature playground.ipynb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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