特性多項式の係数から安定性を判別する方法

 投稿者:山中和義  投稿日:2009年 3月 3日(火)10時26分22秒
  系の安定性の判別
・多項式の根を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
 

戻る