Skip to content

Instantly share code, notes, and snippets.

@asford
Last active August 21, 2018 01:41
Show Gist options
  • Save asford/e1c3ad9868d023f5a74f6814bbc444ea to your computer and use it in GitHub Desktop.
Save asford/e1c3ad9868d023f5a74f6814bbc444ea to your computer and use it in GitHub Desktop.
Futzing about with "symbolic function invocation" via sympy.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"import sympy"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"import sympy.parsing.sympy_parser as sympy_parser"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"import inspect"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"s = inspect.signature(foo)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
"def sympy_invoke(f):\n",
" \"\"\"Invoke function f with symbolic parameters.\"\"\"\n",
" fsig = inspect.signature(f)\n",
" pnames = tuple(fsig.parameters)\n",
" symbols = dict(zip(pnames, sympy.symbols(pnames)))\n",
" return f(**symbols)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"def lj(r, r_m, eps):\n",
" d = r_m / r\n",
" return eps * (d ** 12 - 2 * d ** 6)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"p = sympy_invoke(lj)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"eps*(12*r_m**6/r**7 - 12*r_m**12/r**13)"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p.diff(sympy.symbols(\"r\"))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:tmol]",
"language": "python",
"name": "conda-env-tmol-py"
},
"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.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment