Chapter 3

In [ ]:
using ControlSystems

伝達関数モデルの記述

In [ ]:
Np = [0, 1]      # 伝達関数の分子多項式の係数 (0*s + 1)
Dp = [1, 2, 3]   # 伝達関数の分母多項式の係数 (1*s^2 + 2*s + 3)
P = tf(Np, Dp)
In [ ]:
P = tf([0, 1], [1, 2, 3])
In [ ]:
s = tf("s")
P = 1/(s^2+2s+3)

練習問題

In [ ]:
P = tf([1, 2], [1, 5, 3, 4])

分母多項式の展開

In [ ]:
using Symbolics
@variables s
expand( (s+1)*(s+2)^2 )
In [ ]:
P = tf([1, 3],[1, 5, 8, 4])
In [ ]:
P1 = tf([1, 3], [0, 1])
P2 = tf([0, 1], [1, 1])
P3 = tf([0, 1], [1, 2])
P = P1 * P2 * P3^2
In [ ]:
s = tf("s")
P = 1/(s+1)/(s+2)^2

分母・分子多項式の係数の抽出

In [ ]:
den(P)
In [ ]:
num(P)

状態空間モデルの記述

In [ ]:
A = [0 1; -1 -1]
B = [0; 1]
C = [1 0]
D = 0
P = ss(A, B, C, D)

練習問題

In [ ]:
A = [1 1 2; 2 1 1; 3 4 5]
B = [2; 0; 1]
C = [1 1 0]
D = 0
P = ss(A, B, C, D)

A,B,C,D行列の抽出

In [ ]:
println("A=", P.A)
println("B=", P.B)
println("C=", P.C)
println("D=", P.D)
In [ ]:
sysA, sysB, sysC, sysD = ssdata(P)
println("A=", sysA)
println("B=", sysB)
println("C=", sysC)
println("D=", sysD)

ブロック線図の結合

In [ ]:
S1 = tf( [0, 1], [1, 1])
In [ ]:
S2 = tf( [1, 1], [1, 1, 1])

直列結合

In [ ]:
S = S2 * S1;
println(S)

S = series(S1, S2);
println(S)

分母分子の共通因子 s+1 が約分されない この場合は,minreal を使う

In [ ]:
minreal(S)

並列結合

In [ ]:
S = S1 + S2;
println(S)

S = parallel(S1, S2)
println(S)

フィードバック結合

In [ ]:
S = S1*S2 / (1 + S1*S2)
println(S)

S = feedback(S1*S2, 1)
println(S)
In [ ]:
minreal(S)

練習問題

In [ ]:
S1 = tf(1, [1, 1])
S2 = tf(1, [1, 2])
S3 = tf([3, 1], [1, 0])
S4 = tf([2, 0], [0, 1])

S12 = feedback(S1, S2)
S123 = series(S12, S3)
S = feedback(S123, S4)

補遺(実現問題とプロパー性)

実現問題

In [ ]:
P = tf( [0, 1], [1, 1, 1])

Pss = ss(P) # 伝達関数モデルから状態空間モデルへの変換
println(Pss)
Ptf = tf(Pss) # 状態空間モデルから伝達関数モデルへの変換
println(Ptf)

プロパー性

In [ ]:
S1 = tf([1, 1], [0, 1])
S2 = tf([0, 1], [1, 1])

S = series(S1, S2)
minreal(S)
In [ ]:
print(S2)
ss(S2)
In [ ]:
print(S1)
ss(S1)