Baixe o app para aproveitar ainda mais
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))
Compartilhar