controllability and observability

Oliver xu
1
2
3
from sympy import *
import numpy as np

Problem 4.1

Determine whether the following continuous-time linear time-invariant system is fully controllable

1
2
3
4
5
6
7
8
9
10
11
12
13
14
A = Matrix([[0, 1, 0], 
[0, 0, 1],
[-2, -4, -3]])
B = Matrix([
[1, 0],
[0, 1],
[-1, 1]
])

Q = B.col_insert(2, A*B).col_insert(5, A**2*B)
if Q.rank()==3:
print("This system is fully controllable")
else:
print("This system is not fully controllable")
This system is fully controllable

Problem 4.2

Determine the range of values a,b,c for the following continuous-time linear time-invariant systems to be fully controllable

1
2
3
4
5
6
7
8
9
10
11
12
a, b= symbols("a b")
A = Matrix([[-2, 0, 0],
[0, -2, 0],
[0, 0, -2]])
B = Matrix([
[a, 1],
[2, 4],
[b, 1]
])

Q = B.col_insert(2, A*B).col_insert(5, A**2*B)
Q

1
2
3
4
if Q.rank()==3:
print("This system is fully controllable")
else:
print("This system is not fully controllable")
This system is not fully controllable

Problem 4.3

Determine whether the following continuous-time linear time-invariant system is fully observable

1
2
3
4
5
6
7
8
9
10
11
12
13
A = Matrix([[0, 1, 0], 
[0, 0, 1],
[-2, -4, -3]])
C = Matrix([
[1, 0, 4],
[2, 0, 8]
])

Q =C.row_insert(3, C*A).row_insert(6, C*A**2)
if Q.rank()==3:
print("This system is fully controllable")
else:
print("This system is not fully controllable")
This system is fully controllable

Problem 4.4

Determine the range of values a,b,c for the following continuous-time linear time-invariant system to be fully observable

Condition 1: a!=0 or b!=1

1
2
3
4
5
6
7
8
9
10
11
12
# if a!=0 and b!=1:  C.rank()=2, only when rank[C CA]'==3, the conditions are satified
a, b= symbols("a b")
A = Matrix([[-2, 0, 0],
[1, -2, 0],
[0, 0, -2]])
C = Matrix([
[1, a, b],
[4, 0, 4]
])

Q = C.row_insert(3, C*A)
Q

So, when a is not equal to 0 and b is not equal to 0, this system is fully observable

Condition 2: a==0 and b==1

1
2
3
4
5
6
7
8
9
10
11
# only when rank[C1 C1A C1A^2]'==3, the conditions are satified
a, b= symbols("a b")
A = Matrix([[-2, 0, 0],
[1, -2, 0],
[0, 0, -2]])
C = Matrix([
[1, 0, 1]
])

Q = C.row_insert(3, C*A).row_insert(6, C*A**2)
Q

rank(Q) = 3, thus in this condition, this system is not fully observable

Problem 4.5

Determine the range of values a,b,c for the following continuous-time linear time-invariant system to be fully controllable and observable

Problem 4.6

Calculate the controllability and observability index of the following continuous-time linear time-invariant system

  • 标题: controllability and observability
  • 作者: Oliver xu
  • 创建于 : 2019-08-13 14:40:48
  • 更新于 : 2024-12-21 21:05:39
  • 链接: https://blog.oliverxu.cn/2019/08/13/controllability-and-observability/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论