Skip to content

Instantly share code, notes, and snippets.

@DSCF-1224
Last active October 29, 2020 22:06
Show Gist options
  • Save DSCF-1224/8ee4f7bc7b90315632e2c9b0b4b3cbd8 to your computer and use it in GitHub Desktop.
Save DSCF-1224/8ee4f7bc7b90315632e2c9b0b4b3cbd8 to your computer and use it in GitHub Desktop.
sympy のサンプルコード : x * exp(-(x**2+y**2+z**2))の偏微分の評価
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "test_20201030_01.ipynb",
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "code",
"metadata": {
"id": "swa8yuvNSLJi"
},
"source": [
"# modules to import\n",
"import sympy"
],
"execution_count": 1,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "1gha9VzKT7NJ"
},
"source": [
"# declaration of sympy symbols\n",
"x = sympy.symbols('x')\n",
"y = sympy.symbols('y')\n",
"z = sympy.symbols('z')\n",
"r_pow2 = x ** 2 + y ** 2 + z ** 2"
],
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "eivSCHwRUTQ_"
},
"source": [
"# declaration of the objective function\n",
"objective_function = x * sympy.exp(-r_pow2)"
],
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "bC7LOphrT-8H"
},
"source": [
"# evaluation of the objective function of the differential\n",
"pdv1_dx = sympy.diff( objective_function, x, 1 )\n",
"pdv1_dy = sympy.diff( objective_function, y, 1 )\n",
"pdv1_dz = sympy.diff( objective_function, z, 1 )"
],
"execution_count": 4,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "JkMW3DTbWHMh",
"outputId": "b54ab4f7-7bc1-4f14-bc35-ad67a9d76be4",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"print( \"d/dx:\", pdv1_dx )\n",
"print( \"d/dy:\", pdv1_dy )\n",
"print( \"d/dz:\", pdv1_dz )"
],
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"text": [
"d/dx: -2*x**2*exp(-x**2 - y**2 - z**2) + exp(-x**2 - y**2 - z**2)\n",
"d/dy: -2*x*y*exp(-x**2 - y**2 - z**2)\n",
"d/dz: -2*x*z*exp(-x**2 - y**2 - z**2)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "aanjR4hlSxJl"
},
"source": [
"# evaluation of the objective function of the differential\n",
"\n",
"pdv2_dxdx = sympy.diff(pdv1_dx, x)\n",
"pdv2_dydx = sympy.diff(pdv1_dx, y)\n",
"pdv2_dzdx = sympy.diff(pdv1_dx, z)\n",
"\n",
"pdv2_dxdy = sympy.diff(pdv1_dy, x)\n",
"pdv2_dydy = sympy.diff(pdv1_dy, y)\n",
"pdv2_dzdy = sympy.diff(pdv1_dy, z)\n",
"\n",
"pdv2_dxdz = sympy.diff(pdv1_dz, x)\n",
"pdv2_dydz = sympy.diff(pdv1_dz, y)\n",
"pdv2_dzdz = sympy.diff(pdv1_dz, z)"
],
"execution_count": 6,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ropAZb9NVy8w",
"outputId": "8956c90d-0a88-4f3d-9512-103bcc51d64f",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
" print( \"d2/dxdx:\", pdv2_dxdx )\n",
" print( \"d2/dydx:\", pdv2_dydx )\n",
" print( \"d2/dzdx:\", pdv2_dzdx )\n",
" \n",
" print(\"\")\n",
" \n",
" print( \"d2/dxdy:\", pdv2_dxdy )\n",
" print( \"d2/dydy:\", pdv2_dydy )\n",
" print( \"d2/dzdy:\", pdv2_dzdy )\n",
" \n",
" print(\"\")\n",
" \n",
" print( \"d2/dxdz:\", pdv2_dxdz )\n",
" print( \"d2/dydz:\", pdv2_dydz )\n",
" print( \"d2/dzdz:\", pdv2_dzdz )"
],
"execution_count": 7,
"outputs": [
{
"output_type": "stream",
"text": [
"d2/dxdx: 4*x**3*exp(-x**2 - y**2 - z**2) - 6*x*exp(-x**2 - y**2 - z**2)\n",
"d2/dydx: 4*x**2*y*exp(-x**2 - y**2 - z**2) - 2*y*exp(-x**2 - y**2 - z**2)\n",
"d2/dzdx: 4*x**2*z*exp(-x**2 - y**2 - z**2) - 2*z*exp(-x**2 - y**2 - z**2)\n",
"\n",
"d2/dxdy: 4*x**2*y*exp(-x**2 - y**2 - z**2) - 2*y*exp(-x**2 - y**2 - z**2)\n",
"d2/dydy: 4*x*y**2*exp(-x**2 - y**2 - z**2) - 2*x*exp(-x**2 - y**2 - z**2)\n",
"d2/dzdy: 4*x*y*z*exp(-x**2 - y**2 - z**2)\n",
"\n",
"d2/dxdz: 4*x**2*z*exp(-x**2 - y**2 - z**2) - 2*z*exp(-x**2 - y**2 - z**2)\n",
"d2/dydz: 4*x*y*z*exp(-x**2 - y**2 - z**2)\n",
"d2/dzdz: 4*x*z**2*exp(-x**2 - y**2 - z**2) - 2*x*exp(-x**2 - y**2 - z**2)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "1t-xrUDmXAoA",
"outputId": "c771f398-20d4-4def-e572-ae861cfe5e09",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"print( \"d2/dxdy == d2/dydx:\", (pdv2_dydx - pdv2_dxdy) == 0 )\n",
"print( \"d2/dzdy == d2/dydz:\", (pdv2_dzdy - pdv2_dydz) == 0 )\n",
"print( \"d2/dxdz == d2/dzdx:\", (pdv2_dxdz - pdv2_dzdx) == 0 )"
],
"execution_count": 8,
"outputs": [
{
"output_type": "stream",
"text": [
"d2/dxdy == d2/dydx: True\n",
"d2/dzdy == d2/dydz: True\n",
"d2/dxdz == d2/dzdx: True\n"
],
"name": "stdout"
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment