Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Matlab 5 - Apostilas - Engenharia Elétrica Part1, Notas de estudo de Eletrotécnica

Apostilas de Engenharia Elétrica sobre o estudo ds Solução de Problemas de Engenharia, Matrizes, Vetores e Escalares, Definindo matrizes no MATLAB, Método Simples, Arquivos MAT e ASCII, Operador dois pontos, Cálculos fundamentais e matrizes especiais.

Tipologia: Notas de estudo

2013

Compartilhado em 28/05/2013

GloboTV
GloboTV 🇧🇷

4.5

(324)

561 documentos

1 / 61

Documentos relacionados


Pré-visualização parcial do texto

Baixe Matlab 5 - Apostilas - Engenharia Elétrica Part1 e outras Notas de estudo em PDF para Eletrotécnica, somente na Docsity! Introdução à Solução de Problemas de Engenharia Faculdade de Engenharia Laboratório de Engenharia Elétrica Programa Prodenge / Sub-Programa Reenge Universidade do Estado do Rio de Janeiro Curso de MATLAB 5.1 2a EDIÇÃO Revista e Ampliadai li Curso de MATLAB I AGRADECIMENTOS Estas notas sobre o uso da versão 5.1 do MATLAB são o resultado do trabalho persistente dos alunos da Faculdade de Engenharia da UERJ, bolsistas de iniciação Tecnológica do Projeto REENGE - Joana Figueiredo Konte, Jorge Luís Pinheiro Teixeira, Pat Evie Alves - e da estagiária Luciana Faletti que se encarregaram de dar corpo à segunda edição de um curso de Introdução à Solução de Problemas de Engenharia usando a metodologia da Profa. Delores M. Etter, autora da obra ‘ Engeneering Problem Solving with MATLAB ’ que inspirou, de perto, a confecção desta apostila. A este grupo entusiasmado de jovens, aderiram outros estagiários do Laboratório de Engenharia Elétrica, como Hélio Justino Mattos Filho. A todos eles os cumprimentos pelo êxito e pela forma como se envolveram de corpo e alma na execução das tarefas. O sucesso obtido na implementação de ambos os cursos não é sem dúvida fruto de uma obra isolada. Dela participaram, com entusiasmo a equipe tecnico- administrativa do Laboratório de Engenharia Elétrica, cujos membros contribuíram com a dedicação que lhes é peculiar, através do suporte e infra-estrutura e o envolvimento direto com os alunos e com a coordenação do projeto. Um muito obrigado à equipe formada pelos funcionários Alberto Avelar Santiago, André Vallim Stachlewski, José Emílio Gomes, Jair Medeiros Júnior, João Elias Souza da Costa, Luiz Roberto Franco Fagundes Filho, Marcos Augusto Mafra, Antônio Marcos Medeiros Corrêa, Sueli Ferreira dos Santos e pela Srta. Carla Aparecida Caldas de Almeida, do curso de Pós- Graduação ‘latu-senso’ em Engenharia Mecatrônica da UERJ. Uma palavra de reconhecimento especial ao diretor Dr. Nival Nunes de Almeida, coordenador geral do REENGE, pelo apoio e pelo incentivo dado à viabilização de inúmeras atividades no âmbito da faculdade como um todo e do LEE em particular. À Profa. Maria Eugênia Mosconi de Golveia, vice-diretora da faculdade de Engenharia uma palavra de gratidão pelo empenho em viabilizar juntamente com o diretor as solicitações de estágio interno no LEE. Ao grupo de colaboradores silenciosos da administração pelo apoio nas atividades no âmbito de suas competências, o obrigado sincero da Orientação do trabalho. Ao CNPq que patrocinou as bolsas que permitiram este trabalho mediante os recursos alocados pela FINEP, o nosso agradecimento. _______________________________ Bernardo Severo da Silva Filho Orientador e chefe do Lab. De Engenharia Elétrica Curso de MATLAB IV 6.2 Manipulação com matrizes 84 Comando rot90 84 Comando fliplr 84 Comando flipud 84 Comando reshape 85 Comando diag 85 Comando triu 86 Comando tril 87 Aplicação à Solução de Problemas: alinhamento de imagens 87 7 GRÁFICOS 91 7.1 Gráficos X-Y 91 Coordenadas retangulares 91 Legendas 91 7.2 Gráficos Polares 92 Coordenadas Polares 92 Transformações retangular/polar 93 Gráficos de barras e degrau 94 7.3 Opções 94 7.4 Gráficos 3D 97 Aplicação à Solução de Problemas: trajetória de um satélite 100 8 SOLUÇÕES DE SISTEMAS DE EQUAÇÕES LINEARES 101 8.1 Interpretação Gráfica 101 8.2 Solução usando operações matriciais 103 Divisão de matrizes 104 Matriz Inversa 104 Aplicação à Solução de Problemas: análise de um circuito elétrico 105 9 INTERPOLAÇÃO E AJUSTE DE CURVAS 106 9.1 Interpolação 106 Interpolação linear 107 Função table1 107 Função table2 109 Comando spline 110 Aplicação à Solução de Problemas: braço robótico 112 Curso de MATLAB V 9.2 Ajuste de curvas 113 Regressão Linear 113 Comando polyfit 114 Comando polyval 115 10 ANÁLISE POLINOMIAL 116 10.1 Avaliação do polinômio 116 Comando polyval 116 Operações Aritméticas 117 Aplicação à Solução de Problemas: balões meteorológicos 118 10.2 Raízes de polinômios 120 11 INTEGRAÇÃO NUMÉRICA E DIFERENCIAÇÃO 122 11.1 Integração Numérica 122 Regra Trapezoidal e Regra de Simpson 122 Comando Quadratura 122 Aplicação à Solução de Problemas: análise de escoamento de um óleo num oleoduto 123 11.2 Diferenciação Numérica 125 Derivação por expressão de diferença 126 Comando diff 127 12 EQUAÇÕES DIFERENCIAIS ORDINÁRIAS 129 12.1 Equações Diferenciais Ordinárias de Primeira Ordem 129 12.2 Método de Runge-Kutta 130 Aproximação de Primeira Ordem (método de Euler) 130 Comando ODE 131 Aplicação à solução de problemas: aceleração de uma turbina UDF numa aeronave 133 12.3 Equações Diferenciais de Ordens Superiores 135 13 FATORAÇÃO E DECOMPOSIÇÃO DE MATRIZES 137 13.1 Autovalores e autovetores 137 Aplicação à solução de problemas: adaptador para redução de ruídos 141 13.2 Decomposição e Fatoração 143 Curso de MATLAB VI Fatoração Triangular 143 Fatoração QR 144 14 PROCESSAMENTO DE SINAIS 146 14.1 Análise no domínio da freqüência 146 14.2 Análise de filtros 149 Função de Transferência Analógica 149 Função de Transferência Digital 151 14.3 Implementação de Filtros Digitais 153 14.4 Projetos de Filtros Digitais 155 Filtros IIR 156 Filtros FIR 157 Aplicação à solução de problemas: filtros para separação de canais 158 15 MATEMÁTICA SIMBÓLICA 161 15.1 Expressões Simbólicas 161 Representações de Expressões Simbólicas no MATLAB 162 15.2 Variáveis Simbólicas 163 15.3 Operações em expressões simbólicas 165 15.4 Operações Algébricas Padrão 166 Operações Avançadas 167 15.5 Funções de Conversão 169 15.6 Derivação e Integração 170 15.7 Transformadas 171 Transformada de Laplace 173 Transformada de Fourier 173 Transformada Z 174 Curso de MATLAB Cap. 1 - Uma Introdução à Solução de Problemas 3 4. SOLUÇÃO MATLAB No próximo capítulo, falaremos sobre os comandos MATLAB. Contudo, da solução você pode ver que os comandos são muito similares às equações que foram usadas no exemplo manual. O sinal de percentagem é usado para anteceder comentários que explicam os comandos MATLAB. % % Este programa calcula e imprime % distância, em linha reta, entre dois pontos. p1 = [1,5]; % ponto 1 inicial p2 = [4,7]; % ponto2 inicial d = sqrt (sum ((p2-p1).^2)) % calcular distância 5. TESTANDO O passo final em nosso processo de solução de problemas é testar a solução. Primeiramente, devemos testar a solução com os dados do exemplo manual, já que calculamos a solução. Quando os comandos MATLAB na solução são executados, o computador mostra a seguinte saída: d = 3.6056 Esta saída coincide com o valor que calculamos no exemplo manual. Se a solução MATLAB não coincidir com o exemplo manual, devemos rever ambas soluções a fim de encontrar o erro. Uma vez que a solução trabalha com o exemplo manual, devemos também testá-la com vários grupos de dados para certificar que a solução é válida para outras séries de dados. Curso de MATLAB Cap. 2 – Matrizes, Vetores e Escalares 4 Capítulo 2 - Matrizes, Vetores e Escalares A capacidade de visualização dos dados é um fator importante na solução de problemas de engenharia. Às vezes, o dado é um simples número como o raio de um círculo. Outras, um grupo de coordenadas x-y-z que representam os quatro vértices de uma pirâmides com uma base triangular no espaço. Podemos representar o exemplos citados usando um tipo especial de estrutura de dados denominada matriz. Matriz é uma tabela de números dispostos em m linhas e n colunas. Assim, um simples número pode ser considerado uma matriz com uma linha e uma coluna, uma coordenada x-y pode ser considerada uma matriz com uma linha e duas colunas, e um grupo de quatro coordenadas x-y-z pode ser considerada uma matriz com quatro linhas e três colunas. Como exemplo, temos: Se uma matriz contiver m linhas e n colunas, então conterá um total de m . n elementos. Cada elemento da matriz é indicado por índices, aij. O primeiro, i, indica a linha, o segundo, j, indica a coluna onde o elemento se encontra. Assim, o elemento a1,2 da matriz B é 3.1. Se o número de linhas e colunas forem iguais, então dizemos que a matriz é uma matriz quadrada. Se a matriz tiver apenas uma linha e uma coluna, podemos dizer que o valor é um escalar, se a matriz contiver apenas uma linha ou uma coluna, ao matriz é chamada vetor-linha ou vetor-coluna, respectivamente. E x e r c í c i o s Responda às seguintes questões sobre esta matriz: 1. Qual é a ordem de G? 2. G é uma matriz quadrada? 3. Dê as referências para todas as posições que contém o valor 0.5. 4. Dê as referências para todas as posições que contém valores negativos. A = [ 3.5] B = [ 1.5 3.1]             − − = 200 011 011 001 C                 −− −− − = 5.05.43.22.1 5.04.25.05.0 5.10.92.87.5 0.21.05.02.8 5.03.25.16.0 G Curso de MATLAB Cap. 2 – Matrizes, Vetores e Escalares 5 Definindo Matrizes no MATLAB Suponha que queiramos agora criar as matrizes A, B e C usando o MATLAB. Há vários métodos de definição de matrizes no MATLAB. Vejamos cada um: Modo mais simples: Nome da matriz = [ a11 a12 a13 …a1n ; a21 a22 a23 … a2n ; … ; am1 am2 am3 … amn ]; Assim, as matrizes A, B e C serão representadas por: A = [ 3.5]; B = [1.5, 3.1]; C = [-1,0,0; 1,1,0; 1,-1,0; 0,0,2]; O nome da matriz deve começar com uma letra e conter no máximo 19 caracteres que podem ser números, letras ou caracter sublinhado, e aparece ao lado esquerdo do sinal de igual. O lado direito contém os dados entre colchetes por ordem de linhas. O ponto-e-vírgula separa as linhas, e os valores das linhas podem estar separados por vírgulas ou por espaços. O valor pode conter um sinal de + ou -, e um ponto decimal, mas não pode conter uma vírgula, como 32,154. Quando definimos uma matriz, o MALTAB imprime o valor da matriz na próxima linha a menos que coloquemos um ponto-e-vírgula depois da definição. Tente entrar com as matrizes A, B e C sem o ponto-e-vírgula. Você também pode definir uma matriz digitando uma cada linha separadamente. Como exemplo, a matriz C: C = [ -1 0 0 1 1 0 1 –1 0 0 0 2]; Se quisermos, por exemplo, definir um vetor-linha F com 10 valores, também podemos fazer: F = [1 52 64 197 42 –42 55 82 22 109] F = [1 52 64 197 42 –42, … 55 82 22 109] Esta forma é muito usada quando a linha de uma matriz é extensa. Podemos terminar uma linha com uma vírgula seguida de três ou mais pontos, e continuar a entrar com os valores restantes na próxima linha da área de trabalho do MATLAB. Curso de MATLAB Cap. 2 – Matrizes, Vetores e Escalares 8 data1 = [0.0,0.0; 0.1 0.2; 0.3 0.6]; x = data1 ( : , 1); y = data1 ( : , 2 ); Os elementos do vetor x correspondem à primeira coluna de data1. O segundo comando cria um vetor y cujos elementos correspondem à segunda coluna da matriz data1. Se quiséssemos criar um vetor z cujos elementos sejam os elementos da primeira linha da matriz data1, devemos fazer: z = data1(1, : ); Se o operador dois pontos for usado na seguinte notação: H = 1 : 8; A matriz H contém os valores 1, 2, 3, 4, 5, 6, 7 e 8. O operador “ : ” entre os dois números inteiros gera todos os inteiros entre os dois números especificados. Se for usado para separar três números, os dois pontos gerarão valores entre o primeiro e terceiro números, usando o segundo número como incremento. A notação abaixo gera um vetor- linha denominado TEMPO que contém os números de 0.0 a 5.0 com incrementos de 0.5: TEMPO = 0.0 : 0.5 : 5.0; O incremento também pode ser um valor negativo como: VALORES = 10 : -1: 0; Os elementos de VALORES são 10, 9, 8, 7, 6, … 0. O operador dois pontos pode também ser usado para selecionar uma sub-matriz de uma outra matriz. Por exemplo, considere a matriz abaixo: C = [-1,0,0;1,1,0; 1,-1,0; 0,0,2]; Se executarmos os comandos: PARTE_1 = C ( : , 2:3); PARTE_2 = C (3:4, 1:2); Definimos as matrizes: PARTE_1 = [ 0 0; 1 0; -1 0; 0 2]; PARTE_2 = [1 –1; 0 0]; Curso de MATLAB Cap. 2 – Matrizes, Vetores e Escalares 9 Observações: • O MATLAB reconhece uma matriz ‘vazia’. Há várias maneiras de gerá-la. Como exemplo, temos: A = [ ] B = 4: -1: 5 • A expressão C ( : ) equivale a uma longa matriz coluna que contém a primeira coluna de C, seguida pela segunda coluna de c e assim por diante. E x e r c í c i o s Determine as ordens e o conteúdo das matrizes abaixo. Use a matriz G como referência. Verifique suas respostas usando o MATLAB. 1. A = G (:, 2); 2. B = G (4, : ); 3. C = [10 : 15]; 4. D = [4:9; 1:6]; 5. E = [-5,5]; 6. F = [0.0:0.1:1.0]; 7. T1 = G ( 4 : 5 ,1:3); 8. T2 = G (1: 2 : 5, : ); Solução:                 −− −− − = 5,05,43,22,1 5,04,25,05,0 5,10,92,87,5 0,21,05,02,8 5,03,25,16,0 G Curso de MATLAB Cap. 2 – Matrizes, Vetores e Escalares 10 Comando Input Você pode entrar com os valores da matriz, via teclado, utilizando o comando input que mostra um texto e então espera por uma entrada. Considere o comando: z = input ( ‘Valores de z: ’); Quando este comando é executado, o texto “ Valores de z: ” é mostrado na tela. O usuário pode entrar com uma expressão como [ 5.1 6.3 -18.0] o qual especifica valores para z. Já que o comando input termina com um ponto-e-vírgula, os valores de z não são imprimidos quando o comando é executado. Imprimindo Matrizes O modo mais simples de imprimir uma matriz é entrar com seu nome. O nome da matriz é repetido, os valores da matriz serão imprimidos na próxima linha. Existem vários comandos que podem ser usados para alterar a saída a ser imprimida. Comando format Suponha os comandos abaixo: » a = [1 2 3]; » T = [ 1.1 2.4 3.7]; » c = 2*a » U = 2*T c = U = 2 4 6 2.2000 4.8000 7.4000 Por definição, se o elemento de uma matriz for um número inteiro, o MATLAB apresenta o resultado como número inteiro. Se o elemento for um número real, o MATLAB apresenta-o com cinco dígitos significativos, ou seja, quatro dígitos à direita do ponto decimal. Podemos alterar o formato numérico utilizando o comando format. Exemplo: Seja uma variável A que armazene a raiz quadrada de 2. » A = sqrt(2) De acordo com o formato numérico escolhido, a variável A pode estar apresentada sob a forma: Curso de MATLAB Cap. 2 – Matrizes, Vetores e Escalares 13 Tempo, s Temperatura, °C 0 54.2 1 58.5 2 63.8 3 64.2 4 67.3 5 71.5 6 88.5 7 90.1 8 90.6 9 89.5 10 90.4 Suponha também que os dados relativos ao tempo estejam armazenados em um vetor denominado x, e que os relativos à temperatura estejam armazenados em um vetor denominado y. Para plotar estes pontos, simplesmente usamos o comando plot , onde x e y são vetores-linha ou vetores-coluna. plot (x, y) O gráfico é gerado automaticamente. A prática mostra que um bom gráfico deve incluir unidades, título e uma breve descrição. Logo, podemos aperfeiçoá-lo como os seguintes comandos: Title Adiciona um título ao gráfico. Xlabel Inclui uma descrição na direção do eixo-x Y label Inclui uma descrição na direção do eixo-y Grid Adiciona linhas de grade ao gráfico Whitebg Muda a cor de fundo do gráfico para branco. Assim, plot (x,y), … title (‘Laboratório de Física - Experiência 1’), … xlabel (‘Tempo, s’), … ylabel (‘Temperatura, graus Celsius’), … grid whitebg Curso de MATLAB Cap. 2 – Matrizes, Vetores e Escalares 14 Os três pontos usados depois dos quatro comandos são usados para que o MATLAB execute os seis comandos em uma única vez. Para aprender mais opções para gerar gráficos x-y e outros tipos de gráficos, veja o capítulo 7. Aplicação à Solução de Problemas: Análise de Dados de um Túnel de Vento Um túnel de vento é uma câmara de teste construída para produzir diferentes velocidades de vento, ou números Mach (razão entre a velocidade do vento e a velocidade do som). Modelos em escala precisa de aeronaves podem ser equipados sobre suportes de medições de força na câmara de teste, e as medidas das forças sobre o modelo podem ser feitas para diferentes velocidades de vento e ângulos do modelo relativo à direção da velocidade. Ao final de um longo teste de túnel de vento, muitos grupos de dados são coletados e podem ser usados para determinar o lift, drag e outras características da performance aerodinâmica do novo modelo para várias velocidades de operação e posições. Usamos esta aplicação várias vezes em nossos problemas ao longo do texto. Nesta seção, supomos que os dados coletados do teste do túnel de vento foram armazenados em um arquivo ASCII denominado vento1.dat. Gostaríamos de visualizar o gráfico dos dados para verificar se os sensores sobre o modelo em escala parecem trabalhar adequadamente. Suponhamos que cada linha do arquivo contém um ângulo de vôo em graus e um correspondente coeficiente de lift. Para este exemplo, usamos os seguintes dados: Curso de MATLAB Cap. 2 – Matrizes, Vetores e Escalares 15 Ângulo de Vôo (graus) -4 -2 0 2 4 6 8 10 12 14 15 Coeficiente de Sustentação -0,202 -0,050 0,108 0,264 0,421 0,573 0,727 0,880 1,027 1,150 1,195 Ângulo de Vôo (graus) 17 18 19 20 21 Coeficiente de Sustentação 1,225 1,250 1,245 1,221 1,177 Mesmo que pareça simples ler e plotar os dados usando o MATLAB, usaremos a metodologia descrita no capítulo anterior para mostrar é igualmente simples o processo que nos permite estruturar nossas idéias no desenvolvimento na solução de problemas. 1. ENUNCIADO DO PROBLEMA Gerar um gráfico do ângulo de vôo e coeficiente de lift. 2. DESCRIÇÃO ENTRADA/SAÍDA Sempre que for possível, usaremos um diagrama I/O, conforme mostrado na figura a seguir. Neste exemplo, lemos as informações contidas em um arquivo e usamos o MATLAB para plotá-las. O diagrama contém um símbolo de um disquete para representar o arquivo que é a entrada (observe que colocamos o nome do arquivo abaixo do símbolo) e um símbolo de um gráfico para representar a saída, que é o gráfico dos dados. 3. EXEMPLO MANUAL Apesar de ser apenas um gráfico, devemos estudar superficialmente uma pequena parte dos dados e determinar, grosseiramente, como seria o gráfico correspondente. Neste exemplo, se examinarmos os dados podemos perceber que inicialmente o coeficiente de lift é –0,2 e que o mesmo cresce até alcançar um máximo de 1,25 para um ângulo de 180 . Se o gráfico que obtivermos for muito diferente do que esperávamos (por exemplo, valor inicial 0,7 e um máximo de 1,177 para um ângulo de 21 graus), então devemos novamente checar os dados e os comandos MATLAB usados. 4. SOLUÇÃO MATLAB 5. TESTANDO vento1.dat Diagrama I/O Curso de MATLAB Cap. 3 – Cálculos com Matrizes 18 3.2 Operações entre Escalares Cálculos aritméticos são identificados usando expressões. Uma expressão pode ser tão simples como uma constante, ou pode ter matrizes e constantes combinadas com operações aritméticas. Nesta seção, discutiremos operações envolvendo somente escalares. Na seção posterior, estendemos as operações incluindo operações elemento por elemento entre escalares e matrizes ou entre duas matrizes. As operações aritméticas entre dois escalares são mostradas na tabela 3.1. Uma expressão pode ser resolvida e armazenada em uma variável específica, como no comando seguinte, o qual especifica que os valores em a e b serão adicionados, e a soma armazenada em uma variável x: x = a + b Este comando deve ser interpretado como o valor em b adicionado ao valor em a, e a soma é armazenado em x. Se nós interpretamos os comandos desta forma, então nós preocupamos pelo seguinte comando MATLAB válido. count = count + 1 É óbvio que esta instrução não é um comando algébrico válido, mas o MATLAB explica que 1 é adicionado ao valor em count, e o resultado será armazenado nesta variável. Ou seja, o valor em count será acrescido de 1 (ou incrementado por 1). É importante reconhecer que uma variável pode armazenar somente um valor por vez. Por exemplo, suponha que as seguintes instruções serão executadas seguidamente; Time = 0.0 Time = 5.0 O valor 0.0 é armazenado na variável time quando a primeira instrução é executado e então substituído pelo valor 5.0 quando a segunda instrução é executada. Quando você entra com uma expressão sem especificar uma variável para armazenar o resultado, o mesmo é automaticamente armazenado em uma variável denominada ans. Cada vez que um novo valor é armazenado em ans, o valor anterior é perdido. Curso de MATLAB Cap. 3 – Cálculos com Matrizes 19 Tabela 3.1 – Operações aritméticas entre dois escalares Operação Forma Algébrica MATLAB Adição a + b a + b Subtração a - b a - b Multiplicação a x b a*b Divisão Direita a b a/b Divisão Esquerda b a a\b Exponenciação ab a^b Hierarquia em Operações Aritméticas Sabendo que várias operações pode ser combinadas em uma simples expressão aritmética, é importante conhecer a ordem nas quais as operações serão executadas. A tabela 3.2 contém a ordem de prioridade das operações aritméticas no MATLAB. Note que esta prioridade também segue a prioridade algébrica padrão. Tabela 3.2 Hierarquia em operações aritméticas Prioridade Operação 1 Parênteses 2 Exponenciação, esquerda à direita 3 Multiplicação e Divisão, esquerda à direita 4 Adição e Subtração, esquerda à direita Suponha que queremos calcular a área de um trapézio, e também suponha que a variável base contenha o comprimento da base e que altura_1 e altura_2 contenham as duas alturas. A área de um trapézio pode ser calculada usando o seguinte enunciado: area = 0.5*h*(B + b); Suponha que omitamos os parênteses: area = 0.5*altura*B + b; Este enunciado seria executado como se fosse o enunciado a seguir: area = (0.5*altura*B) + b; Note que embora a resposta incorreta tenha sido calculada, não há mensagens de erro imprimidas alertando-nos quanto ao erro. Portanto, é importante estar cauteloso quando convertemos equações para comandos do MATLAB. Adicionar parênteses extras é uma maneira Curso de MATLAB Cap. 3 – Cálculos com Matrizes 20 fácil para ter certeza que os cálculos são feitos na ordem que você quer. Se uma expressão é longa, divida-a em várias expressões. Por exemplo, considere a seguinte equação: f = ___x3 - 2x2 + 6,3___ x2 + 0,5005x – 3,14 O valor de f poderia ser calculado usando os seguintes comandos, onde x é um escalar: numerador = x^3 - 2*x^2 + x + 6.3 denominador = x^2 + 0.5005*x - 3.14 f = numerador/ denominador É melhor usar várias equações que são mais fáceis de compreender que apenas uma, que requer maior cuidado na hora de imaginar a ordem das operações. E x e r c í c i o s Dê os seguintes comandos do MATLAB para calcular os seguintes valores. Suponha que as variáveis nas equações são escalares e tenham valores determinados. 1. Coeficiente de fricção entre um pneu e o pavimento: Fricção = __v2__ 30s 2. Fator de correção em cálculo de pressão: fator = 1 + _b_ + _c_ v v2 3. Distância entre dois pontos: Slope = y2 - y1 x2 - x1 4. Resistência de um circuito paralelo: resistência = 1 _ 1_ + 1 + 1 _ r1 r2 r3 5. Perda de pressão de um cano de fricção perda = f . p. 1 . v2 d 2 Curso de MATLAB Cap. 3 – Cálculos com Matrizes 23 Então, C conterá os seguintes valores: C = [ 4 15 30] O MATLAB tem dois operadores de divisão – uma divisão que usa o símbolo “/”e outra que usa o símbolo “ \ ”. O comando para divisão direita: C = A./B; Irá gerar um novo vetor no qual cada elemento de A é dividido pelo elemento correspondente de B. Assim, C conterá os seguintes valores: C = [1 1.667 1.2] O comando para divisão esquerda: C = A.\B Irá gerar um novo vetor no qual cada elemento é o elemento correspondente de B dividido pelo elemento correspondente de A. Então, C conterá os seguintes valores: C = [1 0.6 0.833] A exponenciação de conjunto também é uma operação elemento por elemento. Por exemplo, usamos os mesmos valores para A e B, considere os comandos: C = A.^2; D = A.^B; Os vetores C e D serão os seguintes: C = [4 25 36] D = [4 125 7776] A operação também é válida para uma base escalar e um expoente vetor, como o exemplo a seguir: C = 3.0. ^A; que gera um vetor com os seguintes valores; C = [9 243 729] Este vetor poderia também ser calculado com a seguinte instrução: C = (3).^A; Curso de MATLAB Cap. 3 – Cálculos com Matrizes 24 Contudo, a instrução a seguir é incorreta: C = 3.^A; O MATLAB supõe que o ponto é parte da constante 3, e então fazer uma exponenciação matricial, que discutiremos no capítulo 6. Se inserirmos um espaço antes do ponto, como se segue: C = 3 .^A; Então, o comando tentaria fazer a exponenciação elemento por elemento conforme desejávamos. Estes exemplos indicam que devemos ter cuidado quando especificarmos operações de conjuntos. Se não tiver certeza que o que escreveu é a expressão correta, sempre teste-a com simples exemplos como aqueles que usamos. d = [1:5; -1: -1: -5]; z = ones(2,5) s = d – z p = d.*s sq = d.^3; Os valores destas matrizes são mostrados a seguir: E x e r c í c i o s Dê os valores no vetor C depois execute os seguintes enunciados, onde A e B contém os valores mostrados. Cheque suas respostas usando o MATLAB. A = [2 -1 5 0] B = [3 2 -1 4] 1. C = A – B; 2. C = B + A - 3; 3. C = 2*A + A.^B;       −−−−− = 54321 54321 d       −−−−− = 65432 43210 s       −−−−− = 125642781 125642781 sq       = 11111 11111 z       = 30201262 2012620 p Curso de MATLAB Cap. 3 – Cálculos com Matrizes 25 4. C = B./ A; 5. C = B.\A; 6. C = A.^B; 7. C = (2).^B + A; 8. C = 2*B/3.0.*A; Solução de Problemas Aplicados à Engenharia: Ecos em Sinais de Comunicação Uma interessante pesquisa está sendo feita atualmente para desenvolver sistemas de computadores que respondam a comandos verbais. O projeto do tal sistema supõe que o microfone colhe o comando de voz e tem uma representação nítida da fala. Infelizmente, sensores como os microfones apresentam distorções, denominadas ruído. Os sistemas com comunicações duas vias também raramente tem ecos que são inadvertidamente introduzidos pela instrumentação. Por essa razão, um sistema reconhecedor de voz deve ser capaz de executar algum processamento do sinal de voz para remover algumas das distorções e componentes indesejáveis, tal como os ecos, tentando antes reconhecer as palavras. Como forma de testar um programa que foi projetado para remover ecos, devemos estar aptos a gerar um sinal digital e adicionar ecos ao mesmo. Podemos então avaliar a performance do programa que é suposta para remover os ecos. Nesta seção, definimos sinais digitais, e então desenvolveremos um programa MATLAB para adicionar ecos a um sinal digital. Sinais Digitais Um sinal é uma função (normalmente em relação ao tempo) que representa informação. Esta informação ou dado são coletados com um sensor. Alguns dos mais comuns tipos de sensores são microfones, que medem acústica ou dados sonoros (como a fala); sismômetro, que mede intensidade de tremor de terra; fotocélulas, que medem a intensidade da luz; termistores, o qual medem a temperatura; e osciloscópios, que medem tensões. Os sensores são normalmente conectados à outra peça da instrumentação chamada conversor analógico-digital (A/D), que amostra o sinal periodicamente e grava o tempo e os valores do sinal que possam ser armazenados em um arquivo de dados. O sinal original é normalmente uma função contínua (ou analógica); a seqüência de valores coletados do sinal original é denominada sinal digital. A figura 3.1 contém um exemplo de sinal analógico coletado de um sinal contínuo. O sinal analógico é composto de um grupo de coordenadas x-y e assim poderiam facilmente ser armazenadas em um arquivo de dados, e então ler um programa MATLAB. Quando plotamos um sinal analógico, geralmente ligamos os pontos com segmentos de reta em vez de plotar apenas os pontos. Curso de MATLAB Cap. 3 – Cálculos com Matrizes 28 3. EXEMPLO MANUAL Para um exemplo manual, usamos os três primeiros valores do sinal original: Tempo (s) Valor do sinal 0,0 0,0 0,1 0,5 0,2 1,0 Os ecos específicos então tem os seguintes valores (não-nulos): Tempo,s Valor do sinal 2,0 (0,5) . (0,0) = 0,0 2,1 (0,5) . (0,5) = 0,25 2,2 (0,5) . (1,0) = 0,5 Tempo,s Valor do sinal 4,0 (- 0,3) . (0,0) = 0,0 4,1 (- 0,3) . (0,5) = - 0,15 4,2 (- 0,3) . (1,0) = - 0,3 Tempo,s Valor do sinal 2,0 (0,1) . (0,0) = 0,0 2,1 (0,1) . (0,5) = 0,05 2,2 (0,1) . (1,0) = 0,1 A soma do sinal original mais os três ecos são mostrados na figura 3.5. 0,5 -0,3 0,1 atraso 2s atraso 4s atraso7,5s [sn] eco.mat [gn] Figura 3.4 – Diagrama entrada / saída Curso de MATLAB Cap. 3 – Cálculos com Matrizes 29 3.4 Funções Elementares As expressões aritméticas raramente requerem outros cálculos que não sejam a adição, subtração, multiplicação, divisão, e exponenciação. Por exemplo, muitas expressões requerem o uso de logaritmos, exponenciais, e funções trigonométricas. O MATLAB nos permite usar funções para executar estes tipos de cálculos em vez de nos exigirem calculá-los usando operações aritméticas básicas. Por exemplo, se quisermos calcular o seno de um ângulo e armazenar o resultado em b, podemos usar o seguinte comando: b = sin(angle); A função sin supõe que o argumento está em radianos. Se o argumento contém um valor em graus, podemos convertê-lo de graus para radianos dentro da função referência: b = sin (angle*pi/180); Poderíamos também fazer a conversão em comandos separados: angle_radians = angle*pi/180; b = sin(angle_radians); Estes comandos são válidos se angle é um escalar ou se angle é uma matriz. Se angle for uma matriz, então a função será aplicada elemento por elemento aos valores na matriz. Agora que já vimos vários exemplos de funções, iniciaremos uma revisão das regras relativa às funções. Uma função é uma referência que representa uma matriz. Os argumentos ou parâmetros da função estão contidos em parênteses seguindo do nome da função. Uma função pode não conter argumentos, um argumento ou muitos argumentos, dependendo de sua definição. Por exemplo, pi é uma função que não tem argumento; quando usamos a função referência pi, o valor F igura 3.5 – S inal O riginal m ais os três ecos. Curso de MATLAB Cap. 3 – Cálculos com Matrizes 30 para pi automaticamente substitui a função referência. Se uma função contém mais que um argumentos, é muito importante dar os argumentos em ordem correta. Algumas funções também exigem que os argumentos estejam unidades específicas. Por exemplo, as funções trigonométricas supõem que os argumentos estão em radianos. No MATLAB, algumas funções usam o número de argumentos para determinar a saída da função. Por exemplo, a função zeros pode ter um ou dois argumentos, pelos quais determinamos a saída. Uma função referência não pode ser usada ao lado esquerdo de um sinal de igualdade, desde que este represente um valore e não uma variável. Funções podem aparecer à direita de um sinal de igualdade e em expressões. Uma função de referência pode também ser parte do argumento de uma outra função de referência. Por exemplo, o seguinte comando calcula o logaritmo do valor absoluto de x: log_x = log(abs(x)) Quando uma função é usada para calcular o argumento de uma outra função, tenha certeza de fechar o argumento de cada função em seu próprio grupo de parênteses. Esta acomodação da função é também chamada composição de funções. Nomes de funções devem estar em letras minúsculas a menos que o “case sensitivy” esteja desativado. Agora discutiremos várias categorias de funções que são freqüentemente usadas em cálculos de engenharia. Outras funções serão apresentadas no decorrer dos capítulos tão logo debatermos tópicos relevantes. Funções Matemáticas Elementares As funções matemáticas elementares incluem funções para executar um número de cálculos comuns como o cálculo de valor absoluto e a raiz quadrada. Além disso, também incluímos um grupo de funções usadas em arredondamentos. Mostraremos a seguir uma lista destas funções com uma breve descrição: abs (x) Calcula o valor absoluto de x. sqrt(x) Calcula a raiz quadrada de x. round(x) Arredonda o valor de x para o inteiro mais próximo. fix(x) Arredonda o valor de x para o inteiro mais próximo de zero. floor(x) Arredonda o valor de x para o inteiro mais próximo de - ∞ ceil(x) Arredonda o valor de x para o inteiro mais próximo de ∞ sign(x) Se x é menor que zero, a função retorna ao valor – 1; se x for igual a zero, retorna ao valor zero; caso contrário, a função retorna ao valor 1. Rem(x,y) Retorna o resto da divisão x/y. Por exemplo, rem (25,4) é 1, e rem (100,21) é 16. Exp(x) Esta função retorna ao valor de ex, onde e é a base para logaritmo natural Curso de MATLAB Cap. 3 – Cálculos com Matrizes 33 r = [0 1.4 pi]; a = circum (r ); Os elementos da matriz A corresponderão as circunferências de círculos de raios 0, 1,4 e π, respectivamente. Para esta função também são válidos os comandos: a = 5.6; disp (circum(a)) c = [1.2 3; 5 2.3]; circum ( c) ; Assim, circum passa a ser uma função MATLAB assim como ones, sin e outras. A parte comentada no arquivo circum.m é usada quando digitarmos help circum no prompt do MATLAB. Há algumas regras para escrever uma função de arquivo M: • A função deve começar com uma linha contendo a palavra function, seguida pelo argumento de saída, um sinal de igual, e o nome da função. Os argumentos para a função devem estar entre parênteses. Esta linha define os argumentos de entrada e saída; • As primeiras linhas devem ser comentários porque serão exibidas quando o menu help for usado juntamente com o nome da função , como help circum; • A única informação retornada da função é contida nos argumentos de saída, que são, obviamente, matrizes. Verificar se a função inclui um comando que assegure um valor ao argumento de saída. • Uma função que possui mais de uma variável de saída como por exemplo: function [ dist, vel, acel] = motion (x) Deve apresentar as variáveis de saída dentro de colchetes. Além disso, todos os valores devem ser calculados dentro da função. • Uma função que tenha múltiplos argumentos de entrada deve listar os argumentos no comando function, como mostramos no exemplo a seguir, que tem dois argumentos de entrada: function error = mse (w,d) • As variáveis especiais nargin e nargout podem ser usadas para determinar o número de argumentos de entrada passadas para uma função e o número de argumentos de saída solicitados quando a função é chamada. Curso de MATLAB Cap. 3 – Cálculos com Matrizes 34 Solução de Problemas Aplicados à Engenharia: Sinais de Sonar O estudo do sonar (sound navigation and ranging) inclui a geração, transmissão, e recepção de energia sonora na água. Dentre as aplicações destacamos: mapeamento geológico, medidas de sinal biológico, navegação submarina e exploração mineral. Um sistema sonar ativo transmite um sinal que é normalmente um sinal senoidal de freqüência conhecida. As reflexões ou os ecos do sinal são recebidos e analisados para prover informações sobre o meio envolvente. Um sistema sonar passivo não transmite sinais mas coleta-os de sensores e os analisa baseado em suas freqüências. Nesta seção, descreveremos as senóides, já que é um sinal básico usando em sistemas sonar. Depois, desenvolveremos um programa MATLAB para gerar um sinal sonar. Geração de um Sinal Senoidal Uma senóide é uma função seno escrita em função do tempo: g(t) = sen (2πft) onde f é a freqüência da senóide em ciclos por segundo, ou Hertz(Hz). Se a freqüência de uma senóide for 5 HZ, teremos: g(t) = sen (2π5t) = sen (10πt) Então haverá cinco ciclos da senóide em um segundo, ou seja, a freqüência de uma senóide é 5 HZ. O período P de uma senóide é o intervalo de tempo que corresponde a um ciclo; portanto, o período desta senóide é 0,2 segundos. A relação entre período e freqüência é dada por f = 1/ P onde f é a freqüência em Hz e P é o período em segundos. Se a senóide é multiplicada por um escalar A, a equação pode ser escrita nesta forma: g(t) = Asen (2πft) O escalar é também chamado de amplitude da senóide. Uma senóide com um ângulo de fase φ em radianos pode ser escrita como: g(t) = Asen (2πft + φ ) Se o ângulo de fase for igual a π/2 radianos, a senóide poderá ser escrita sob termos de uma função seno ou cosseno, e pode ou não incluir um ângulo de fase. Curso de MATLAB Cap. 3 – Cálculos com Matrizes 35 Gerando um sinal sonar Conforme já dito, um dos tipos de sinais usados em sistemas de sonar é um sinal senoidal. As senóides podem ser representadas pela equação: onde : E é a energia transmitida, PD é a duração do pulso em segundos, fc é a freqüência em Hertz. Duração de um sinal sonar podem alcançar de uma fração de milisegundos a alguns segundos; e as freqüências, de poucas centenas de Hz a dezenas de KHz dependendo do sistema e do alcance de operação desejado. Escreva um programa MATLAB que permita ao usuário entrar com valores de E, PD, e fc para gerar um sinal sonar. Armazene os valores do sinal em um arquivo MAT denominado sonar.mat. A amostragem do sinal deve cobrir a duração do pulso e conter 10 amostras de cada período de x(t). Além disso, adicione um período de 200 pontos de silêncio depois do pulso. 1. ENUNCIADO DO PROBLEMA Escreva um programa para gerar um sinal sonar que contenha 10 amostras de cada período de uma senóide específica, cobrindo uma duração de tempo determinada. 2. DESCRIÇÃO ENTRADA/SAÍDA Os valores de E (energia transmitida em joules), PD (duração do pulso em segundos), e fc (freqüência em Hz) são os valores de entrada. A saída é um arquivo denominado sonar.mat, que contém os valores de tempo e sinal para a duração do pulso sonar, como mostramos na figura 3.7. Também plotamos o sinal sonar. 3. EXEMPLO MANUAL     ≤≤= tesinsdemaisospara PDtfc PD E ts tan0 0),2cos( 2 )( π sonar.mat Curso de MATLAB Cap. 3 – Cálculos com Matrizes 38 Conversão - retangular a polar - polar a retangular a = r cos θ b = r sen θ Se x é um número complexo, então o módulo e a fase podem ser calculados com os seguintes comandos: r = abs (x); theta = angle (x); Para calcular o número complexo usando módulo e fase determinados, usamos o comando: y = r*exp (i*theta); Podemos calcular a parte real e a parte imaginária de um complexo com os comandos: a = real (x); b = imag (x); Para calcular o complexo com partes real e imaginária específicas, usamos: y = a + i*b; E x e r c í c i o s Converter os números complexos nos problemas abaixo. Verifique suas respostas usando o MATLAB. 1. 3 – i2 2. –i 3. –2 4. 0,5 + i a b tan bar 1 22 −=θ += Curso de MATLAB Cap. 3 – Cálculos com Matrizes 39 Converter os valores abaixo para forma retangular. Verifique suas respostas usando as funções MATLAB. 5. e i 6. e iπ0,75 7. 0,5 e i2,3 8. 3,5ei3π Curso de MATLAB Cap. 4 – Controle de Fluxo 40 Capítulo 4 - Controle de Fluxo 4.1 Operadores Lógicos e Relacionais Operadores Relacionais O MATLAB tem operadores relacionais que podem ser usados para comparar duas matrizes de mesma ordem ou para comparar uma matriz e um escalar, como os mostrados a seguir: Operador Descrição < Menor que <= Menor ou igual a > Maior que >= Maior ou igual a = = Igual a (no sentido de condição) ~ = Não igual a A finalidade dos operadores é fornecer respostas a perguntas do tipo falso/verdadeiro. Assim, se a comparação for verdadeira, atribui-se o valor 1; se for falsa, o valor 0. Considere a expressão lógica a seguir: a < b Se a e b forem escalares, então o valor da expressão será 1 (verdadeira) se a for menor que b; caso contrário, a expressão será 0 (falsa). Se a e b forem vetores com os valores a seguir: a = [ 2 4 6] b = [ 3 5 1] Então, o valor de a < b será o vetor [1 1 0], enquanto o valor de a ~ = b será [1 1 1]. Operadores Lógicos Podemos combinar expressões usando os operadores lógicos do MATLAB. Os operadores são representados pelos seguintes símbolos. Curso de MATLAB Cap. 4 – Controle de Fluxo 43 Novamente, suponha que a e b sejam escalares. Então, se a < 50 aumentaremos count por 1 e adicionaremos a à sum. Se b > a, então b será igual a zero. Se a não for menor que 50, então pula-se diretamente para o segundo end. Se a e nem b forem escalares, então b é maior que a somente se cada par de elementos correspondentes de a e b são valores nos quais b > a. Se a ou b é um escalar, então a matriz é comparada ao escalar. Instrução Else Esta instrução permite que executemos um comando se a expressão lógica é verdadeira e um diferente comando se a expressão é falsa. A forma geral do comando if combinada à instrução else é mostrada a seguir: if expressão grupo de comandos A else grupo de comandos B end Se a expressão lógica é verdadeira, então o grupo de comandos A é executado. Caso contrário, o grupo de comandos B é executado. Como exemplo, suponha que um táxi esteja passando entre dois edifícios. Considere que a variável d contenha a distância do veículo ao edifício mais próximo. Se o carro estiver a 10 metros do edifício, a velocidade é calculada usando a seguinte equação: velocidade = 0,425 + 0,00175d2 Se o táxi estiver a uma distância maior que 10 metros, use a equação a seguir: velocidade = 0,625 + 0,12d – 0,00025d2 Calculamos a velocidade correta com estes comandos: if d < = 1 0 velocidade = 0.425 + 0.00175*d^2 else velocidade = 0.625 + 0.12d – 0.00025*d^2 end Quando há muitas alternativas a serem executadas, pode ser mais difícil determinar quais expressões lógicas devam ser verdadeiras (ou falsas) para executar cada grupo de comandos. Neste caso, a cláusula elseif é freqüentemente usada para simplificar o programa lógico: Curso de MATLAB Cap. 4 – Controle de Fluxo 44 if expressão 1 grupo de comandos A elseif expressão 2 grupo de comandos B elseif expressão 3 grupo de comandos C end Se a expressão 1 for verdadeira, somente o grupo de comandos A é executado. Se a expressão 1 for falsa e a expressão 2 for verdadeira, então somente o segundo grupo de comandos é executado. Se as expressões 1 e 2 forem falsas e a expressão 3 for verdadeira, então somente o grupo de comandos C é executado. Se mais de uma expressão lógica for verdadeira, a primeira que for verdadeira determina qual grupo de comandos será executado. Se nenhuma das expressões lógicas forem verdadeiras, então nenhum dos comandos dentro da estrutura if é executado. Else e elseif podem ser combinadas dentro de uma estrutura if-else-end, como mostramos a seguir: if expressão 1 grupo de comandos A elseif expressão 2 grupo de comandos B elseif expressão 3 grupo de comandos C else grupo de comandos D end Se nenhuma das expressões lógicas forem verdadeiras, então o grupo de comandos D é executado. E x e r c í c i o s Nos problemas 1 a 7, dê os comandos MATLAB necessários para executar os passos indicados. Suponha que as variáveis são escalares. 1. Se time é maior que 50, então incremente-a por 1. 2. Quando a raiz quadrada de poly for menor que 0,001, imprima o valor de poly; 3. Se a diferença entre volt_1 e volt_2 for maior que 2, imprimir os valores de volt_1 e volt_2; 4. Se o valor de den for menor que 0, 003; atribua zero a result; caso contrário, atribua a result num dividido por dez; Curso de MATLAB Cap. 4 – Controle de Fluxo 45 5. Se o logaritmo natural de x for maior ou igual a 10, atribua zero a time e incremente-o por count; 6. Se dist for maior que 50 e time for maior que 10, incremente time por 2; caso contrário, incremente time por 5. 7. Se dist for maior ou igual a 100, incremente time por 10. Se dist estiver entre 50 e 100, incremente time por 1. Caso contrário incremente time por 0,5. 4.3 Loop FOR O MATLAB contém dois comandos para gerar loops, o comando for e o comando while. Nesta seção, discutiremos o comando for, e a seção 4.4 discutiremos o comando while. O comando for tem a estrutura a seguir: for variável = expressão Grupo de comandos A end Os comandos entre as instruções for e end são executados uma vez para cada coluna da expressão matricial. A cada iteração, a variável é atribuída para a próxima coluna da matriz, isto é, durante o i-ésimo ciclo do loop, temos que variável = expressão matricial (: , i ). Veja o exemplo a seguir: Suponha que temos um grupo de valores que representam a distância de um táxi da torre mais próxima. Queremos gerar um vetor que contenha as respectivas velocidades. Se o táxi está a 10 metros do edifício, usamos a equação: velocidade = 0,425 + 0,00175d2 Se o táxi estiver a uma distância maior que 10 metros, use a equação a seguir: velocidade = 0,625 + 0,12d – 0,00025d2 Como a escolha da equação da velocidade depende do valor de d, devemos determinar separadamente d(1), d(2), e assim por diante. Contudo, não queremos o mesmo para calcular velocidade(1), velocidade(2) e assim por diante. Logo, usaremos um loop, com a variável usada como subscrito. Na primeira solução, supomos que existiam 25 elementos no vetor d.. Curso de MATLAB Cap. 4 – Controle de Fluxo 48 A fibra ótica é uma fibra de vidro muito fina. Se os extremos das fibras são polidos e o arranjo espacial é o mesmo em ambos extremos (um feixe coerente), a fibra pode ser usada para transmitir uma imagem, e o feixe é chamado condutor de imagem. Se as fibras não tem o mesmo arranjo para ambos extremos (feixe incoerente), a luz é transmitida em vez da imagem, e por esta razão é chamada guia de luz. Por causa da flexibilidade das fibras óticas, as guias de luz e condutores de imagens são usados em instrumentos projetados para permitir a observação visual de objetos ou áreas que de outro modo seriam inacessíveis. Por exemplo, um endoscópio é um instrumento usado por físicos para examinar o interior do corpo de um paciente com somente um pequeno corte. Um endoscópio usa uma fibra ótica para transmitir a luz necessária dentro do corpo de um paciente. As fibras óticas podem ser usadas para transmitir feixes de luz LASER, o qual pode ser usado para desobstruir artérias, quebrar pedras nos rins, e limpar cataratas. Este fenômeno de reflexão total interna origina-se da lei de Snell e depende unicamente dos índices de refração para os material considerados para guias de luz. Um guia de luz é composto de dois materiais  o núcleo central e o material que o envolve, denominado de blindagem. O material que compõe o núcleo tem o índice de refração mais alto que o meio que o envolve. Quando a luz incide em uma interface entre dois meios com índices de refração diferentes, parte dela é refletida a outra parte é refratada. A quantidade de luz refratada depende dos índices de refração dos materiais e o ângulo de incidência da luz. Se a luz incidente na interface entre dois meios provém de um material com maior índice de refração, então parte da luz atravessa a interface. O ângulo de incidência onde a luz é totalmente refletida pela superfície é chamado de ângulo crítico θc. Como o ângulo crítico depende dos índices de refração de dois materiais, podemos calcular este ângulo e determinar se a luz que entra em uma haste a um ângulo particular permanecerá no interior da mesma. Suponha que n2 é o índice de refração do meio envolvente, e n1 é o índice de refração da haste. Se n2 é maior que n1, a haste não transmitirá luz; caso contrário, o ângulo crítico pode ser determinado pela equação sen θc = n2 / _n1 Escreva um programa MATLAB que determina se a luz será ou não transmitida por dois materiais que forma um guia. Suponha que um arquivo de dados ASCII denominado indices.dat contenha o número de possíveis índices de refração da fibra seguido pelo índice de refração do meio que o envolve. O programa deve determinar se os materiais formarão um guia de luz e, então, para quais ângulos a luz entra no guia. 1. ENUNCIADO DO PROBLEMA Determine se os materiais especificados formarão ou não um guia de luz. Se eles não formarem, calcule os ângulos para o qual a luz pode entra na haste e ser transmitida. Curso de MATLAB Cap. 4 – Controle de Fluxo 49 2. DESCRIÇÃO ENTRADA \ SAÍDA Como mostramos na figura abaixo, a entrada ao programa é um arquivo de dados contendo os índices de refração para os guias de luz em potencial. A saída é uma mensagem indicando se a luz é ou não transmitida e o ângulos para quais pode entrar no guia. 3. EXEMPLO MANUAL O índice de refração do ar é 1,0003 e o índice do vidro é 1,5. Se formarmos um guia de luz de vidro envolvido pelo ar, o ângulo crítico θc pode ser calculado como mostramos a seguir: θc = sen –1 (n2 / n1 ) = sen –1 (1,0003 / 1,5 ) = sen –1 ( 0,66687 ) = 41, 82 0 O guia de luz transmitirá luz para todos os ângulos de incidência maiores que 41,820 . 4. SOLUÇÃO DO MATLAB 5. TESTANDO 4.4 Loops WHILE O loop while é uma importante estrutura para repetição de um grupo de comandos quando a condição especificada for verdadeira. O formato geral para esta estrutura de controle é: while expressão grupo de comandos A end Indices.dat Mensagem e θc Curso de MATLAB Cap. 4 – Controle de Fluxo 50 Se a expressão for verdadeira, então o grupo de comandos A é executado. Depois destes comandos serem executados, a condição é novamente questionada. Se for verdadeira, o grupo de comandos é novamente executado. Quando a condição for falsa, o controle pula para o comando posterior ao comando end. As variáveis modificadas no grupo de comandos A devem incluir as variáveis na expressão, ou o valor da expressão nunca será mudado. Se a expressão for verdadeira (ou é um valor não-nulo), o loop torna-se um loop infinito.( Lembre-se que você pode usar ^c para sair um loop infinito). Podemos mostrar que o uso de um loop while em um grupo de comandos que adicionam valores em um vetor para uma soma até o valor negativo ser alcançado. Como todos os valores no vetor podem ser positivos, a expressão no loop while deve acomodar a situação: x = [ 1 2 3 4 5 6 7 8 9 ]; sum = 0; k = 1; while x (k) > =0 & k < size (x,2) sum = sum + x(k); k = k + 1; end Aplicação à Solução de Problemas: Equilíbrio de Temperatura O projeto de novos materiais para o aperfeiçoamento das características do fluxo de ar acerca dos veículos envolve a análise dos materiais para não somente o fluxo de ar mas também para propriedades como a distribuição de temperatura. Neste problema, consideramos a distribuição em uma fina placa metálica tal que esta alcance um ponto de equilíbrio térmico. A placa é projetada para ser usada em uma aplicação na qual as temperaturas de todos os quatro lados da placa metálica estejam a temperaturas constantes ou a temperaturas isotérmicas. A temperatura para os outros pontos da placa é uma função da temperatura dos pontos envolventes. Se considerarmos as placas para serem semelhantes a uma grade, então uma matriz poderia ser usada para armazenar as temperaturas dos pontos correspondentes sobre a placa. A figura abaixo mostra uma grade para uma placa que está sendo analisada com seis medidas de temperatura ao longo dos lados e oito temperaturas ao longo das partes superior e inferior. Os pontos isotérmicos nos quatros lados são sombreados. Um total de 48 valores de temperaturas estão representados. Curso de MATLAB Cap. 4 – Controle de Fluxo 53 Temperaturas Iniciais 100 100 100 100 100 0 0 100 100 0 0 100 50 50 50 50 Primeira Iteração 100 100 100 100 100 50 50 100 100 37,5 37,5 100 50 50 50 50 Segunda Iteração 100 100 100 100 100 71,875 71,875 100 100 59,375 59,375 100 50 50 50 50 Como nenhuma das temperaturas alteradas entre a primeira e segunda interação ultrapassam a tolerância de 400, as temperaturas na segunda iteração estão também em equilíbrio. 4. SOLUÇÃO DO MATLAB 5. TESTANDO Curso de MATLAB Cap. 5 - Medidas Estatísticas 54 Capítulo 5 - Medidas Estatísticas Analisar dados coletados de ensaios de engenharia é uma parte importante da avaliação dos mesmos. O alcance da análise estende-se dos mais simples cálculos de dados, como a média aritmética, à mais complexa análise que calcula medidas como o desvio padrão ou variância dos dados. Medidas como estas são medidas estatísticas porque suas propriedades não são exatas. Por exemplo, o seno de 600 é uma medida exata pois o valor é sempre o mesmo toda vez que o calculamos, mas a velocidade máxima que atingimos com o nosso carro é uma medida estatística porque varia dependendo de parâmetros como a temperatura, condições da estrada, e se estamos nas montanhas ou no deserto. Não só podemos medir as propriedades e características de dados estatísticos como também usar o computador para gerar seqüências de valores (números aleatórios) com características específicas. Neste capítulo, aprenderemos a usar as funções para análise de dados do MATLAB e a gerar seqüências de números aleatórios com características específicas. 5.1 Funções para Análise de Dados Para se estudar o desempenho de duas companhias corretoras de ações, selecionou-se de cada uma delas amostras aleatórias das ações negociadas. Para cada ação selecionada, computou-se a porcentagem de lucro apresentada durante um período de tempo. Os dados estão a seguir: Corretora A 45 60 54 62 55 70 38 48 64 55 56 55 54 59 48 65 55 60 Corretora B 57 55 58 50 52 59 59 55 56 61 52 53 57 57 50 55 58 54 Os gráficos para os dados das corretoras A e B são mostrados abaixo para podermos comparar os dois conjuntos de dados: Para decidir qual corretora obteve melhor desempenho, alguns critérios foram considerados como: • Média mais alta de percentagem de lucro; • Maior percentagem de lucro; • Menor variação de Percentagem de lucro; Figura 5.2 - Percentagem de lucro apresentada pela corretora B durante 18 dias. Figura 5.1 - Percentagem de lucro apresentada pela corretora A durante 18 dias.
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved