{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Pythonで学ぶ制御工学 Part1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 今日の目標\n", "* Pythonの作法を知る\n", "* ステップ応答を可視化\n", "* 周波数応答を可視化" ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 142, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from control.matlab import *\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "K = 1\n", "T = (1, 0.5, 0.1)\n", "for i in range(len(T)):\n", " y, t = step(tf([0, K], [T[i], 1]), np.arange(0, 5, 0.01))\n", " ax.plot(t, y, label='T='+str(T[i]))\n", "\n", "ax.set_xticks(np.linspace(0, 5, 6))\n", "ax.set_yticks(np.linspace(0, 1, 6))\n", "ax.grid(ls=':')\n", "ax.legend()" ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(2,1,figsize=(4,3.5))\n", "\n", "for i in range(len(T)):\n", " P = tf([0, K],[T[i], 1])\n", " gain, phase, w = bode(P, logspace(-2,2), Plot=False)\n", " ax[0].semilogx(w, 20*np.log10(gain), label='T='+str(T[i]))\n", " ax[1].semilogx(w, phase*180/np.pi, label='T='+str(T[i]))\n", " \n", "ax[0].grid(which='both', ls=':')\n", "ax[0].set_ylabel('Gain [dB]')\n", "ax[1].legend()\n", "ax[1].grid(which='both', ls=':')\n", "ax[1].set_ylabel('Phase [deg]')\n", "ax[1].set_xlabel('$\\omega$ [rad/s]')\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Pythonの基礎" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Enter で改行\n", "* Shift + Enter で実行\n", "* Tab で補完\n", "* Shift + Tab でコマンドのヘルプ,「?」でも同じ" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# コメントは「#」を文頭につける" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Control\n" ] } ], "source": [ "print('Control')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "制御工学\n" ] } ], "source": [ "print('制御' + '工学')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len('せいぎょこうがく')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4527887728" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id('Control')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 数値" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "12" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "12" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.22" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3.22" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1+3j)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 + 3j" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0b1010" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "161" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0xA1" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "10 / 5" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "17 // 5" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "17 % 5" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3 ** 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 変数と型" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "\n" ] } ], "source": [ "x = 1\n", "print(x)\n", "print(type(x))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.0\n", "\n" ] } ], "source": [ "y = 1.0\n", "print(y)\n", "print(type(y))" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1+3j)\n", "\n" ] } ], "source": [ "z = 1 + 3j\n", "print(z)\n", "print(type(z))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Control\n", "\n" ] } ], "source": [ "msg = 'Control'\n", "print(msg)\n", "print(type(msg))" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "\n" ] } ], "source": [ "ok = True\n", "print(ok)\n", "print(type(ok))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "変数は箱ではなく.名札のイメージ" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4453823616" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = 1\n", "id(x)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4453823680" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = 3\n", "id(x)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4453823616" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = 1\n", "id(y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "x と y が同じアドレス.つまり,このアドレスは1に対応している." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### リスト" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[3, 5, 2, 4, 6, 1]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = [3, 5, 2, 4, 6, 1]\n", "data" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[0]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[-1]" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[99, 5, 2, 4, 6, 1, 8, 10, 10]" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[0] = 99\n", "data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "スライス" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[99, 5]" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[0:2]" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2, 4]" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[2:4]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "メソッド" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[3, 5, 2, 4, 6, 1, 8]\n" ] } ], "source": [ "data = [3, 5, 2, 4, 6, 1]\n", "data.append(8)\n", "print(data)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[8, 3, 5, 2, 4, 6, 1, 8]\n" ] } ], "source": [ "data.insert(0, 8)\n", "print(data)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[3, 5, 2, 4, 6, 1, 8]\n" ] } ], "source": [ "data.pop(0)\n", "print(data)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[3, 5, 2, 4, 6, 1, 8, 10, 10]\n" ] } ], "source": [ "data.extend( [10, 10] )\n", "print(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "他にもいろいろあります.data. とタイプしてからTabキーを押してみてください" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "浅いコピー深いコピー" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[10, 2, 3]\n", "[10, 2, 3]\n", "4524290768 4524290768\n" ] } ], "source": [ "x = [ 1, 2, 3]\n", "y = x\n", "y[0] = 10\n", "print(y) # [10, 2, 3]と出力される \n", "print(x) # xの値も[10, 2, 3]に変更される\n", "print(id(x),id(y))" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[10, 2, 3]\n", "[1, 2, 3]\n", "4524210848 4523388592\n" ] } ], "source": [ "x = [ 1, 2, 3]\n", "y = x.copy()\n", "y[0] = 10\n", "print(y) # [10, 2, 3]と出力される\n", "print(x) # xの値は変更されずに[1, 2, 3]と出力される\n", "print(id(x),id(y))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### タプル" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "k = (1, 2, 3)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "k[0]" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "'tuple' object does not support item assignment", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mk\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[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" ] } ], "source": [ "k[0] = 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "リストのように書き換えができません.また,メソッドもリストに比べると少ないです." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### if文" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x is positive\n" ] } ], "source": [ "x = 1\n", "\n", "if x < 0:\n", " print('x is negative')\n", "elif x == 0:\n", " print('x is zero')\n", "else:\n", " print('x is positive')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### for文" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n" ] } ], "source": [ "for x in [0, 1, 2]: \n", " print(x)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n" ] } ], "source": [ "for x in range(0, 3): \n", " print(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 関数定義" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "def say_hello(): \n", " print('こんにちは')" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "こんにちは\n" ] } ], "source": [ "say_hello()" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "def subject(name): \n", " print(name + '工学')" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "制御工学\n" ] } ], "source": [ "subject('制御')" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "def add(a, b): \n", " c = a + b\n", " return c" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8\n" ] } ], "source": [ "result = add(3, 5)\n", "print(result)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ライブラリ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Numpy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "関数・定数" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-1.0" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.cos(np.pi)" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.log(np.e)" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-3.0102999566398125" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "20 * np.log10(1/np.sqrt(2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "配列の作成" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 1 2 3 4 5 6 7 8 9]\n" ] } ], "source": [ "T = np.arange(0, 10, 1)\n", "print(T)" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 2, 4, 6, 8])" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "T[0::2] # 偶数番号" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 3, 5, 7, 9])" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "T[1::2] # 奇数番号" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "T[::-1] # 反転" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "行列・ベクトル" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1 2]\n", " [-3 4]]\n" ] } ], "source": [ "A = np.array([ [1, 2], [-3, 4]])\n", "print(A)" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A[0, 0]" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1, -3])" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A[:, 0]" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 2])" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A[0, :]" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1 -3]\n", " [ 2 4]]\n" ] } ], "source": [ "print(A.T) #転置" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10.000000000000002" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linalg.det(A) #行列式" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linalg.matrix_rank(A) #ランク" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "eigenvalue= [2.5+1.93649167j 2.5-1.93649167j]\n", "eigenvector=\n", " [[0.38729833-0.5j 0.38729833+0.5j]\n", " [0.77459667+0.j 0.77459667-0.j ]]\n" ] } ], "source": [ "w, v = np.linalg.eig(A)\n", "print('eigenvalue=',w)\n", "print('eigenvector=\\n',v)" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 0.4 -0.2]\n", " [ 0.3 0.1]]\n" ] } ], "source": [ "C = np.linalg.inv(A) # 逆行列\n", "print(C)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Matplotlib" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEGCAYAAABLgMOSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd3yUVdr/8c+VQhUEDIQuUToWIAhISwiJdAKCK1ZcC9Z19/H3sMraXdnF1V19nl07urKioiAlSCQJIRNQRAFBihHpRUqABARRQpLz+yMzPDEkJJnMzLknud6v17wy5S7fO3OSa+acu4gxBqWUUqqyQmwHUEopFZy0gCillPKKFhCllFJe0QKilFLKK1pAlFJKeSXMdoBAioiIMO3atfNq3p9++on69ev7NlCABfs2BHt+0G1wimDfhkDnX7t27RFjTNOSz9eoAtKuXTvWrFnj1bwul4vY2FjfBgqwYN+GYM8Pug1OEezbEOj8IrK7tOe1C0sppZRXtIAopZTyihYQpZRSXtECopRSyitaQJRSSnnFagERkbdFJFtENpXxuojI/4rINhHZICI9i702SUS2um+TApdaKaUU2P8G8g4w7DyvDwc6uG+TgVcBRKQJ8CTQB+gNPCkijf2aVCml1K9YPQ7EGLNcRNqdZ5JE4D+m6Jzzq0SkkYi0AGKBNGNMDoCIpFFUiD7wb2JnyM/PJyMjg71795KdnU1kZCSjR48mIiLCdjRVTRQWFpKRkcF3331Hfn4+derUITExkebNm9uOphzE6QcStgL2Fnu8z/1cWc+fQ0QmU/TthcjISFwul1dBTp486fW8vpKfn09aWhrvvfceP/zww69eCwkJoUePHtx///1ERUWVOr8TtqEqgj0/OH8b8vPzSUpKYsGCBezdu/dXr913333069eP8ePHW0rnO05/H8rjmPzGGKs3oB2wqYzXFgMDij1OB6KBKcBjxZ5/HPh/5a0rOjraeCsjI8PreX3hyJEjpl+/fgYwPXr0MHPmzDG7du0yP/30k/n666/NY489Zpo1a2bq1KljXnnlFVNYWHjOMmxvQ1UFe35jnL0NR44cMXFxcQYwV199tZk1a5Y5cOCAOXr0qNm8ebP54x//aJo2bWrCw8PNjBkzbMetEie/DxUR6PzAGlPK/1TbYyDl2Qe0Kfa4NbD/PM9XSzt37qR///6sXbuWWbNmsXbtWiZMmMDFF19MvXr16NGjB3/+85/ZsGEDMTEx3Hfffdx1112e4qpUubKysujTpw+fffYZM2fOZOXKldx00000b96cJk2a0LVrV5577jmysrK48sorufPOO7n33nspLCy0HV1Z5PQCkgTc6t4bqy9w3BhzAEgBrhGRxu7B82vcz1U7+/bto3///hw6dIi0tDRuuukmRKTUaSMjI0lOTmbq1Km89dZbPP744wFOq4LRgQMHSEhI4OTJk2RmZnLrrbeWOe1FF13E9OnTmTJlCq+99pq2sRrO6hiIiHxA0YB4hIjso2jPqnAAY8xrQDIwAtgGnAJ+634tR0T+DKx2L+oZ4x5Qr05Onz7NhAkTOHHiBCtXruTyyy8vd56QkBCmTZvGkSNHmDZtGq1ateLee+8NQFoVjH755RfGjRtHbm4un3/+Od27dy93ntDQUJ577jmOHz/OX/7yFzp27MikSbonfU1key+sG8p53QD3l/Ha28Db/sjlFA899BBffvklc+bMqVDx8BARXnnlFQ4ePMgDDzxAz5496dOnjx+TqmBkjOHuu+/myy+/5OOPP65Q8fAQEf71r3+xfft27rrrLjp06EC/fv38mFY5kdO7sGqs2bNn88orr/Df//3fTJgwodLzh4WFMWvWLFq1asVvf/tbfvnlFz+kVMFs7ty5/Oc//+HJJ5/k2muvrfT84eHhzJkzh9atW2sbq6G0gDjQsWPH+P3vf89VV13FX//6V6+X07BhQ958802ysrJ46qmnfBdQBb3jx4/z4IMP0rNnTx577DGvl9O4cWNef/11vv/+e6ZNm+bDhCoYaAFxoCeeeILDhw/z6quvEhZWtV7GoUOHcuedd/L888+TlZXlo4Qq2E2dOpXs7GzeeOONKrexhIQEJk2axPTp09m4caOPEqpgoAXEYdavX8/LL7/MvffeS3R0tE+W+cILLxAZGcnLL7+su/YqVq1axWuvvcaDDz7oszb297//ncaNGzN58mRtYzWIFhAHMcbwwAMPcNFFF/Hss8/6bLkXXnghTz75JJs3b2bRokU+W64KPsYYpkyZQosWLXjmmWd8tlzP7r2rVq1i4cKFPluucjYtIA6SkpLC559/zrPPPkvjxr49N+Ttt99O69at+dOf/kRBQYFPl62CR1paGp999hmPPfYYDRo08Omyb731Vjp27Mjjjz+uBxjWEFpAHMIYw9NPP03btm257bbbfL788PBw7rjjDjZv3sysWbN8vnzlfMYYHn/8cdq2bcvtt9/u8+WHhYXx9NNPs2nTJj766COfL185jxYQh0hLS2PVqlX86U9/olatWn5ZR0xMDL169eLJJ5/kzJkzflmHcq7k5GS++uorHn/8cWrXru2XdfzmN7/h8ssv58knnyQ/P98v61DOoQXEATzfPlq3bu2Xbx8eIsITTzzB7t27mTt3rt/Wo5zHGMOTTz7JJZdc4tejxkNCQvjzn//M999/z+zZs/22HuUMWkAcICMjg5UrVzJ16lS/fTL0GDlyJJ06deLvf/+77i1Tg2RmZrJ27VqmTp1KeHi4X9c1ZswYunTpwosvvqhtrJrTAuIA//M//0PTpk390i9dUkhICP/1X//F2rVrWb58ud/Xp5zhpZde4qKLLuKmm27y+7pEhN///vd8/fXXfPbZZ35fn7JHC4hlu3btYtGiRUyePJk6deoEZJ233norERER/P3vfw/I+pRdO3bsICkpibvvvpu6desGZJ233HILTZo04aWXXgrI+pQdWkAse/XVVwkJCeHuu+8O2Drr1q3L/fffz6JFi9iyZUvA1qvs+Ne//kVoaCj33XdfwNZZr1497r77bhYsWMDOnTsDtl4VWFpALPr555+ZMWMGY8eOpU2bNuXP4EP33Xcf4eHhvPbaawFdrwqsEydO8NZbbzFhwgRatSr1qs9+c//99xMSEsL//u//BnS9KnC0gFj0wQcfkJOTw+9+97uAr7tZs2aMHTuW//znP5w+fTrg61eBMWvWLH788Ud+//vfB3zdrVq1Yvz48cycOVPP1FtNaQGx6JVXXuGyyy5j0KBBVtZ/1113kZOTw/z5862sX/nf22+/zRVXXGHtejB33nknubm5enqTaspqARGRYSKyRUS2icgjpbz+ooisd9++F5FjxV4rKPZaUmCTV93GjRtZu3Ytd911V5mXqPW3IUOG0K5dO958800r61f+tXHjRtasWcPtt99urY3FxcVx8cUX89Zbb1lZv/IvawVEREKBl4HhQFfgBhHpWnwaY8x/GWO6G2O6A/8E5hV7+WfPa8aYMQEL7iMzZ84kLCyMG24470UZ/SokJIQ77riDZcuWsX37dms5lH/8+9//Jjw8PCC77pYlJCSE3/72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i/2yDmMMTz/9NJGRkUyaNKn8GRxGC4gKWrfeeitdu3bl4YcfJi8vz+fLT01NxeVyMWXKFGrXru3z5Svnu+mmm7j00kt5+OGH/TLelpSURGZmJk888QR16tTx+fL9TQuIClphYWH87W9/Y9u2bT4/Ov3MmTP84Q9/oH379tx7770+XbYKHuHh4bzwwgt8++23vPHGGz5ddl5eHlOmTKFz585Bcd6r0mgBUUFtxIgRDB48mKefftqnV5N7+eWXycrK4h//+Id++6jhEhMTGTx4ME888QS5ubk+W+5rr73G1q1beeGFF4Ju7MNDC4gKaiLCCy+8wNGjR3nsscd8sszDhw/z1FNPMXToUEaNGuWTZargJSK8+OKL5OTk8PTTT/tkmYcPH+bpp58mPj6eESNG+GSZNmgBUUGvZ8+ePPjgg/zrX/8iLS2tSssyxvC73/2On376iRdffDGo9slX/nPllVcyefJk/vnPf7J8+fIqLcsYwx133MFPP/3ESy+9FNRtTAuIqhamT59O586due2228jJyfF6OTNmzODDDz/k6aefpkuXLj5MqILd888/zyWXXMJNN91UpTb2+uuvs2jRIp577jm6devmw4SBpwVEVQt169Zl1qxZZGdnc88993h1QaCNGzfy4IMPkpCQwCOPPOKHlCqYNWjQgNmzZ3Po0KGzJ/WsrKysLB566CGuueYafve73/khZWBpAVHVRnR0NNOmTWPOnDk89NBDlfoDP3DgABMmTKBRo0a8++67hITon4Y6V3R0NNOnT2f+/Pk8/vjjlWpje/bsYfjw4dSvX5933nmnWrSx4Bz6V6oMU6ZM4cCBA7z00ks0aNCAP//5z+XOs2fPHoYMGcKBAwdYsmQJkZGRAUiqgtUf/vAHsrKymDZtGoWFhUybNq3ccYx9+/YxePBgjh8/Tnp6erW5JICVEigi14nIZhEpFJFe55lumIhsEZFtIvJIseejRORLEdkqIh+KSK3AJFdOJyL84x//4M477+TZZ5/ltttuO++ul1999RUDBw7k8OHDLF26lAEDBgQwrQpGISEhvP7669xzzz389a9/5Z577jnvLuQul4tBgwZx5MgRUlJS6NmzZwDT+pet71CbgGuBMndnEJFQ4GVgONAVuEFEurpffg540RjTAcgF7vBvXBVMRITXXnuNRx99lFmzZtG1a1fefPPNs1eY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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "x = np.arange(0, 4 * np.pi, 0.1)\n", "y = np.sin(x)\n", "plt.plot(x, y, c='k')\n", "plt.xlabel('x')\n", "plt.ylabel('y')\n", "plt.grid()" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "ax.plot(x, y, c='k')\n", "ax.set_xlabel('x')\n", "ax.set_ylabel('y')\n", "\n", "ax.set_xticks(np.linspace(0, 12, 7))\n", "ax.set_yticks(np.linspace(-1, 1, 9))\n", "\n", "ax.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "線種や線の太さ,カラーなどの設定については,plt.plot? を実行して確認してください.\n", "\n", "また,plt.plot とタイプしてから Shift+Tab でも確認できます" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plt.plot" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(2,1, figsize=(6, 4))\n", "\n", "x = np.arange(0, 4 * np.pi, 0.1)\n", "y = np.sin(x)\n", "z = np.cos(x)\n", "w = y + z\n", "\n", "ax[0].plot(x, y, ls='-', label='sin', c='k')\n", "ax[0].plot(x, z, ls='-.', label='cos', c='k')\n", "ax[0].set_xlabel('x')\n", "ax[0].set_ylabel('y, z')\n", "ax[0].set_xlim(0, 4*np.pi)\n", "ax[0].grid()\n", "ax[0].legend()\n", "\n", "ax[1].plot(x, w, color='k', marker='.')\n", "ax[1].set_xlabel('x')\n", "ax[1].set_ylabel('w')\n", "ax[1].set_xlim(0, 4*np.pi)\n", "ax[1].grid(ls=':')\n", "\n", "fig.tight_layout()\n", "# fig.savefig(\"matplot_plotexp2.pdf\", transparent=True, bbox_inches=\"tight\", pad_inches=0.0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 制御工学の基礎\n", "### ステップ応答の可視化" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [], "source": [ "from control.matlab import *" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [], "source": [ "P = tf( [0, 1], [0.5, 1])\n", "y, t = step(P, np.arange(0, 5, 0.01))" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3, 2.3))\n", "ax.plot(t, y, lw=2)\n", "ax.set_xticks(np.linspace(0, 5, 6))\n", "ax.set_xlabel('t')\n", "ax.set_ylabel('y')\n", "ax.grid(ls=':')" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$\\frac{1}{0.5 s + 1}$$" ], "text/plain": [ "\n", " 1\n", "---------\n", "0.5 s + 1" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P = tf( [0 ,1], [0.5, 1])\n", "P" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$\\frac{1}{10 s + 1}$$" ], "text/plain": [ "\n", " 1\n", "--------\n", "10 s + 1" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = tf('s')\n", "P1 = 1/(10*s + 1)\n", "P1" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$\\frac{1}{s^3 + 22 s^2 + 140 s + 200}$$" ], "text/plain": [ "\n", " 1\n", "--------------------------\n", "s^3 + 22 s^2 + 140 s + 200" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P2 = 1/((s+2)*(s+10)**2)\n", "P2" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'RiseTime': 1.093093093093093,\n", " 'SettlingTime': 1.9374374374374375,\n", " 'SettlingMin': 0.8995704003856553,\n", " 'SettlingMax': 0.9990881180344776,\n", " 'Overshoot': 0.0,\n", " 'Undershoot': 0.0,\n", " 'Peak': 0.9990881180344776,\n", " 'PeakTime': 3.5,\n", " 'SteadyStateValue': 0.9990881180344776}" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stepinfo(P)" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'RiseTime': 1.163163163163162,\n", " 'SettlingTime': 2.147647647647646,\n", " 'SettlingMin': 0.00449543526409081,\n", " 'SettlingMax': 0.004992875922144357,\n", " 'Overshoot': 0.0,\n", " 'Undershoot': 0.0,\n", " 'Peak': 0.004992875922144357,\n", " 'PeakTime': 3.499999999999997,\n", " 'SteadyStateValue': 0.004992875922144357}" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stepinfo(P2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 周波数特性の可視化(ボード線図)" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$\\frac{1}{0.5 s + 1}$$" ], "text/plain": [ "\n", " 1\n", "---------\n", "0.5 s + 1" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "gain, phase, w = bode(P, logspace(-2, 2), Hz=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "これでもよいのですが,見た目が良くないので..." ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "gain, phase, w = bode(P, logspace(-2, 2), Plot=False)\n", "\n", "fig, ax = plt.subplots(2, 1, figsize=(5.5, 4.5))\n", "ax[0].semilogx(w, 20*np.log10(gain))\n", "ax[1].semilogx(w, phase*180/np.pi)\n", "\n", "ax[0].grid(which='both', ls=':')\n", "ax[0].set_ylabel('Gain [dB]')\n", "ax[1].grid(which='both', ls=':')\n", "ax[1].set_ylabel('Phase [deg]')\n", "ax[1].set_xlabel('$\\omega$ [rad/s]')\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ブロック線図の結合" ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " 1\n", "-----\n", "s + 1\n", "\n", "\n", " s + 1\n", "-----------\n", "s^2 + s + 1\n", "\n" ] } ], "source": [ "S1 = tf( [0, 1], [1, 1])\n", "S2 = tf( [1, 1], [1, 1, 1])\n", "print(S1)\n", "print(S2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "直列結合" ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "S= \n", " s + 1\n", "---------------------\n", "s^3 + 2 s^2 + 2 s + 1\n", "\n", "S= \n", " s + 1\n", "---------------------\n", "s^3 + 2 s^2 + 2 s + 1\n", "\n" ] } ], "source": [ "S = S2 * S1\n", "print('S=', S)\n", "\n", "S = series(S1, S2)\n", "print('S=', S)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "分母分子の共通因子 s+1 が約分されない\n", "この場合は,minreal を使う" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$\\frac{1}{s^2 + s + 1}$$" ], "text/plain": [ "\n", " 1\n", "-----------\n", "s^2 + s + 1" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S.minreal()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "並列結合" ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "S= \n", " 2 s^2 + 3 s + 2\n", "---------------------\n", "s^3 + 2 s^2 + 2 s + 1\n", "\n", "S= \n", " 2 s^2 + 3 s + 2\n", "---------------------\n", "s^3 + 2 s^2 + 2 s + 1\n", "\n" ] } ], "source": [ "S = S1 + S2\n", "print('S=', S)\n", "S = parallel(S1, S2)\n", "print('S=', S)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "フィードバック結合" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "S= \n", " s^4 + 3 s^3 + 4 s^2 + 3 s + 1\n", "-----------------------------------------------\n", "s^6 + 4 s^5 + 9 s^4 + 13 s^3 + 12 s^2 + 7 s + 2\n", "\n", "S= \n", " s + 1\n", "---------------------\n", "s^3 + 2 s^2 + 3 s + 2\n", "\n" ] } ], "source": [ "S = S1*S2 / (1 + S1*S2)\n", "print('S=', S)\n", "S = feedback(S1*S2, 1)\n", "print('S=', S)" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "S= \n", " 1\n", "-----------\n", "s^2 + s + 2\n", "\n" ] } ], "source": [ "print('S=', S.minreal())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }