Buscar

Trabalho 2_ControleProcessos(Novo)

Prévia do material em texto

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS 
 
CURSO DE ENGENHARIA ELÉTRICA 
CONTROLE DE PROCESSOS 
 
 
TRABALHO 2 – CONTROLABILIDADE E OBSERVABILIDADE 
 
 
Docente: Lucas Silvestre Chaves 
Discentes: Heberte Sebastião Leandro 
 Rafael Bruno da Silva 
 Vitor da Cunha de Souza 
 
 
 
 
NEPOMUCENO-MG 
06/12/2022 
 
 
1ª Questão: Avalie a controlabilidade de cada um dos sistemas apresentados na 
sequência. Justifique a sua resposta apresentando o passo a passo de sua avaliação! 
 
a) 
 
 
 
 
 
 
 
 
 
 
 
 
 
1° PASSO: O comando matriz = control.ctrb(A,B) nos forneceu a matriz de 
controlabilidade [𝐵 ⋮ 𝐴𝐵]. 
 
 2° PASSO: Em seguida é feito o cálculo do determinante para definir se a matriz obtida 
é singular ou não. 
O determinante aplicando pela linha de comando descrita acima apresenta o valor 
aproximado igual a -10. O valor exato não se deu porque a função calcula o determinante 
via fatoração LU, porém calculando manualmente é fácil de ver que o determinante é 
igual a – 10. Como o determinante é diferente de 0, logo a matriz não é singular, logo é 
completamente controlável. 
 
 
b) 
 
 
 
 
 
 
 
 
 
 
 
 
 
1° PASSO: O comando matriz = control.ctrb(A,B) nos forneceu a matriz de 
controlabilidade [𝐵 ⋮ 𝐴𝐵]. 
 
 2° PASSO: O determinante aplicado pela linha de comando descrita acima apresenta o 
valor igual 0. Logo a matriz é singular, então não é completamente controlável. 
 
c) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1° PASSO: O comando matriz = control.ctrb(A,B) nos forneceu a matriz de 
controlabilidade [𝐵 ⋮ 𝐴2𝐵]. 
 
 2° PASSO: O determinante aplicado pela linha de comando apresenta o valor 
aproximado igual a -48. O valor exato não se deu porque a função calcula o determinante 
via fatoração LU, porém calculando manualmente é visto que o determinante é igual a –
48. Como o determinante é diferente de 0, logo a matriz não é singular, logo é 
completamente controlável. 
 
d) 
 
 
 
 
 
 
 
Por determinante não foi possível obter informações sobre a singularidade, pois à matriz 
de controlabilidade [𝐵 ⋮ 𝐴𝐵 ⋮ 𝐴2𝐵] não é uma matriz quadrada. Então seguimos o 
programa disponível no anexo B e obtemos que: 
 
 
 
 
 
 
 
 
 
 
 
 
Observamos que o rank é igual a 2 e que o número de entradas de estado é igual a 3, logo 
o sistema de estado não é completamente controlável. Observe que a matriz de 
controlabilidade [𝐵 ⋮ 𝐴𝐵 ⋮ 𝐴2𝐵] para os dois casos obtidos pelos softwares são iguais. 
 
e) 
 
 
 
 
 
 
 
 
Como a matriz de contrabilidade não é quadrada então se fez necessário a verificação por 
meio de rank e viu-se que o número do mesmo é igual ao valor correspondente do número 
de variáveis de estado de entrada (5). Logo o sistema é totalmente controlável. Uma 
pequena adaptação feita no programa disponível no ANEXO C. 
 
f) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Neste caso é possível obter informações da singularidade do sistema tanto pelo posto 
quanto pelo determinante por se tratar de uma matriz 5x5. Como visto, a matriz de 
contrabilidade apresenta um posto igual a 4 que se difere do valor de 5 variáveis de estado 
de entrada. Também observamos que o determinante é igual a zero, o que confirma que 
o sistema de estado é singular, ou seja, não é completamente controlável. 
 
2ª Questão: Avalie a observabilidade de cada um dos sistemas apresentados na sequência. 
Justifique a sua resposta apresentando o passo a passo de sua avaliação! 
 
a) 
 
 
 
1° PASSO: O comando matriz = control.obs(A,C) nos forneceu a matriz de 
observabilidade [𝐶∗ ⋮ 𝐴∗𝐵∗]. 
 
 2° PASSO: O determinante aplicado pela linha de comando descrita acima apresenta o 
valor igual -3. Logo a matriz é totalmente observável. Também isso pode ser concluído 
pelo valor do rank que corresponde ao número de variáveis de entrada (ANEXO D). 
 
 
 
b) 
 
 
1° PASSO: O comando matriz = control.obs(A,C) nos forneceu a matriz de 
observabilidade [𝐶∗ ⋮ 𝐴∗𝐵∗]. 
 2° PASSO: O determinante aplicado pela linha de comando descrita acima apresenta o 
valor igual 0. Logo a matriz não é totalmente observável. Também isso pode ser concluído 
pelo valor do rank que não é igual número de variáveis de entrada. 
 
c) 
 
 
 
 
1° PASSO: O comando matriz = control.obs(A,C) nos forneceu a matriz de 
observabilidade [𝐶∗ ⋮ 𝐴∗𝐵∗ ⋮ 𝐴∗2𝐵∗]. 
 
2° PASSO: 
Neste caso não é possível obter informações de observabilidade do sistema pelo 
determinante, pois a matriz não é quadrada. Então é visto que o posto é igual a 3 que é 
igual ao valor de variáveis de estado de entrada. Logo o sistema é totalmente observável 
 
d) 
 
 
 
 
1° PASSO: O comando matriz = control.obs(A,C) nos forneceu a matriz de 
observabilidade [𝐶∗ ⋮ 𝐴∗𝐵∗ ⋮ 𝐴∗2𝐵∗]. 
 
2° PASSO: Neste caso não é possível obter informações de observabilidade do sistema 
pelo determinante, pois a matriz não é quadrada. Então é visto que o posto é igual a 2 que 
é diferente do valor de variáveis de estado de entrada. Logo o sistema não é totalmente 
observável. 
 
e) 
 
 
 
 
 
 
 
 
1° PASSO: O comando matriz = control.obs(A,C) nos forneceu a matriz de 
observabilidade [𝐶∗ ⋮ 𝐴∗𝐵∗ ⋮ 𝐴∗2𝐵∗ ⋮ 𝐴∗3𝐵∗ ⋮ 𝐴∗4𝐵∗]. 
 
2° PASSO: Neste caso não é possível obter informações de observabilidade do sistema 
pelo determinante, pois a matriz não é quadrada. Então é visto que o posto é igual a 5 que 
é igual ao valor de variáveis de estado de entrada. Logo o sistema é totalmente observável. 
 
f) 
 
 
 
 
 
 
 
 
 
 
1° PASSO: O comando matriz = control.obs(A,C) nos forneceu a matriz de 
observabilidade [𝐶∗ ⋮ 𝐴∗𝐵∗ ⋮ 𝐴∗2𝐵∗ ⋮ 𝐴∗3𝐵∗ ⋮ 𝐴∗4𝐵∗]. 
 
2° PASSO: Neste caso não é possível obter informações de observabilidade do sistema 
pelo determinante, pois a matriz não é quadrada. Então é visto que o posto é igual a 3 que 
é diferente do valor de variáveis de estado de entrada. Logo o sistema não é totalmente 
observável. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ANEXO A 
!pip install control 
import matplotlib.pyplot as plt 
import numpy as np 
import control 
 
#Matrizes do sistema de estado 
A = np.array([[-1,0],[0,-2],]) 
print("A:") 
print(A) 
print("\n") 
B = np.array([[2],[5]]) 
print("B:") 
print(B) 
print("\n") 
matriz=control.ctrb (A,B) 
print("print(matriz=control.ctrb (A,B)): ") 
print(matriz) 
print("\n") 
print("determinante: ") 
print("print(np.linalg.det(matriz))=",np.linalg.det(matriz)) 
 
 
ANEXO B 
!pip install control 
import matplotlib.pyplot as plt 
import numpy as np 
import control as cont 
import control 
 
#Para o sistema S1 
print("\n") 
print("*-------------------------------------") 
print("★★★★★★★★★★ SISTEMA ★★★★★★★★★★★★★") 
 
#Matrizes do sistema de estado 
A = np.array([[-1,1,0],[0,-1,0],[0,0,-2]]) 
B = np.array([[4,2],[0,0],[3,0]]) 
C = np.array([1,1,0]) 
 
print("*Matrizes do sistema: ") 
print("A: " ) 
print(A) 
print("B: " ) 
print(B) 
print("C: " ) 
 
 
print(C) 
print("\n") 
print("*-------------------------------------") 
print("\n") 
#Verificação da condição necessária para contrabilidade completa 
print("*Verificação da contrabilidade: ") 
 
#Produto das matrizes AxB 
AB = np.dot(A,B) 
#print("AB: ") 
#print(AB) 
#print("\n") 
 
#Matriz B|AB| 
B_AB = np.concatenate((B, AB),axis=1) 
#print("B|AB|: ") 
#print(B_AB) 
#print("\n") 
 
#Mariz A^2 
A2 = np.dot(A,A) 
#print("A^2: ") 
#print(A2) 
#print("\n") 
 
#Matriz (A^2)*B 
A2B = np.dot(A2,B) 
#print("(A^2)*B: ") 
#print(A2B) 
#print("\n") 
 
#Matriz [B|AB|A^2|B] 
B_AB_A2B = np.concatenate((B_AB, A2B),axis=1) 
print("[B|AB|A^2|B]: ") 
print(B_AB_A2B) 
#print("\n") 
#print(control.ctrb(A,B)) 
print("\n") 
#Verifica o rank da Matriz 
print("Valor do posto para verificação da contrabilidade dosistema
: ",np.linalg.matrix_rank(B_AB_A2B)) 
print("\n") 
print("*-------------------------------------") 
print("\n") 
 
ANEXO C 
!pip install control 
 
 
import matplotlib.pyplot as plt 
import numpy as np 
import control 
 
#Matrizes do sistema de estado 
A = np.array([[-2,1,0,0,0],[0,-2,1,0,0],[0,0,-2,0,0],[0,0,0,-
5,1],[0,0,0,0,-5]]) 
print("A:") 
print(A) 
print("\n") 
B = np.array([[0,1],[0,0],[3,0],[0,0],[2,1]]) 
print("B:") 
print(B) 
matriz=control.ctrb(A,B) 
print("print(matriz=control.ctrb (A,B)): ") 
print(matriz) 
print("\n") 
print("Tamanho da matriz de contrabilidade :",matriz.shape) 
print("Valor do posto para verificação da contrabilidade do sistema
: ",np.linalg.matrix_rank(matriz)) 
print("\n") 
print("*-------------------------------------") 
print("\n") 
 
 
ANEXO D 
!pip install control 
import matplotlib.pyplot as plt 
import numpy as np 
import control 
 
#Matrizes do sistema de estado 
print("\n") 
print("★★★★★★★★★★★★★★★★★★★★ SISTEMA ★★★★★★★★★★★★★★★★★
★★★★★★") 
A = np.array([[-1,0],[0,-2],]) 
print("A:") 
print(A) 
print("\n") 
C = np.array([[1,3]]) 
print("C:") 
print(C) 
print("\n") 
print("★★★★★★★★★★★★★★★★★★★★ VERIFICAÇÃO DE OBSERVABILIDADE 
★★★★★★★★★★★★★★★★★★★★★★★") 
matriz=control.obsv(A,C) 
print("print(matriz=control.obsv(A,C)): ") 
 
 
print(matriz) 
print("Tamanho da matriz de observabilidade :",matriz.shape) 
print("Valor do posto para verificação da observabilidade do sistem
a: ",np.linalg.matrix_rank(matriz)) 
print("\n") 
print("determinante: ") 
print("print(np.linalg.det(matriz))=",np.linalg.det(matriz))

Continue navegando