mirror of
https://github.com/gabrielkheisa/control-system.git
synced 2024-11-23 20:03:22 +07:00
Add main program
This commit is contained in:
parent
f7fdc9faf4
commit
f2556fd7ba
211
442385_Nanda_Sisken_Assign_3.ipynb
Normal file
211
442385_Nanda_Sisken_Assign_3.ipynb
Normal file
@ -0,0 +1,211 @@
|
||||
{
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"collapsed_sections": []
|
||||
},
|
||||
"kernelspec": {
|
||||
"name": "python3",
|
||||
"display_name": "Python 3"
|
||||
},
|
||||
"language_info": {
|
||||
"name": "python"
|
||||
}
|
||||
},
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Import Libraries\n",
|
||||
"import numpy as np\n",
|
||||
"import pandas as pd"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "aDtFkeqAvLX2"
|
||||
},
|
||||
"execution_count": 132,
|
||||
"outputs": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 133,
|
||||
"metadata": {
|
||||
"id": "Letb52yp47Gb"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Define RouthStability Class \n",
|
||||
"class RouthStability():\n",
|
||||
" ## constructor takes string of coefficiens from polynomial\n",
|
||||
" def __init__(self, den):\n",
|
||||
" self.den = np.array([float(item) for item in den.split()])\n",
|
||||
" self.deg = len(self.den)\n",
|
||||
" ## append k as constant in array\n",
|
||||
" def set_k(self, k):\n",
|
||||
" self.den = np.append(self.den, float(k))\n",
|
||||
" self.deg += 1\n",
|
||||
" ## generate routh table and print its state\n",
|
||||
" def calc_routh(self):\n",
|
||||
" height = (self.deg+1)//2\n",
|
||||
" arr = np.zeros((height + 2,height))\n",
|
||||
" for index in range(self.deg):\n",
|
||||
" if index % 2 == 0:\n",
|
||||
" arr[0][index//2] = self.den[index]\n",
|
||||
" else:\n",
|
||||
" arr[1][(index-1)//2] = self.den[index]\n",
|
||||
"\n",
|
||||
" for i in range(2, height+2):\n",
|
||||
" for j in range(height-1):\n",
|
||||
" arr[i][j] = (arr[i-1][0]*arr[i-2][j+1] - arr[i-2][0]*arr[i-1][j+1])//2\n",
|
||||
" arr[i][j] += 0\n",
|
||||
" \n",
|
||||
" self.df = pd.DataFrame(arr)\n",
|
||||
" self.show_tab()\n",
|
||||
" if self.is_stable() == True:\n",
|
||||
" print(\"SYSTEM IS STABLE\")\n",
|
||||
" else:\n",
|
||||
" print(\"SYSTEM IS UNSTABLE\")\n",
|
||||
" ## print generated route table\n",
|
||||
" def show_tab(self):\n",
|
||||
" print(self.df)\n",
|
||||
" ## return generated route DataFrame\n",
|
||||
" def get_table(self):\n",
|
||||
" return self.df\n",
|
||||
" ## return system stability as boolean\n",
|
||||
" def is_stable(self):\n",
|
||||
" flag = True\n",
|
||||
" for item in self.df[0]:\n",
|
||||
" if item < 0: flag = False\n",
|
||||
" return flag\n",
|
||||
" ## return the value of a polynomial\n",
|
||||
" def get_poly(self, x):\n",
|
||||
" total = 0\n",
|
||||
" for i in range(self.deg):\n",
|
||||
" total += self.den[self.deg-i-1]*(x**i)\n",
|
||||
" print(total)\n",
|
||||
" return total"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# First Testing\n",
|
||||
"den = input(\"Enter your polynomial: \")\n",
|
||||
"k_in = input(\"Enter your K: \")\n",
|
||||
"\n",
|
||||
"rs = RouthStability(den)\n",
|
||||
"rs.set_k(k_in)\n",
|
||||
"rs.calc_routh()"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "Je19fGrvtOu4",
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"outputId": "c99b1159-f745-4c3f-c012-c2f464b8edb0"
|
||||
},
|
||||
"execution_count": 134,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"text": [
|
||||
"Enter your polynomial: 1 2 3 4 5\n",
|
||||
"Enter your K: 6\n",
|
||||
" 0 1 2\n",
|
||||
"0 1.0 3.0 5.0\n",
|
||||
"1 2.0 4.0 6.0\n",
|
||||
"2 1.0 2.0 0.0\n",
|
||||
"3 0.0 3.0 0.0\n",
|
||||
"4 -2.0 0.0 0.0\n",
|
||||
"SYSTEM IS UNSTABLE\n"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Second Testing\n",
|
||||
"den = input(\"Enter your polynomial: \")\n",
|
||||
"k_in = input(\"Enter your K: \")\n",
|
||||
"\n",
|
||||
"rs = RouthStability(den)\n",
|
||||
"rs.set_k(k_in)\n",
|
||||
"rs.calc_routh()"
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "kFgcxNcscafI",
|
||||
"outputId": "25aadcc4-6a29-4c16-c992-46d95a56cbfb"
|
||||
},
|
||||
"execution_count": 136,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"text": [
|
||||
"Enter your polynomial: 12 56 37 80\n",
|
||||
"Enter your K: 17\n",
|
||||
" 0 1 2\n",
|
||||
"0 12.0 37.0 17.0\n",
|
||||
"1 56.0 80.0 0.0\n",
|
||||
"2 556.0 476.0 0.0\n",
|
||||
"3 8912.0 0.0 0.0\n",
|
||||
"4 2121056.0 0.0 0.0\n",
|
||||
"SYSTEM IS STABLE\n"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"# Third Testing\n",
|
||||
"den = input(\"Enter your polynomial: \")\n",
|
||||
"k_in = input(\"Enter your K: \")\n",
|
||||
"\n",
|
||||
"rs = RouthStability(den)\n",
|
||||
"rs.set_k(k_in)\n",
|
||||
"rs.calc_routh()"
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "jaif_A4_hfeJ",
|
||||
"outputId": "0b387e7e-efbf-4f5c-fb45-d98489bbba3e"
|
||||
},
|
||||
"execution_count": 137,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"text": [
|
||||
"Enter your polynomial: 1.2 6.81 7.31\n",
|
||||
"Enter your K: 3.141\n",
|
||||
" 0 1\n",
|
||||
"0 1.20 7.310\n",
|
||||
"1 6.81 3.141\n",
|
||||
"2 23.00 0.000\n",
|
||||
"3 36.00 0.000\n",
|
||||
"SYSTEM IS STABLE\n"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [],
|
||||
"metadata": {
|
||||
"id": "SjkQCR9chk6P"
|
||||
},
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user