{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### From Poirier's Bohmian Mechanics without Wavefunctions to Hall's Many Interacting Worlds in More Than One Dimension###"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ref:\n",
"\n",
"1. [Quantum Mechanics Without Wavefunctions](http://arxiv.org/abs/1201.2382v1)\n",
" Jeremy Schiff and Bill Poirier\n",
" J. Chem. Phys. 136, 031102 (2012)\n",
"
\n",
"2. [Quantum Phenomena Modeled by Interactions between Many Classical Worlds](http://arxiv.org/abs/1402.6144)\n",
" Michael J. W. Hall Dirk-André Deckert and Howard M. Wiseman,\n",
" PHYSICAL REVIEW X 4, 041013 (23 October 2014)\n",
"
\n",
"3. [Verlet integration (Wikipedia)](https://en.wikipedia.org/wiki/Verlet_integration#Velocity_Verlet)\n",
"\n",
" ![](https://upload.wikimedia.org/math/f/9/a/f9ab172405a2d7acf403b98a329e2595.png)
\n",
" ![](https://upload.wikimedia.org/math/5/a/5/5a5a4cebe21a1d0f356c29475971698a.png)\n",
"
\n",
"4. [Explicit, Time Reversible, Adaptive Step Size Control](http://archive-ouverte.unige.ch/unige:12120)\n",
" Ernst Hairer and Gustaf Söderlind\n",
" SIAM Journal on Scientific Computing. 2005, vol. 26, no. 6, p. 1838-1851"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%display latex"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"(hbar, mu)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from numpy import array,concatenate,isnan\n",
"from mpmath import erfinv\n",
"hbar=var('hbar',latex_name='\\\\hbar')\n",
"mu=var('mu',latex_name='\\mu')\n",
"hbar,mu"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"sin(x)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sin(x)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"2"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"1+1"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[x(n, m), y(n, m)]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"vars = ['x','y']; d = len(vars)\n",
"def argscript(self, *args): return \"%s_{%s}\"%(self.name(),','.join(map(repr, args)))\n",
"X = map(lambda nam:function(nam, print_latex_func=argscript),vars); x,y = X\n",
"n,m = var('n,m'); ind=[n,m]\n",
"# position of particle in world (n,m)\n",
"Enm=map(lambda x:x(*ind),X);show(Enm)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def Dminus(x,i):return(x-x.subs(ind[i]==ind[i]-1))\n",
"def Dplus(x,i):return(x.subs(ind[i]==ind[i]+1)-x)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[-x(n - 1, m) + x(n, m) -x(n, m - 1) + x(n, m)]\n",
"[-y(n - 1, m) + y(n, m) -y(n, m - 1) + y(n, m)]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Jnm = matrix(map(lambda e:[Dminus(e,i) for i in range(d)],Enm));show(Jnm)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
"[ (y(n, m - 1) - y(n, m))/(x(n, m - 1)*y(n - 1, m) - x(n, m)*y(n - 1, m) - x(n - 1, m)*y(n, m - 1) + x(n, m)*y(n, m - 1) + x(n - 1, m)*y(n, m) - x(n, m - 1)*y(n, m)) -(x(n, m - 1) - x(n, m))/(x(n, m - 1)*y(n - 1, m) - x(n, m)*y(n - 1, m) - x(n - 1, m)*y(n, m - 1) + x(n, m)*y(n, m - 1) + x(n - 1, m)*y(n, m) - x(n, m - 1)*y(n, m))]\n",
"[-(y(n - 1, m) - y(n, m))/(x(n, m - 1)*y(n - 1, m) - x(n, m)*y(n - 1, m) - x(n - 1, m)*y(n, m - 1) + x(n, m)*y(n, m - 1) + x(n - 1, m)*y(n, m) - x(n, m - 1)*y(n, m)) (x(n - 1, m) - x(n, m))/(x(n, m - 1)*y(n - 1, m) - x(n, m)*y(n - 1, m) - x(n - 1, m)*y(n, m - 1) + x(n, m)*y(n, m - 1) + x(n - 1, m)*y(n, m) - x(n, m - 1)*y(n, m))]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# inverse Jacobian\n",
"Knm = matrix(map(lambda x: map(lambda y:y.normalize(),x),Jnm^(-1)))\n",
"show(Knm)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# Heading - double click to edit."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Raw Cell Format",
"kernelspec": {
"display_name": "Sage 6.9",
"language": "",
"name": "sage-6.9"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.9"
},
"name": "Use_Sage_in_Jupyter_notebook_on_SageMathCloud.ipynb"
},
"nbformat": 4,
"nbformat_minor": 0
}