系の安定性の判別
・多項式の根をDKA法などで求める
・多項式の係数から
:
●ラウス(routh)の安定判別法
LET N=4 !次数
DIM A(0 TO N) !多項式の係数 A(n)*s^n+A(n-1)*s^(n-1)+ … +A(1)*s+A(0)、A(n)>0
DATA 1,5,10,10,4 !s^4+5*s^3+10*s^2+10*s+4
FOR i=N TO 0 STEP -1
READ A(i) !係数を読み込む
IF A(i)<=0 THEN !すべて正かどうか確認する
PRINT "安定な多項式でない。"
STOP
END IF
NEXT i
!ラウス表をつくる
!1行 B1 A(N) A(N-2) A(N-4) …
!2行 B2 A(N-1) A(N-3) A(N-5) … → B1
!3行 B3 → B2
! : → B3
! :
LET M=INT(N/2)
DIM B1(0 TO M),B2(0 TO M),B3(0 TO M)
FOR i=0 TO N !0行目、1行目
IF MOD(i,2)=0 THEN LET B1(INT(i/2))=A(N-i) ELSE LET B2(INT(i/2))=A(N-i)
NEXT i
MAT PRINT B1; !debug
MAT PRINT B2;
FOR l=2 TO N !2行目~N行目
MAT B3=ZER
FOR i=0 TO M-1
LET B3(i)=-1/B2(0)*( B1(0)*B2(i+1) - B1(i+1)*B2(0) )
NEXT i
MAT PRINT B3; !debug
IF B3(0)<=0 THEN !ラウス数列がすべて正かどうか確認する
PRINT "安定な多項式でない。"
STOP
END IF
MAT B1=B2
MAT B2=B3
NEXT l
PRINT "安定な多項式である。"
END
●フルビッツ(Hurwitz)の安定判別法
LET N=4 !次数
DIM A(0 TO N) !多項式の係数 A(n)*s^n+A(n-1)*s^(n-1)+ … +A(1)*s+A(0)
DATA 1,5,10,10,4 !s^4+5*s^3+10*s^2+10*s+4
FOR i=N TO 0 STEP -1
READ A(i) !係数を読み込む
IF A(i)<=0 THEN !すべて正かどうか確認する
PRINT "安定な多項式でない。"
STOP
END IF
NEXT i
!フルビッツ行列式をつくる
!│A(n-1) A(n-3) A(n-5) … 0 │
!│A(n) A(n-2) A(n-4) … 0 │
!│0 A(n-1) A(n-3) … 0 │
!│0 A(n) A(n-2) … 0 │
! :
! :
!│0 0 0 … A(1)│
DIM B(N,N)
FOR m=1 TO N
MAT B=ZER(m,m)
LET k=N-1
FOR i=1 TO m
FOR j=1 TO m
LET t=k-2*(j-1)
IF t>=0 AND t<=N THEN LET B(i,j)=A(t)
NEXT j
LET k=k+1
NEXT i
MAT PRINT B; !debug
IF DET(B)<=0 THEN
PRINT "不安定な多項式です。"
!STOP
END IF
PRINT "行列式=";DET(B) !debug
NEXT m
PRINT "安定な多項式である。"
END