{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 付録" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ライブラリの読み込みと関数の定義" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "plt.rcParams['font.family'] ='sans-serif' #使用するフォント\n", "plt.rcParams['xtick.direction'] = 'in' #x軸の目盛線が内向き('in')か外向き('out')か双方向か('inout')\n", "plt.rcParams['ytick.direction'] = 'in' #y軸の目盛線が内向き('in')か外向き('out')か双方向か('inout')\n", "plt.rcParams['xtick.major.width'] = 1.0 #x軸主目盛り線の線幅\n", "plt.rcParams['ytick.major.width'] = 1.0 #y軸主目盛り線の線幅\n", "plt.rcParams['font.size'] = 10 #フォントの大きさ\n", "plt.rcParams['axes.linewidth'] = 1.0 # 軸の線幅edge linewidth。囲みの太さ\n", "plt.rcParams['mathtext.default'] = 'regular'\n", "plt.rcParams['axes.xmargin'] = '0' #'.05'\n", "plt.rcParams['axes.ymargin'] = '0.05'\n", "plt.rcParams['savefig.facecolor'] = 'None'\n", "plt.rcParams['savefig.edgecolor'] = 'None'\n", "\n", "# 時間応答のグラフを整える関数\n", "def plot_set(fig_ax, *args):\n", " fig_ax.set_xlabel(args[0])\n", " fig_ax.set_ylabel(args[1])\n", " fig_ax.grid(ls=':')\n", " if len(args)==3:\n", " fig_ax.legend(loc=args[2])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 非線形シミュレーション" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 非線形モデルの記述と時間応答" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import control as ct\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "アームの運動方程式を記述する" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# アームの非線形モデル\n", "def arm_model(t, states, inputs, params):\n", " g = params.get('g', 9.81)\n", " l = params.get('l', 0.2)\n", " M = params.get('M', 0.5)\n", " mu = params.get('mu', 1.5e-2)\n", " J = params.get('J', 1.0e-2)\n", "\n", " theta, omega = states # 状態変数\n", " tau = inputs[0] # 入力\n", "\n", " # 非線形状態方程式\n", " dtheta_dt = omega\n", " domega_dt = -mu/J*omega - M*g*l/J*np.sin(theta) + (1/J)*tau\n", "\n", " # 線形モデル(原点近傍で近似)\n", " # domega_dt = -mu/J*omega - M*g*l/J*theta + (1/J)*tau\n", "\n", " return np.array([dtheta_dt, domega_dt])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "入出力システムとして定義する" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# 入出力システムの記述\n", "arm_sys = ct.NonlinearIOSystem(\n", " arm_model, None, # 状態方程式と出力方程式を指定\n", " inputs = ('input'), # 入力の名前\n", " outputs = ('theta', 'omega'), # 出力の名前\n", " states = ('theta', 'omega'), # 状態の名前\n", " name='nonlinear_arm') # システムの名前\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "入出力システムの時間応答を求める" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X0 = [np.pi/3, 0] # 初期状態\n", "T = np.arange(0, 5, 0.01) # シミュレーション時間\n", "u = np.zeros_like(T) # 外部入力\n", "# u = 0.7*(T>1)\n", "# u = 0.6*np.sin(10*T)\n", "\n", "# 非線形シミュレーション\n", "t, y = ct.input_output_response(arm_sys, T, u, X0)\n", "\n", "fig, ax = plt.subplots(1,2, figsize=(6, 2.3))\n", "ax[0].plot(t, np.rad2deg(y[0]), c='k') # アームの角度\n", "ax[1].plot(t, y[1], c='k') # アームの角速度\n", "\n", "ax[0].set_xlim([0,5])\n", "ax[1].set_xlim([0,5])\n", "ax[0].set_ylim([-90,90])\n", "ax[0].set_yticks([-90,-60,-30,0,30,60,90])\n", "ax[1].set_ylim([-10,10])\n", "\n", "plot_set(ax[0], 't', 'theta [deg]')\n", "plot_set(ax[1], 't', 'omega [rad/s]')\n", "\n", "fig.tight_layout()\n", "# fig.savefig(\"app_nonlinear_simulation.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 平衡点まわりで線形近似" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 0.])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xeq, ueq = ct.find_eqpt(arm_sys, x0=np.array([np.pi/6,0]), u0=0)\n", "xeq\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "平衡点まわりの線形近似モデルを求める" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ": sys[2]\n", "Inputs (1): ['u[0]']\n", "Outputs (2): ['y[0]', 'y[1]']\n", "States (2): ['x[0]', 'x[1]']\n", "\n", "A = [[ 0. 1. ]\n", " [-98.1 -1.5]]\n", "\n", "B = [[ 0.]\n", " [100.]]\n", "\n", "C = [[1. 0.]\n", " [0. 1.]]\n", "\n", "D = [[0.]\n", " [0.]]\n", "\n" ] } ], "source": [ "# 原点近傍で線形化\n", "lin_arm= ct.linearize(arm_sys, np.array([0,0]), 0)\n", "print(lin_arm)\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# x=(pi/4,0)近傍で線形化\n", "# g = 9.81\n", "# l = 0.2\n", "# M = 0.5\n", "# lin_arm= ct.linearize(arm_sys, np.array([np.pi/4,0]), M*g*l/np.sqrt(2))\n", "# print(lin_arm)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "非線形モデルと線形モデルの違いをシミュレーションで確認する" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from control.matlab import lsim\n", "X0 = [4*np.pi/3, 0] # 初期状態\n", "T = np.linspace(0, 5, 500) # シミュレーション時間\n", "u = np.zeros_like(T) # 外部入力\n", "\n", "# 非線形シミュレーション\n", "t, y = ct.input_output_response(arm_sys, T, u, X0)\n", "# 線形シミュレーション\n", "yl, tl, _ = lsim(lin_arm, u, T, X0)\n", "\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "ax.plot(t, np.rad2deg(y[0]), label='Nonlinear model')\n", "ax.plot(tl, np.rad2deg(yl[:,0]), label='Linear model', ls='-.')\n", "\n", "ax.set_xlim([0,5])\n", "ax.set_xticks([0, 1, 2, 3, 4, 5])\n", "ax.set_ylim([-360,480])\n", "ax.set_yticks([-360,-180,0,180,360])\n", "plot_set(ax, 't', 'theta [deg]', 'best')\n", "\n", "# fig.savefig(\"app_nonlinear_vs_linear.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "倒立状態を経由して初期状態に設定し,手を離したときに応答を見ています。\n", "\n", "非線形シミュレーションでは,そのまま落下して,垂れ下がった状態(360度)になりますが,線形シュミレーションでは一度倒立状態を経由してから垂れ下がった状態(0度)になります。非線形シミュレーションの方が適切な運動になっていることがわかります。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### フィードバック制御系の構築(PD制御)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "PD制御器を記述します" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def arm_controller(t, states, inputs, params):\n", " Kp = params.get('Kp', 5.0)\n", " Kd = params.get('Kd', 0.1)\n", " theta, omega, theta_ref = inputs\n", " # 制御則\n", " u = Kp * (theta_ref - theta) - Kd * omega\n", " return np.array(u)\n", "\n", "io_controller = ct.NonlinearIOSystem(\n", " None, arm_controller,\n", " inputs = ('theta', 'omega', 'ref'),\n", " outputs = ('control_input'), name='controller')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "制御対象と制御器のフィードバック結合を求めます" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "closed_loop_sys = ct.interconnect(\n", " [arm_sys, io_controller], # 二つのシステムを結合\n", " connections=[ # 信号の接続\n", " ['nonlinear_arm.input', 'controller.control_input'],\n", " ['controller.theta', 'nonlinear_arm.theta'],\n", " ['controller.omega', 'nonlinear_arm.omega']\n", " ],\n", " inplist=['controller.ref'], #結合系の入力\n", " outlist=['nonlinear_arm.theta', 'nonlinear_arm.omega', 'controller.control_input'] # 結合系の出力\n", ")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "比較のために,線形モデルと制御器から構成されるフィードバック制御系を求めておきます" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# アームの線形微分方程式\n", "def arm_linear_model(t, states, inputs, params):\n", " g = params.get('g', 9.81)\n", " l = params.get('l', 0.2)\n", " M = params.get('M', 0.5)\n", " mu = params.get('mu', 1.5e-2)\n", " J = params.get('J', 1.0e-2)\n", "\n", " # Map the states into local variable names\n", " theta, omega = states\n", " tau = inputs[0]\n", "\n", " dtheta_dt = omega\n", " # 線形モデル(原点近傍で近似)\n", " domega_dt = -mu/J*omega - M*g*l/J*theta + (1/J)*tau\n", "\n", " return np.array([dtheta_dt, domega_dt])\n", "\n", "# IOシステムの記述\n", "arm_linear_sys = ct.NonlinearIOSystem(\n", " arm_linear_model, None,\n", " inputs=('input'), outputs=('theta', 'omega'),\n", " states=('theta', 'omega'), name='linear_arm')\n", "\n", "closed_loop_sys_linear = ct.interconnect(\n", " [arm_linear_sys, io_controller], # systems\n", " connections=[\n", " ['linear_arm.input', 'controller.control_input'],\n", " ['controller.theta', 'linear_arm.theta'],\n", " ['controller.omega', 'linear_arm.omega']\n", " ],\n", " inplist=['controller.ref'],\n", " outlist=['linear_arm.theta', 'linear_arm.omega', 'controller.control_input']\n", ")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "目標値追従性のシミュレーションをします。\n", "\n", "目標値が90度のときは,非線形モデルと線形モデルの応答に差があまりないですが,目標値が180度のときは差が出ています。\n", "これは,モデル化誤差の影響です(sinθ≒θとしているため)。\n", "\n", "倒立状態(180度)において,非線形モデルで定常偏差が小さいのは,重力の影響を受けないためです。" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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V199lfj4ePLy8sjLy2P27Nm1Xvfyyy+noKCAFStWsGTJErKzs5k0aZLfcdnZ2Xz77bf88MMP/PDDD6xYsYLnnnuuTr3VbeuJNJkMqiMV4XaaPAPEw4nL5eLAgQNCRCFAjGiJVhHCdj4aHQL8qItWf3ydJodN+xNsRLOv3j1XT4I1mMXupPtji0KspiZ/PDGeaLP69djtdsxmc8BjjUYj8+bN4+abb+add96hf//+jBo1imuvvZbevXsHPG/27NnevBr33HMPkydPZunSpZx77rkATJ8+nXnz5p3RffhGpjIzM3nyySf529/+xltvvYXZbCYhIQFJkursPvz555/ZunUrOTk5tG3bFoBPP/2UHj16kJWVxaBBgwD1O503bx5xcXEAXH/99SxdupSnn3464LWr29bhdHfPucPLVZGm8DcEnjEDrVu3/lOHv3UEsZ3Pw4ZLkO4jkeqP30B7m/YjeaLZV++eqyeihBAlSSI2Nva0s+euuuoqjh49yoIFCxg/fjzLly+nf//+dTo9vg5VamoqAL169fLbl5+fXy+t1bvnli1bxtixY2ndujVxcXHccMMNnDp1ivLy4J9Md+7cSdu2bb0OE0D37t1JTExk586d3n0ZGRlehwmgVatWdeqvzbYOd0UyajDSZDQaGTZsmDBlVxSdWkQE27l8BoIrAizzIVr98Y00uQSINIlm34bqDOqsBQsW1PvCY8eOJSoq6vQHholgU71HmQz88UTTZzn15AjydCFFRESc1nGKjIxk7NixjB07lscee4y//vWvzJkzxzvmqDq+A6A9166+z9cbl2W5Rjeh3W73blfvnjtw4AATJkzgtttu48knnyQpKYnVq1czffp0v/NOh6Iotd579f3VB8tX11/b+b62dfkktjTK/k6TFiJNTqeTnJwcMjMzMRi0nh+44auI6whiO99Ik037kSbR6o/kk3JAsev2bWwaWseCcpouv/zyel1UkiT27t1L+/btG6KpSQh2lpckSd5usnDR0C+3e/fujZqbKTk5mby8PO/fTqeT7du3M2bMmFqP37BhAw6Hg5deeskbrv3yyy/9jjGbzae9v+7du3Pw4EEOHTrkjTb98ccfFBcX061btzO5Jb/P9oxnkiTJu4SB2ahWfpvDFdB5ayoURaGwsJCMjIywaagPWkjTICoi2M539hwCREJEqz++TikO7Swc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WbZsGa+++ir/+Mc/+Ne//oXT6eTDDz8kOjqaHj16cPjwYf72t795r/H555/TtWtXHn30USJjEzAlOfnwpTm0HXQRe/bto3O8u6vRPfU3JsKIySBjd7o4UqQuUNosxkRxedOM35JlmQ4dOvzpn+RCwbJly8ItoV5oyXYBcflnx7dVattpEq3+VI80KXYLtbY0x7bBZ1dBbArc+JO6/FMYEM2+DdXZoDxNY8aMoXv37lRWVnLdddexd+9eWrRoweeff94gEeFAlC9WkqQaXaGNgW/Up1WrVoAaeenatSsbN25k3759/Otf//IeoygKLpeLnJwcunXrxubNm5k7dy5btmyhoKDAO6Px2LFjJCUlec8bOHBgvfV4sjb36tXLb19+vprjqKSkhKNHj3odKg/nnnsuv//+OwA7d+6kT58+fnmchg4d6nf8jh072LBhQ9X4Ep9lC7Kzs+k80J0I0d0NIUkSKfERHClUHaYIo4GEKCPFNA2eMQOiIEod0yJC2K5aJMRh1X73nFD1B3+n1GGtoNYRo6tfgbLj6mvTxzD0jibRVx3h7NtUTlNaWhpbtmzh888/Z9OmTbhcLqZPn86UKVOESqEedGjOFK1GfZoak/pj7+me803K2CiX953a6rP0ief/W2+9tdaEf+3ataO8vJxx48Yxbtw4PvvsM5KTkzl48CDjx493L8lR1Zj6Jpysr57q+1zVnmyr26P6ki6nw+VyMWLECJ5//nmMEVHElWarbyR3o1Xr1mBzj6HySTLXPCYCgyRhdbhIijHjtNtquXJo8IS/R44c+aeendKY+EZEAyFJEh988EETqAkeLdjudPgu2Atgq7SESUlwiFZ/qmOrrMVpcrlgr886q7v/FzanSTT7Nln3HKgZmW+66aagGiStErSXKUnebrJw0dTOaP/+/dmxY0fAnEDbtm3j5MmTPPfcc95B955FlJtill58fDxpaWmsXr2akSNHevevWbOGwYMHA9C9e3c+/fRTLBaL135r1671u0737t356aefSE9PxxwZRWKZHScyhjT3uopO9xIm1X4cEqOrIn9Om+I3WDyUyLJMz549xYhCoI1oSWFhYcD3nE4nP//8M1arVXNOkxZsd1qqR5ps2u+eE6n+VJ8957DW4pQWHQCrT6z7yCbVkQrDPYpm35BGmhYsWBD0BS+77LIGCWlqRPlifRN81UVx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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X0 = [0, 0] # 初期状態\n", "r = np.pi/2*(T>1) + np.pi/2*(T>3) # 目標角度\n", "\n", "tnl, ynl = ct.input_output_response(closed_loop_sys, T, r, X0)\n", "tl, yl = ct.input_output_response(closed_loop_sys_linear, T, r, X0)\n", "\n", "fig, ax = plt.subplots(1,2, figsize=(6, 2.3))\n", "ax[0].plot(T, np.rad2deg(r), label='Reference', ls='--', c='k') # 目標角度\n", "ax[0].plot(tnl, np.rad2deg(ynl[0]), label='Simulation') # アームの角度\n", "ax[0].plot(tl, np.rad2deg(yl[0]), label='Linear model') # アームの角度(線形モデル)\n", "ax[1].plot(tnl, ynl[2]) # トルク\n", "ax[1].plot(tnl, yl[2]) # トルク(線形モデル)\n", "\n", "ax[0].set_ylim([-1,270])\n", "ax[0].set_yticks([0, 90, 180, 270])\n", "ax[1].set_ylim([-5,10])\n", "\n", "plot_set(ax[0], 't', 'theta [deg]', 'best')\n", "plot_set(ax[1], 't', 'input [Nm]')\n", "\n", "fig.tight_layout()\n", "# fig.savefig(\"app_control_nonlinear_arm.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### おまけ\n", "feedback関数を使う方法。ただし,refを設定できない" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def arm_controller(t, states, inputs, params):\n", " Kp = params.get('Kp', 5.0)\n", " Kd = params.get('Kd', 0.1)\n", " theta_ref = params.get('theta_ref', np.deg2rad(180))\n", " theta, omega = inputs\n", " # 制御則\n", " u = Kp * (theta_ref - theta) - Kd * omega\n", " return np.array(u)\n", "\n", "io_controller = ct.NonlinearIOSystem(\n", " None,\n", " arm_controller,\n", " inputs=('theta', 'omega'), outputs=('control_input'), name='controller')\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X0 = [0, 0]\n", "T = np.linspace(0, 5, 500)\n", "\n", "# Simulate the system\n", "\n", "closed_loop_sys = arm_sys.feedback(io_controller, sign=1)\n", "t, y = ct.input_output_response(closed_loop_sys, T, 0, X0)\n", "\n", "# Plot the response\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "ax.plot(t, np.rad2deg(y[0]))\n", "\n", "plot_set(ax, 't', 'theta')\n", "\n", "fig.tight_layout()\n", "#fig.savefig(\"res_ss_sin.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "PD制御器の書き方を変える。偏差r-yをinterconnect関数の中で記述する" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def arm_controller2(t, states, inputs, params):\n", " Kp = params.get('Kp', 5.0)\n", " Kd = params.get('Kd', 0.1)\n", " error, omega = inputs\n", " # u = Kp * (theta_ref - theta) - Kd * omega\n", " u = Kp * error - Kd * omega\n", " return np.array(u)\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "io_controller2 = ct.NonlinearIOSystem(\n", " None,\n", " arm_controller2,\n", " inputs=('error', 'omega'), outputs=('control_input'), name='controller')\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "closed_loop_sys2 = ct.interconnect(\n", " [arm_sys, io_controller2], # systems\n", " connections=[\n", " ['nonlinear_arm.input', 'controller.control_input'],\n", " ['controller.error', '-nonlinear_arm.theta'], #error に -theta を加える\n", " ['controller.omega', 'nonlinear_arm.omega']\n", " ],\n", " inplist=['controller.error'],\n", " outlist=['nonlinear_arm.theta', 'nonlinear_arm.omega', 'controller.control_input']\n", ")\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Simulate the system\n", "X0 = [0, 0]\n", "u = 1*(T>1)\n", "tnl, ynl = ct.input_output_response(closed_loop_sys2, T, u, X0)\n", "\n", "# Plot the response\n", "fig, ax = plt.subplots(1,2, figsize=(6, 2.3))\n", "ax[0].plot(tnl, np.rad2deg(ynl[0]), label='Nonlinear model')\n", "ax[0].plot(T, np.rad2deg(u))\n", "ax[1].plot(tnl, ynl[2])\n", "\n", "plot_set(ax[0], 't', 'theta', 'best')\n", "plot_set(ax[1], 't', 'input')\n", "\n", "fig.tight_layout()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "bookpython", "language": "python", "name": "python3" }, "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.11.3" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }