Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701 www.decom.ufop.br/moodle 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? 1 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) 2 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? 3 4 1 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 ] elementos em uma mesma linha da matriz notas = podem ser escritos separados por espaços 8. 7. 10. em branco ou por vírgulas. --> massa(1) ans = 20.6 elementos individuais de -->notas(3) uma matriz são identificados pelo nome da ans = 10. matriz e pelo índice da linha 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= 1562 12 b= 34 56 é uma matriz de dimensão1x4 é uma matriz de dimensão 3x2 e da coluna em que ele ocorre na matriz 5 cria uma matriz 2x4 e atribui essa matriz à variável a --> a = [1,3,5,7; 2,4,6,8 ] a = as linhas da matriz são 1. 3. 5. 7. separadas por ; 2. 4. 6. 8. --> a(1,3) elementos individuais de ans = uma matriz são identificados 5. pelo nome da matriz e pelo índice da linha e da coluna --> a(2,1) em que ele ocorre na matriz ans = 2. 6 --> b = [10;30;50+4] a = 10. 30. 54. --> a(2,1) = b(3,1)+10 a = 1. 3. 5. 7. 64. 4. 6. 8. 7 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 8 2 Seja M a matriz criada pelo seguinte comando: --> M = [1,3;2,4;5,7] É fácil criar uma matriz listando explicitamente seus elementos: elementos: --> M = [1,3;2,4;5,7] Qual é a dimensão da matriz M? 3x2 Qual seria o resultado da execução de da seguinte sequência de comandos Scilab? Scilab? --> x = M(2,1)*3 x = 6 error 21 – Invalid index --> y = M(1,3) --> M(2,1) = M(1,2)+10 M = 1. Mas, e se a matriz contiver centenas ou milhares de elementos? elementos? 2. 1. 13. 5. 3. 4. 7. valor inicial valor final --> X = [1:2:10] incremento X = 1. 3. 5. 7. 9. 9 10 valor inicial Também podemos usar a notação <valorInicial>:<incremento>:<valorFinal> para criar matrizes de mais de uma dimensão: valor final --> A = [1:4] A = 1. 2. 3. --> M = [1:1:3; 10:10:30; 2:2:6] M = 1. 2. 3. 10. 20. 30. 2. 4. 6. 4. --> B = [1:4]*5 B = 5. 10. 15. 20. 11 se o incremento for omitido, ele é considerado igual a 1 multiplicação de matrizes: o valor 5 é visto como uma matriz 1x1 12 3 --> F = [1:3] F = 1. 2. 3. --> H = [F F] H = 1. 2. 3. 1. 2. 3. O valor tensão na fonte é 120V e o valor da resistência interna Rs é 50 Ω. --> G = [1:3]’ G = 1. operador de 2. transposição de matriz 3. --> I = [G G] I = 1. 1. matrizes podem ser criadas a 2. 2. partir de outras 3. 3. matrizes Como podemos construir uma tabela dos possíveis valores para a resistência RL? Os valores para a resistência de carga RL devem variar de 1Ω até 100Ω, de 1 em 1Ω. V = 120 // voltagem da fonte (Volts) RS = 50 // resistência interna (Ohms) RL = [1:100] // resistência de carga(Ohms) 13 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: 14 Todos os operadores aritméticos se aplicam também sobre matrizes: A + B soma/subtração de matrizes A e B devem ser de mesma dimensão A - B I = V/(RS+RL) C * D C / D Como podemos fazer isso? produto/divisão de matrizes: C e D devem ter dimensões (nxm nxm) e (mxp) xp) o resultado é uma matriz de dimensão (nxp) nxp) Veremos mais sobre essas operações futuramente 15 16 4 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) Ia = V ./ (Rs + Rl) // corrente (Amperes) o resultado é uma matriz de mesma dimensão que RL Ia = V ./ (Rs + Rl) // corrente (Amperes) soma o valor de RS a cada elemento de RL 17 P = (Ia .^ 2) .* Rl) // potência (Watts) eleva ao quadrado cada elemento da matriz I 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? Como podemos fazer isso? divide o valor de V por cada elemento da matriz resultante soma o valor de RS a cada elemento de RL 18 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) multiplica cada elemento da matriz resultante pelo elemento correspondente na matriz RL Para encontrar o valor da potência máxima, vamos plotar o gráfico Potência X Resistência de carga 19 20 5 // 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)”) 21 Estude o capítulo 2 do livro: Stephen J. Chapman: Programação em 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: 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 [Pmax,i] = max(P) // potência máxima Rmax = Rl(i) o valor da resistência para a qual a potência é máxima pode ser obtida na posição correspondente na matriz RL 22 a função max,aplicada a uma matriz, retorna dois valores: 1) o valor máximo contido na matriz 2) o índice da posição em que esse valor máximo ocorre na matriz 23 24 6