Aula 02 Variáveis, Matrizes, Gráficos Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701 www.decom.ufop.br/moodle Aula 02 Variáveis, Matrizes, Gráficos
Transferência de carga máxima No circuito abaixo, temos uma fonte de voltagem V=120V, com uma resistência interna Rs=50Ω, suprindo uma carga de resistência RL. Qual é o valor da resistência que resulta na potência máxima fornecida pela fonte para a carga? Qual é a potência fornecida nesse caso?
Transferência de carga máxima Precisamos variar a resistência de carga RL e computar o valor da potência, para a cada valor de RL. A potência fornecida para a resistência de carga é dada pela equação: PL = I2 RL onde I é a corrente fornecida para a carga, calculada, conforme a lei de Ohm, como: I = V/(RS+RL)
Transferência de carga máxima Os valores para a resistência de carga RL devem variar de 1Ω até 100Ω, de 1 em 1Ω. Como podemos construir uma tabela dos possíveis valores para a resistência RL? Como podemos computar o valor da potência para a cada valor de RL?
Matrizes Exemplos: A unidade básica de dados em Scilab é uma matriz. Uma matriz é uma coleção de valores, organizados em linhas e colunas, tal como uma tabela. Exemplos: a = 1 5 6 2 é uma matriz de dimensão1x4 1 2 b = 3 4 é uma matriz de dimensão 3x2 5 6
Matrizes em Scilab --> pesos = [ 23.6 44 78.5 ] pesos = cria uma matriz 1x3, contendo os valores 23.6 44 e 78.5, e atribui essa matriz à variável de nome massa --> pesos = [ 23.6 44 78.5 ] pesos = 23.6 44. 78.5 --> notas = [ 8, 7, 10 ] notas = 8. 7. 10. --> massa(1) ans = 20.6 -->notas(3) ans = 10. elementos em uma mesma linha da matriz podem ser escritos separados por espaços em branco ou por vírgulas. elementos individuais de uma matriz são identificados pelo nome da matriz e pelo índice da linha e da coluna em que ele ocorre na matriz
Matrizes em Scilab --> a = [1,3,5,7; 2,4,6,8 ] a = 1. 3. 5. 7. cria uma matriz 2x4 e atribui essa matriz à variável a --> a = [1,3,5,7; 2,4,6,8 ] a = 1. 3. 5. 7. 2. 4. 6. 8. --> a(1,3) ans = 5. --> a(2,1) 2. as linhas da matriz são separadas por ; elementos individuais de uma matriz são identificados pelo nome da matriz e pelo índice da linha e da coluna em que ele ocorre na matriz
Matrizes em Scilab --> b = [10;30;50+4] a = 10. 30. 54. 1. 3. 5. 7. 64. 4. 6. 8. cria uma matriz 3x1 e atribui essa matriz à variável b um elemento de uma matriz pode ser uma expressão podemos atribuir valores a elementos individuais de uma matriz
Exercício Seja M a matriz criada pelo seguinte comando: Qual é a dimensão da matriz M? Qual seria o resultado da execução de da seguinte sequência de comandos Scilab? --> x = M(2,1)*3 --> y = M(1,3) --> M(2,1) = M(1,2)+10 3x2 x = 6 error 21 – Invalid index M = 1. 3. 13. 4. 5. 7.
Mais comandos para criar Matrizes É fácil criar uma matriz listando explicitamente seus elementos: --> M = [1,3;2,4;5,7] Mas, e se a matriz contiver centenas ou milhares de elementos? --> X = [1:2:10] X = 1. 3. 5. 7. 9. valor inicial valor final incremento
Mais comandos para criar Matrizes Também podemos usar a notação <valorInicial>:<incremento>:<valorFinal> para criar matrizes de mais de uma dimensão: --> M = [1:1:3; 10:10:30; 2:2:6] M = 1. 2. 3. 10. 20. 30. 2. 4. 6.
Mais comandos para criar Matrizes valor inicial valor final --> A = [1:4] A = 1. 2. 3. 4. --> B = [1:4]*5 B = 5. 10. 15. 20. se o incremento for omitido, ele é considerado igual a 1 multiplicação de matrizes: o valor 5 é visto como uma matriz 1x1
Mais comandos para criar Matrizes --> F = [1:3] F = 1. 2. 3. --> G = [1:3]’ G = 1. 2. 3. --> H = [F F] H = 1. 2. 3. 1. 2. 3. --> I = [G G] I = 1. 1. 2. 2. 3. 3. matrizes podem ser criadas a partir de outras matrizes operador de transposição de matriz
Voltando ao nosso problema: Transferência de carga máxima O valor tensão na fonte é 120V e o valor da resistência interna Rs é 50 Ω. Os valores para a resistência de carga RL devem variar de 1Ω até 100Ω, de 1 em 1Ω. Como podemos construir uma tabela dos possíveis valores para a resistência RL? V = 120 // voltagem da fonte (Volts) RS = 50 // resistência interna (Ohms) RL = [1:100] // resistência de carga(Ohms)
Voltando ao nosso problema: Transferência de carga máxima Agora queremos calcular o valor da corrente para cada possível valor da resistência de carga RL, sendo o valor da corrente dado por: I = V/(RS+RL) Como podemos fazer isso?
Operações sobre Matrizes Todos os operadores aritméticos se aplicam também sobre matrizes: A + B A - B C * D C / D Veremos mais sobre essas operações futuramente soma/subtração de matrizes A e B devem ser de mesma dimensão produto/divisão de matrizes: C e D devem ter dimensões (nxm) e (mxp) o resultado é uma matriz de dimensão (nxp)
Voltando ao nosso problema: Transferência de carga máxima No nosso problema, o que queremos é aplicar uma determinada operação a todos os elementos da matriz RL, obtendo uma matriz dos resultados correspondentes: I = V/(RS+RL) Como podemos fazer isso? Ia = V ./ (Rs + Rl) // corrente (Amperes) soma o valor de RS a cada elemento de RL divide o valor de V por cada elemento da matriz resultante
Voltando ao nosso problema: Transferência de carga máxima Ia = V ./ (Rs + Rl) // corrente (Amperes) soma o valor de RS a cada elemento de RL o resultado é uma matriz de mesma dimensão que RL divide o valor de V por cada elemento da matriz resultante Agora queremos calcular a potência na resistência de carga RL para cada possível valor da corrente e da resistência: P = I2 RL Como podemos calcular a matriz de potências?
Voltando ao nosso problema: Transferência de carga máxima P = (Ia .^ 2) .* Rl) // potência (Watts) multiplica cada elemento da matriz resultante pelo elemento correspondente na matriz RL eleva ao quadrado cada elemento da matriz I
Voltando ao nosso problema: Transferência de carga máxima V = 120 // voltagem da fonte (Volts) RS = 50 // resistência interna (Ohms) RL = [1:100] // resistência de carga(Ohms) Ia = V ./ (Rs .+ Rl) // corrente (Amperes) P = (Ia .^ 2) .* Rl) // potência (Watts) Para encontrar o valor da potência máxima, vamos plotar o gráfico Potência X Resistência de carga
Voltando ao nosso problema: Transferência de carga máxima // gráfico da potência versus resistência plot (Rl,P) // resistência interna (Ohms) title(“Potência versus Resistência) xlabel(“Resistência de carga (ohms)”) ylabel(“Potência (watts)”)
Voltando ao nosso problema: Transferência de carga máxima
Voltando ao nosso problema: Transferência de carga máxima Podemos obter o valor da resistência de carga para a qual a potência é máxima inspecionando o gráfico de Potência versus Resistência de carga. Mas podemos também usar funções pre-definidas em Scilab para obter este valor: [Pmax,i] = max(P) // potência máxima Rmax = Rl(i) a função max,aplicada a uma matriz, retorna dois valores: o valor máximo contido na matriz o índice da posição em que esse valor máximo ocorre na matriz o valor da resistência para a qual a potência é máxima pode ser obtida na posição correspondente na matriz RL
Importante Estude o capítulo 2 do livro: Stephen J. Chapman: Programação em MathLab para Engenheiros A seção 2.14 contém um resumo do capítulo e uma relação de operadores e funções pre-definidos em Scilab Procure fazer os exercícios desse capítulo