Python에서 Bode 다이어그램과 시스템의 시간 응답을 찾습니다.
질문 1)
다음 전달 함수의 Bode 다이어그램을 곱합니다.
$$G(s) =\frac{10}{s(s+4)(3s+1)} $$
from sympy import *
def main():
x = Symbol("x") # symbolとして使う変数の宣言
y = Symbol("y")
f = x* (x+4) *(3*x+1) # 関数f(x)の定義
f1 = expand(f) # 関数f(x)を展開
f2 = factor(f1) # 関数f(x)を因数分解
print("f = "+str(f)) # 計算結果の表示
print("f1 = "+str(f1))
print("f2 = "+str(f2))
if __name__ == '__main__':
main()
f = x*(x + 4)(3*x + 1)
f1 = 3*x3+13*x2+4*x
f2 = x(x + 4)*(3*x + 1)
가 출력됩니다. (단지의 전개이므로 머리로 계산해도 문제 없습니다.) 이것보다 이하의 파라미터에 계수를 넣어 갑니다.
from control.matlab import *
from matplotlib import pyplot as plt
# 伝達関数のパラメータ
num = [ 10] # 分子の係数
den = [3, 13, 4,0] # 分母の係数
sys = tf(num, den) # 伝達関数モデルの作成
bode(sys) # ボード線図のプロット
plt.show()
보드 다이어그램이 출력되었습니다.
질문 2)
다음 시스템을 제어 할 때 시스템의 시간 응답을 찾습니다.
\frac{dx(t)}{dt} = \begin{pmatrix}
0 & 1 \\
-4 & -5\\
\end{pmatrix}x(t) + \begin{pmatrix} 0 \\ 1 \\
\end{pmatrix}u(t) \\
x(0) = \begin{pmatrix} 1 \\ 0 \\ \end{pmatrix}, u(t) = Heaviside(t)
from control.matlab import *
from matplotlib import pyplot as plt
import sympy as sym
import numpy as np
def main():
var("a:z")
var("A:Z")
var("X0")
A = [[0,1], [-4,-5]]
B = [[0], [1]]
X0 = [[1],[0]]
A = sym.Matrix(A)
X = (sym.eye(2)*s - A).inv()
Y = inverse_laplace_transform(X,s,t) #exp(At)
X0 = sym.Matrix(X0)#これはx0
#print(Y *X0 )#第一項
#積分の項を計算していく
var("tau")#積分のためのtau
Z = inverse_laplace_transform(X,s,t-tau)#再度計算
B = sym.Matrix(B)#b
W = integrate(Z * B ,(tau,0,t))#積分 eAt * b * u(t)
#print(W)
Answer = Y * X0 + W
print(sym.simplify(Answer[0,0]))
print(sym.simplify(Answer[1,0]))
if __name__ == "__main__":
main()
Heaviside(t)/4 + exp(-t)*Heaviside(t) - exp(-4*t)*Heaviside(t)/4
-exp(-t)*Heaviside(t) + exp(-4*t)*Heaviside(t)
라고 출력되었습니다. 이것으로부터, $$ x(t)= [x_1(t), x_2(t)]$$로 한 경우,
$$x_1(t) =\frac{1}{4} + exp(-t) -\frac{exp(-4t)}{4}$$
$$x_2(t) = -exp(-t) + exp(-4t)$$
이것이 해답이지만,이 함수를 염두에두고 플롯합니다.
import sympy as sym
var("t")
sym.plotting.plot((1/4 + exp(-t) - exp(-4*t)/4,(t,0,10)))
sym.plotting.plot(-exp(-t) + exp(-4*t),(t,0,10))
도움이 된 기사
htps : // / l hr thm. 조호.んふぉ / 세이 죠 리론 / py 텐 콘 t 로 루 시무 치온 /
htps : // 코 m / 응 _ 그 싸 / ms / 아다 16 에 29 에 f8282498 b7
+sympy에서 수치 계산에 관한 다양한 기사
Reference
이 문제에 관하여(Python에서 Bode 다이어그램과 시스템의 시간 응답을 찾습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tagut_19/items/e90693fd58074671159c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)