주요 콘텐츠

isstable

동적 시스템 모델이 안정적인지 확인

설명

B = isstable(sys)동적 시스템 모델 sys가 안정적인 동특성을 가지면 논리값 1(true)을 반환하고 그렇지 않으면 0(false)을 반환합니다. sys가 모델 배열인 경우 이 함수는 sys의 모든 모델이 안정적인 경우에만 1을 반환합니다.

isstable은 다음과 같은 경우 동적 시스템의 안정성을 위해 논리값 1(true)을 반환합니다.

  • 연속시간 시스템에서 모든 극점이 복소 평면의 열린 좌반면에 있는 경우.

  • 이산시간 시스템에서 모든 극점이 열린 단위 원판 내에 있는 경우.

isstable은 유한한 개수의 극점을 갖는 분석 모델에 대해서만 지원됩니다.

예제

B = isstable(sys,'elem')은 모델 배열 sys와 차원이 같은 논리형 배열을 반환합니다. 논리형 배열은 sys에 있는 어떤 모델이 안정적인지 나타냅니다.

예제

B = isstable(___,Name=Value)는 하나 이상의 지정된 이름-값 인수를 사용하여 지정된 옵션에 따라 극점의 일부를 계산하여 희소 모델 sys의 안정성을 확인합니다. sys가 비희소 모델인 경우 이 함수는 이름-값 인수를 무시합니다. (R2025a 이후)

예제

예제

모두 축소

샘플 시간을 0.1초로 지정하여 이 이산시간 SISO 전달 함수 모델의 안정성을 확인합니다.

sys(z)=2z4z3+3z-1

이산시간 전달 함수 모델을 만듭니다.

sys = tf([2,0],[4,0,3,-1],0.1);

시스템의 극점을 검토합니다.

P = abs(pole(sys))
P = 3×1

    0.9159
    0.9159
    0.2980

전달 함수 모델의 모든 극점의 크기는 1보다 작으므로 열린 단위 원판 내에 있는 모든 극점과 시스템은 안정적입니다.

isstable을 사용하여 모델의 안정성을 확인합니다.

B = isstable(sys)
B = logical
   1

시스템 sys는 안정적입니다.

연속시간 영점-극점-이득 모델의 안정성을 확인합니다.

sys(s)=2(s+2+3j)(s+2-3j)(s-0.5)

영점, 극점 및 이득을 지정하여 모델을 zpk 모델 객체로 만듭니다.

sys = zpk([],[-2-3*j,-2+3*j,0.5],2);

모델의 극점 하나가 복소 평면의 우반면에 있기 때문에 시스템은 불안정합니다.

isstable을 사용하여 모델의 불안정성을 확인합니다.

B = isstable(sys)
B = logical
   0

시스템 sys는 불안정합니다.

-2부터 2까지의 극점을 갖는 SISO 전달 함수 모델로 구성된 배열의 안정성을 확인합니다.

[1s+2,1s+1,1s,1s-1,1s-2]

배열을 만들려면 먼저 0 값으로 이루어진 SISO 전달 함수로 차원 [length(a),1]의 배열을 초기화하십시오.

a = [-2:2];
sys = tf(zeros(1,1,length(a)));

배열을 1/(s-a) 형식의 전달 함수로 채웁니다.

for j = 1:length(a)
    sys(1,1,j) = tf(1,[1 -a(j)]);
end

isstable을 통해 모델 배열의 모든 모델이 안정적인지 또는 각 개별 모델이 안정적인지를 확인할 수 있습니다.

모델 배열의 안정성을 검토합니다.

B_all = isstable(sys)
B_all = logical
   0

기본적으로 isstable은 배열에 있는 모든 모델이 안정적인 경우 하나의 논리값 1(true)을 반환합니다. sys는 음이 아닌 극점을 갖는 모델을 몇 개 포함하며, 이들 모델은 안정적이지 않습니다. 따라서 isstable은 전체 배열에 대해 0(false)을 반환합니다.

'elem' 플래그를 사용하여 배열에 있는 각 모델의 안정성을 검토합니다.

B_elem = isstable(sys,'elem')
B_elem = 5×1 logical array

   1
   1
   0
   0
   0

이 함수는 모델 배열에서 해당 요소의 안정성을 나타내는 논리값으로 구성된 배열을 반환합니다. 예를 들어, B_elem(2)1이며 이는 배열의 두 번째 모델 sys(1,1,2)가 안정적임을 나타냅니다. sys(1,1,2)-1에서 극점을 갖기 때문입니다.

R2025a 이후

이 예제에서는 소리 굽쇠에 대한 희소 2차 모델이 포함된 tuningForkData.mat를 살펴보겠습니다. 희소 상태공간 모델이면 isstable은 관심 주파수 범위에서 계산된 일부 극점을 바탕으로 안정성을 확인합니다.

tuningForkData.mat에서 희소 행렬을 작업 공간으로 불러오고 mechss 모델 객체를 생성합니다.

load tuningForkData.mat;
sys = mechss(M,[],K,B,F)
Sparse continuous-time second-order model with 2 outputs, 1 inputs, and 3024 degrees of freedom.
Model Properties

Use "spy" and "showStateInfo" to inspect model structure. 
Type "help mechssOptions" for available solver options for this model.

최대 10000rad/s 주파수 범위에서 안정성을 확인합니다.

b = isstable(sys,Focus=[0 1e4])
b = logical
   0

소리 굽쇠 모델 sys는 비감쇠 모델이고 isstable은 예상대로 0을 반환합니다. damp 함수를 사용하여 이를 확인할 수 있습니다.

damp(sys,Focus=[0 1e4])
                                                                       
         Pole              Damping       Frequency      Time Constant  
                                       (rad/seconds)      (seconds)    
                                                                       
  0.00e+00 + 2.96e+03i     0.00e+00       2.96e+03           Inf       
  0.00e+00 - 2.96e+03i     0.00e+00       2.96e+03           Inf       
  0.00e+00 + 2.96e+03i     0.00e+00       2.96e+03           Inf       
  0.00e+00 - 2.96e+03i     0.00e+00       2.96e+03           Inf       
  0.00e+00 + 3.01e+03i     0.00e+00       3.01e+03           Inf       
  0.00e+00 - 3.01e+03i     0.00e+00       3.01e+03           Inf       
  0.00e+00 + 3.02e+03i     0.00e+00       3.02e+03           Inf       
  0.00e+00 - 3.02e+03i     0.00e+00       3.02e+03           Inf       

이제 주파수 3000 rad/s에서 최소 감쇠 0.01을 갖는 레일리 감쇠 C=αM+βK를 추가합니다.

wmin = 3000;
zmin = 0.01;
alpha = zmin*wmin;
beta = zmin/wmin;
C_d = alpha*M+beta*K;
sys_d = mechss(M,C_d,K,B,F)
Sparse continuous-time second-order model with 2 outputs, 1 inputs, and 3024 degrees of freedom.
Model Properties

Use "spy" and "showStateInfo" to inspect model structure. 
Type "help mechssOptions" for available solver options for this model.

감쇠 모델의 안정성을 확인합니다.

isstable(sys_d,Focus=[0 1e4])
ans = logical
   1

감쇠를 추가하면 모델의 모든 계산된 극점이 좌반면에 위치하게 됩니다.

damp(sys_d,Focus=[0 1e4])
                                                                       
         Pole              Damping       Frequency      Time Constant  
                                       (rad/seconds)      (seconds)    
                                                                       
 -2.96e+01 + 2.96e+03i     1.00e-02       2.96e+03         3.38e-02    
 -2.96e+01 - 2.96e+03i     1.00e-02       2.96e+03         3.38e-02    
 -2.96e+01 + 2.96e+03i     1.00e-02       2.96e+03         3.38e-02    
 -2.96e+01 - 2.96e+03i     1.00e-02       2.96e+03         3.38e-02    
 -3.01e+01 + 3.01e+03i     1.00e-02       3.01e+03         3.33e-02    
 -3.01e+01 - 3.01e+03i     1.00e-02       3.01e+03         3.33e-02    
 -3.02e+01 + 3.02e+03i     1.00e-02       3.02e+03         3.31e-02    
 -3.02e+01 - 3.02e+03i     1.00e-02       3.02e+03         3.31e-02    

입력 인수

모두 축소

동적 시스템으로, SISO 또는 MIMO 동적 시스템 모델이나 SISO 또는 MIMO 동적 시스템 모델로 구성된 배열로 지정됩니다. 사용 가능한 동적 시스템에는 tf, zpk 또는 ss 모델과 같은 연속시간 또는 이산시간 수치적 LTI 모델이 포함됩니다.

sys가 일반화된 상태공간 모델 genss 또는 불확실 상태공간 모델 uss (Robust Control Toolbox)인 경우 isstablesys의 현재 값 또는 공칭 값의 안정성을 확인합니다.

sys가 희소 상태공간 모델이면(sparss 또는 mechss), 지정된 관심 주파수 대역에 해당하는 일부 극점을 계산하여 안정성을 확인합니다. 희소 모델의 경우 이름-값 인수를 사용하여 계산 옵션을 지정하십시오. 아무 옵션도 지정하지 않으면 크기가 가장 작은 처음 1000개 극점을 계산합니다. 레일리 감쇠가 적용된 mechss 모델이면, (K,M)의 고유값으로부터 극점을 계산합니다. 그 외의 경우에는 동등한 sparss 모델로부터 극점을 계산합니다. (R2025a 이후)

sys가 모델로 구성된 배열인 경우 isstable은 배열에 있는 모든 모델의 안정성을 확인합니다.

  • B = isstable(sys)를 사용하는 경우 배열에 있는 모든 모델이 안정적일 때만 출력이 1(true)입니다.

  • B = isstable(sys,'elem')을 사용하는 경우 출력은 논리형 배열이며, 배열의 요소들은 모델 배열 내 대응되는 요소의 안정성을 나타냅니다.

모델 배열에 대한 자세한 내용은 모델 배열 항목을 참조하십시오.

이름-값 인수

모두 축소

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

예: B = isstable(sparseSys,Focus=[0 10],Display="off")

R2025a 이후

관심 주파수 범위로, [fmin,fmax] 형식의 벡터로 지정됩니다. 관심 주파수 범위를 지정하면, 알고리즘은 해당 범위 내에서 고유 주파수를 가진 극점만 계산합니다. 이산시간 모델이면 Tustin 변환을 통해 동등한 고유 주파수를 근사합니다.

준정부호 대칭 희소 모델이면 0 ≤ fmin < fmax의 임의의 주파수 범위를 지정할 수 있습니다. 비대칭 sparss 모델이면 주파수 범위를 [0,fmax] 또는 [fmin,inf]로 지정해야 합니다.

소프트웨어는 지정된 주파수 범위 내에서 모든 극점을 계산하므로, 일반적으로 사용자가 저주파 범위를 지정하여 많은 수의 극점이 계산되는 것을 제한합니다. 기본적으로 관심 범위는 지정되지 않으며([0 Inf]) 알고리즘은 최대 MaxNumber개의 극점을 계산합니다.

R2025a 이후

계산할 극점과 영점의 최대 개수로, 양의 정수로 지정됩니다. 이 값은 알고리즘이 계산하는 극점의 수를 제한합니다.

R2025a 이후

스펙트럼 이동으로, 유한한 스칼라로 지정됩니다.

A-sigma*E에 대한 역거듭제곱 반복을 사용하여 지정된 범위 [0,fmax]에서 고유 주파수를 갖는 극점을 계산하며, 이를 통해 이동 sigma에 가장 가까운 고유값을 얻습니다. A가 특이값이고 sigma가 0이면 역행렬이 존재하지 않으므로 알고리즘은 실패합니다. 따라서 적분 동작(s = 0 또는 이산시간 모델이면 z = 1)이 있는 희소 모델의 경우, 이 옵션을 사용하여 극점이나 영점을 이 이동 값에 가장 가까운 값으로 묵시적으로 이동할 수 있습니다. 이동 값을 원래 모델의 기존 극점 값과 동일하지 않은 값으로 지정하십시오.

R2025a 이후

계산된 극점의 정확도에 대한 허용오차로, 양의 유한한 스칼라로 지정됩니다. 이 값은 역거듭제곱 반복을 통해 계산되는 고유값의 수렴을 제어합니다.

R2025a 이후

진행률 리포트를 표시하거나 숨길지 여부로, "off" 또는 "on"으로 지정됩니다.

출력 인수

모두 축소

true 또는 false 결과로, 안정적인 모델의 경우 1, 불안정한 모델의 경우 0으로 반환됩니다.

'elem' 플래그는 isstable이 모델 배열과 동일한 차원을 가진 논리값으로 구성된 배열을 반환하도록 합니다. 배열의 값은 모델 배열 내 대응되는 요소의 안정성을 나타냅니다.

알고리즘

희소 상태공간 모델의 경우, 지정된 주파수 대역에서 극점을 계산하기 위한 역거듭제곱 반복에 크릴로프-슈어(Krylov-Schur) 알고리즘[1]을 사용합니다.

참고 문헌

[1] Stewart, G. W. “A Krylov--Schur Algorithm for Large Eigenproblems.” SIAM Journal on Matrix Analysis and Applications 23, no. 3 (January 2002): 601–14. https://doi.org/10.1137/S0895479800371529.

버전 내역

R2012a에 개발됨

모두 확장

참고 항목

| |