Prévia do material em texto
COMPUTAÇÃO PARA ENGENHARIA Elisângela P. F. Bagatini 2COMPUTAÇÃO PARA ENGENHARIA SUMÁRIO CENTRO UNIVERSITÁRIO UNIFTEC Rua Gustavo Ramos Sehbe n.º 107. Caxias do Sul/ RS REITOR Claudino José Meneguzzi Júnior PRÓ-REITORA ACADÊMICA Débora Frizzo PRÓ-REITOR ADMINISTRATIVO Altair Ruzzarin DIRETORA DE EDUCAÇÃO A DISTÂNCIA (EAD) Lígia Futterleib Desenvolvido pela equipe de Criações para o ensino a distância (CREAD) Coordenadora e Designer Instrucional Sabrina Maciel Diagramação, Ilustração e Alteração de Imagem Igor Zattera, Leonardo Ribeiro Revisora APRESENTAÇÃO 3 Da unidade curricular 4 Do material didático 4 O SOFTWARE OCTAVE 5 Você conhece o ambiente Octave? 9 Operações Matemáticas 11 Formato de exibição de dados numéricos 15 Funções Matemáticas El ementares 17 Funções de Arredondamento 19 Declaração de Variáveis 20 Criação de Programas ou M-Files 22 CRIAÇÃO DE ARRANJOS 31 Matrizes 34 Operações Matemáticas 39 Operações Elemento a Elemento 42 GRÁFICOS BIDIMENSIONAIS 48 Especificações� 53 PROGRAMANDO NO OCTAVE 60 Operadores Lógicos e Relacionais 61 Sentenças Condicionais 66 Caixa de Diálogo 73 FUNÇÕES 77 Funções Anônimas 83 POLINÔMIOS 86 O MATLAB 95 Introdução ao Matlab 96 MATEMÁTICA SIMBÓLICA 105 AJUSTES DE CURVAS E INTERPOLAÇÃO 115 Interpolação 120 3COMPUTAÇÃO PARA ENGENHARIA Apresentação Olá,caro aluno, seja bem-vindo a unidade curricular Informática. Será um imenso prazer trabalharmos juntos. Quero que saibas que podes contar comigo em qualquer momento, o “aprender” se dará de forma contínua e mútua. Seja organizado, tenha um tempo de qualidade para trabalhar com a unidade curricular. Não fique com dúvidas, comunique-se de alguma forma: via fóruns de preferência, pois assim todos podem interagir. Ao longo do material haverão exemplos, exercícios, portanto acompa- nhe o material com o programa, execute os exemplos, faça testes diversos, pesquise outros materiais, enfim, explore ao máximo os softwares. No final de cada capítulo há um resumo e uma pequena lista de exer- cícios, mas ao longo da disciplinas listas de exercícios com mais aplicações serão disponibilizadas para que você possa aplicar seus conhecimentos. Abraço e bons estudos! 4COMPUTAÇÃO PARA ENGENHARIA Da unidade curricular A unidade curricular Computação para Engenhara tem como objetivo apresentar as noções básicas dos softwares Octave e Matlab para que os mesmos possam ser utilizados na resolução de problemas, análise de dados, gráficos e construir algoritmos. Quero salientar que há outros softwares semelhantes como o Matlab, onde prati- camente todos os comandos são iguais. As competências Resolver problemas e analisar dados usando o programa Octave. As habilidades • Conhecer o ambiente de trabalho do programa Octave; • Resolver operações matriciais; • Gerenciar dados e plotar gráficos; • Criar polinômios usando dados experimentais; • Conhecer os fundamentos da programação em Octave. As bases tecnológicas 1. Iniciação ao ambiente do Octave; 2. Criação de arranjos e operações matemáticas; 3. Utilização de scripts e gerenciamento de dados; 4. Gráficos bidimensionais; 5. Programando no Octave; 6. Polinômios e ajustes de curvas. Do material didático Este material didático foi produzido para uso na unidade cur- ricular de Informática, do Curso de Engenharia de Produção a Distância. Aqui estão contempladas todas as bases tecnológicas para o desenvolvimento dessa unidade e das habilidades e competências nela previstas. 5COMPUTAÇÃO PARA ENGENHARIA O SOFTWARE OCTAVE Nesta unidade curricular, utilizaremos dois softwares similares, iniciaremos com o Octave e mais adiante trabalharemos com o Matlab. O Octave1 é um software livre, escrito por Eaton (1997) e por vários colaboradores. O software está disponível sob os termos da Licença Pública Geral da GNU (GPL). O programa possui uma interface por linha de comandos para cálculos e programação matemáticos e sua linguagem de programação é de alto nível e compatível com o Matlab. O programa pode 1 Pode-se utilizar o software MATLAB sem perda de informação. Os recursos básicos dos dois pro- gramas são compatíveis. A diferença é que o Octave é um software livre, mas no site https://www.mathworks. com/ é possível obter um versão “trial” por um tempo determinado, basta fazer o cadastro. 6COMPUTAÇÃO PARA ENGENHARIA funcionar como uma simples calculadora, como uma linguagem de programação científica, modelagens, simulações, análises numéricas, visualização e gráficos, desenvolvimento de algo- ritmos, processamento de sinais, cálculo com matrizes etc. O programa é uma linguagem de programação, então é importante que você entenda que “aprender” o programa é semelhante a aprender uma língua nova como inglês, por exemplo, se você se comunicar com um americano nato que não fale outra língua, ele só irá lhe entender com clareza se você souber utilizar as palavras, verbos e etc de forma correta, caso contrário a comunicação ficará prejudicada. Aprender uma linguagem de programação é semelhante, pois você precisa “aprender a se comunicar” com o programa, pois o mesmo só o “entenderá” se você utilizar os comandos corretamente. Sei que é uma analogia bem simples, mas verdadeira, portanto ao longo da disciplina não esqueça: “comunique-se com o progra- ma”, isto significa escrever na “língua” do Octave e/ou Matlab. 7COMPUTAÇÃO PARA ENGENHARIA Veja a seguir o passo a passo para a instalação do software: Acesse o link para efetuar o download do programa: 1. Escolha o sistema operacional, por exemplo, Windows. 2. Clique no link destacado no retângulo vermelho 3. Você será redirecionado para uma outra página, onde terá opções de algumas versões do programa, como por exemplo, Escolha a primeira. O download iniciará. 4. Inicie o processo de instalação no seu computador pessoal, clique duas vezes no arquivo de instalação. Provavelmente estará na pasta “Downloads” de seu computador. www.gnu.org/software/octave/download.html https://www.gnu.org/software/octave/download.html 8COMPUTAÇÃO PARA ENGENHARIA 5. Aparecerá a tela abaixo, clique em Next. 6. Uma sequência de telas aparecerá, clique em Next em todas até que o processo de instalação inicie. 7. Por fim aparecerá a tela como abaixo. Clique em “Finish”, processo de instalação concluído. Na área de trabalho surgirá um ícone do programa. 9COMPUTAÇÃO PARA ENGENHARIA Você conhece o ambiente Octave? Se sim, ótimo você poderá ampliar seus conhecimentos, além de fazer sugestões de atividades e ajudar os colegas e professora. Caso contrário, não há problema, com calma aprenderemos juntos. Vamos iniciar o programa. Clique no ícone para iniciá-lo. Então, abrirá uma tela, conforme mostra a figura a seguir. Há quatro janelas: • Gerenciador de Arquivos: observe que na barra superior há o diretório atual, como padrão é C:Users, a janela de gerenciador de arquivo mostra as pastas contidas no diretório que está sendo acessado pelo programa. O diretório pode ser alterado sempre que necessário. • Ambiente de Trabalho: lista as variáveis que estão sendo utilizadas no momento. As variáveis ficam armazenadas na “memória” do programa e podem ser acessadas a qualquer momento. • Histórico de Comandos: histórico dos comandos mais recentes digitados na Janela de Comandos. • Janela de Comandos: janela principal, pois nela os comandos são executados. Ao longo da unidade curriculares trabalharemos com todas estas janelas e assim, você se familiarizará com elas. 10COMPUTAÇÃO PARA ENGENHARIA A Janela de Comandos é a principal janela do programa, o cursor deve ser posicionado junto ao pompt de comando (>>) para digitar um comando. O comando deve ser digitado e a tecla Enter deve ser pressionada, e então, o comando é executado. Vamos testar, por exemplo, para executar uma soma simples, no prompt de comando digite 3+4 e tecle Enter. O resultado aparecerá na linha posterior. Observe o que aconteceu na janela Históri-= 103 Exemplo: Considere o polinômio f(x) = x5- 6,2x4- 32,75x3+ 161,11x2+ 270.6x - 393,48 a. Determine f(5) b. Esboce o polinômio para -5,5 ≤ x ≤8 Solução: A Figura abaixo apresenta os comandos para responder os itens acima. E, portanto, o gráfico é: 89COMPUTAÇÃO PARA ENGENHARIA Raízes de um Polinômio As raízes de um polinômio são os valores de x que satisfazem f(x)=0. O Octave possui a função elementar, chamada roots que determina as raízes de um polinômio, sua sintaxe é r=roots(p), onde p é um vetor contendo os coeficiente do polinômio. Exemplo: Determine as raízes dos polinômios a. f(x) = x5 - 6,2x4 - 32,75x3 + 161,11x2 + 270.6x - 393,48 b. g(x) =-2x2 + 7x c. h(x) = 3x3 + 5x - 1 Solução: >>f=[1 -6.2 -32.75 161.11 270.6 -393.48]; >> a=roots(f) a = 6.92705 5.26314 -4.68417 -2.30544 0.99941 >> g=[-2 7 0]; >> b=roots(g) b = 3.50000 0.00000 >> h=[3 0 5 -1]; >> c=roots(h) c = -0.09776 + 1.30205i -0.09776 - 1.30205i 0.19552 + 0.00000i Note que o polinômio h(x) possui raízes complexas. Lembre-se: todo número complexo pode ser escrito da forma z=a+bi, onde a e b são números reais e i=√-1 é a unidade imaginária. 90COMPUTAÇÃO PARA ENGENHARIA Operações: Produto de p por q: conv(p,q). Exemplo: determine o produto de p por q, onde p=x+1 e q=x-1. >> p=[1 1]; q=[1 -1]; >> conv(p,q) ans = 0 -1 O polinômio resultante é g(x) = x2 + 0x - 1. Divisão de D por d: [q,r]=deconv(D,d), onde D é o dividendo, d o divisor, q o quociente e r é o resto. Exemplo: Se D = x2 + x + 1, d = x + 1. >> D=[1 1 1]; d=[1 1]; >> [q,r]=deconv(D,d) q = 1 0 r = 0 0 1 Verifique o resultado, fazendo D=conv(d,q)+r. 91COMPUTAÇÃO PARA ENGENHARIA Exemplo: O polinômio p(x) = -x4 + 7,7x3 - 18x2 + 13,6x no intervalo [0,4] representa o perfil de duas elevações. Um projétil é lançado a partir da menor elevação e descreve uma curva dada por q(x) = -x2 + 5x + 0,75. As unidades não serão consideradas. a. Faça o gráfico dos dois polinômios no mesmo plano cartesiano. b. É possível determinar as posições em x nas quais o projétil é lançado (elevação menor) e a na qual atinge a elevação maior? Como? Marque o ponto de lançamento com um marcador ver- melho no gráfico e o ponto de chegada com um marcador verde. c. Determine a altura máxima que o projétil atinge. Solução: a. b. Dois polinômios modelam a situação, portanto, observe no gráfico que as posições de lançamento e chegada do projétil são os valores de x, nos quais as duas funções são iguais, ou seja, p(x)=q(x), mas podemos reescrever p(x)-q(x)=0, e portanto, o problema é determinar o zero da função que é a subtração dos dois polinômios. 92COMPUTAÇÃO PARA ENGENHARIA No programa, os polinômios foram armazenados na forma vertorial e, para subtrair ou somar vetores os mesmos devem ter o mesmo tamanho, portanto devemos completar com “ze- ros” o polinômio com o menor número de elementos. Assim, acrescentando as linhas de comando ao arquivo do item a), obtém-se quatro raízes: 3,86007; 3,17292; 0,55709 e 0,10992. Verifique! Observando o gráfico, tem-se que a posição de lança- mento está entre 0 e 1, mas próximo a x=0 há uma interseção entre as curvas, o qual deve ser 0,10992 mas para o nosso problema esse valor não tem nenhum significado, portanto, descartamos. Logo, a posição de lançamento é x=0,55709. Usando um raciocínio semelhante, a posição na qual o pro- jétil atinge a maior elevação é 3,17292. Para marcar as posições, basta acrescentar as linhas E, o resultado gráfico é: c. O item c) já foi respondido no item b), pois a variável xc é o valor de x na qual o projétil atinge a elevação maior e, consequentemente, yc é altura máxima é 6,5472. 93COMPUTAÇÃO PARA ENGENHARIA Síntese Neste capítulo vimos como manipular polinômios no Oc- tave. Claro, que são apenas comandos básicos. Faça uma breve pesquisa e busque outros comandos. O capítulo nos apresentou: • polinômios; • operações e manipulações de polinômios; • cálculo de raízes de polinômios; • gráficos de polinômios. 94COMPUTAÇÃO PARA ENGENHARIA Exercícios 1. Detemine os zeros das seguintes funções f(t) = t2 - 2t - 4 e h(x) = x2 + 2. 2. O lucro L com as vendas de um certo produto é dado pela função L(x) = -200x2 + 2000x - 3800, onde x é o preço de venda. L e x são dados em reais. a. Determine os zeros da função. Qual seu significado? b. Determine o lucro para o preço de venda de R$ 4,29. c. Faça o gráfico da função lucro. 95COMPUTAÇÃO PARA ENGENHARIA O MATLAB Bom, vamos aprender outro software? Pois bem, os próximos capítulos são dedicados ao estudo do Matlab, mas não se assuste, tudo o que foi visto até aqui você poderá aplicar nos dois programas sem maiores problemas. 96COMPUTAÇÃO PARA ENGENHARIA Introdução ao Matlab O nome Matlab vem da elisão das palavras MATrix LA- Boratory, pois basea-se operacionalmente, em matrizes. Vamos começar com a instalação. Como instalar o Matlab? A instalação é simples. O software não possui licença gra- tuita, mas você pode acessar a página abaixo, fazer um cadastro como estudante e baixar uma versão de teste para começar. www.mathworks.com/products/matlab.html Observação Importante: trabalharemos com a matemática simbólica, portanto , a instalar o software aparecerá a seguinte tela abaixo. Deixe, pelo menos, a caixa referente à Symbolic Math Toolbox selecionada. Siga as instruções do site e se surgir alguma dúvida, entre em contato via Fórum no Moodle. Não se assuste, pois a ins- talação pode demorar. https://www.gnu.org/software/octave/download.html http:///www.mathworks.com/products/matlab.html 97COMPUTAÇÃO PARA ENGENHARIA As principais janelas Ao iniciar o programa duas janelas estarão aparecendo como na Figura abaixo: A janela Current Folder é semelheante à janela Gerenciador de Arquivos do Octave, exibe os arquivos presentes no diretório ou pasta atual. Já a Command Window é a principal janela do Matlab, equivale a Janela de Comandos do Octave. Observe que o layout dos softwares são muito parecidos. Todos os comandos são digitados na janela Command Window e todos os comandos vistos até aqui funcionam normalmente no Matlab. 98COMPUTAÇÃO PARA ENGENHARIA Exemplo: Um colega da disciplina de Computação para Engenharia comprou um veículo por R$ 42.000,00 sem entrada e pretende pagá-lo em 8 anos a uma taxa de 15,3 % ao ano. A fórmula que relaciona o valor atual P, os pagamentos anuais A, o número de anos n e a taxa de juros i é A = P i(1 + i)n (1 + i)n - 1 Usando variáveis de forma adequada, calcule o valor das parcelas anuais diretamente na janela Command Window do Matlab. Solução: Assim, o valor aproximado das parcelas é de R$ 9452,20 anuais. Vamos criar um script agora? No canto superior esquerdo clique em New Script. A janela de edição ficará acoplada logo acima da janela Command Window. 99COMPUTAÇÃO PARA ENGENHARIA Para escrever e salvar é praticamente, igual ao Octave. Não esqueça de mudar o diretório. Sugiro que você crie uma pasta para salvar os arquivos dos exercícios. Para mudar, clique na pasta amarela com a seta verde como mostra a Figura abaixo. E, vamos lá.... Digite os comandos anterior no Edi- tor. Para salvar clique em Save-Save As. Observe que o arquivo aparece listado na janela que exibe os arquivos. Para executar o arquivo clique no triângulo verde e, assim, o resultado será escrito na janela principal. Antes de seguir, pegue alguns exemplos anteriores do Octave e faça-os no Matlab. 100COMPUTAÇÃO PARA ENGENHARIA Live Editor Na versão 2016a do Matlab foram acrescenta- dos alguns recursos novos, dentre eles há um am- biente interativo, onde é possível inserir imagens, equações, melhorar a formatação, e possibilitando, ainda, criar documentos em pdf ou html. Para abrir o Editor, na aba superior clique em New Live Script como mostra a Figura abaixo. Abrirá uma janela de edição logo acima da janela de comandos do programa. Note que na janela de edição há um retângulo com um fundocinza claro, nele escrevemos linhas de comandos, caso você queira escrever um texto, você deve alternar a edição para texto. Na Figura acima, os itens marcados por 1 e 2 fazem estas alterações. O item 3 refere-se à aba do Live Editor, pois você pode navegar nas abas superiores (não vou descrever todas as abas, mas você, aos poucos, descobrirá), mas para trabalhar com este editor sempre cuide se você está na aba do Live Editor. O item 4 executa o programa. Para inserir imagens, equações, você deve clicar na aba Insert. 101COMPUTAÇÃO PARA ENGENHARIA Vamos utilizar o Live Editor para resolver o próximo exemplo. Exemplo: Uma peça é colocada num forno a 200°C. A experiência mostra que a peça se aquece a uma taxa proporcio- nal à diferença entre a sua temperatura (T) e a do forno (TF). Quando a peça está a 120°C, ela esta se aquecendo a uma taxa de 20°C/min. A função que descreve a temperatura em função do tempo é T = 200 + (TO- 200)e-0,25t, onde T0 representa a temperatura em t = 0. Utilizando o Live Editor, gere o gráfico da temperatura versus o tempo no intervalo [0,60], supondo que T0 = 25°C. Solução: Observe a Figura abaixo, pois como comentado anteriormente, os comandos do Matlab estão digitados dentro do retângulo cinza e o texto aparece no fundo branco. Quando o arquivo é executado os resultados aparecem ao lado do código, esta configuração pode ser alterada, há opção de visualização horizontal ou vertical. 102COMPUTAÇÃO PARA ENGENHARIA Para salvar, clique em Save – Save As, a extensão será .mlx, as regras para o nome são as mesmas dos scritps. Você pode exportar o arquivo em .pdf, por exemplo, para isso clique em Save-Export to PDF, o resultados é apresentado na Figura abaixo. Os arquivos são salvos, automaticamente, no diretório de trabalho. Você pode utilizar o programa para desenvolver seus trabalhos acadêmicos ou até mesmo criar um “caderno” para cada disciplina. Explore ao máximo o programa, pesquise, faça perguntas. Quanto mais você trabalhar com o Matlab ou Octave mais fácil ficará. 103COMPUTAÇÃO PARA ENGENHARIA Síntese Neste capítulo, nos foi apresentado o Matlab, um programa muito parecido com o Octave e muito utilizado em ambiente acadêmicos. Os principais pontos deste capítulo são: • Instalação do Matlab; • As principais janelas; • Live Editor. 104COMPUTAÇÃO PARA ENGENHARIA Exercícios 1. Considere a seguinte tabela de preços de uma empresa de fotocópias: Escreva um programa em Matlab onde o usuário informe o número de cópias desejadas e ele retorne o valor a ser pago. 2. Um vendedor recebe um salário mensal composto de duas partes: uma parte fixa, no valor de R$ 1.500,00, e uma parte variável de 8% do valor total das vendas que ele realiza durante o mês. Escreva um programa no Matlab que calcule o salário do vendedor dado o valor total de vendas. 3. Esboce o gráfico da função f(x) = sen(x) x no intervalo [-4π,4π]. Note que x = 0 não está no domínio da função. Até 40 cópias R$ 0,15 por cópia Acima de 40 cópias R$ 0,10 por cópia 105COMPUTAÇÃO PARA ENGENHARIA MATEMÁTICA SIMBÓLICA Você gosta de matemática? Vamos, agora aprender recursos para facilitar seu aprendizado ao longo do curso de Engenharia. Todas as operações vistas até aqui e executadas no Octave foram numéricas, mas é possível realizar operações de forma simbólica, ou seja, usando variáveis que não recebem valor numérico, mas são tratadas como símbolos. 106COMPUTAÇÃO PARA ENGENHARIA Todas as operações vistas até aqui e executadas no Octave foram numéricas, mas é possível realizar operações de forma simbólica, ou seja, usando variáveis que não recebem valor numérico, mas são tratadas como símbolos. Por exemplo, a expressão 2ax + b = c, pode ser resolvida em termos de a,b e c, assim o resultado é x = c - b 2a , o qual também pode ser obtido no Matlab ou no Octave2. Bom, já vamos começar criando expressões simbólicas. Para criar variáveis simbólicas v1, v2, ... vn, usa-se o seguinte comando syms v1 v2 ... vn Exemplo: Criar variáveis simbólicas x,a,b e c, e representar a expressão y = ax2 + bx + c. 2 Para trabalhar com variáveis simbólicas no Octave é necessário fazer o down- load de um pacote Symbolic. Solução: É possível resolver o exemplo tanto no script, quando no Live Editor ou, ainda, diretamente na janela de comandos. As variáveis simbólicas não são armazenadas com valores numéricas e podem ser utilizadas da mesma forma que as va- riáveis numéricas. Observe que no Live Editor a saída da expressão não é representada como comando, o que torna o resultado mais compreensível, em alguns casos, por isso, a maioria dos exem- plos será resolvido no Live. Script Live Editor 107COMPUTAÇÃO PARA ENGENHARIA Exemplo: Represente a matriz L = a b c d e, calcule seu determinante e sua inversa. Solução: Não é um espetáculo? Exemplo: Analise os comandos abaixo. Note que, a expressão definida simbolicamente é da forma z = 2a + x2 + 7,5y + a 3 + 84x - 0,5y + 1 5 x2 Mas quando é apresentado o resultado a expressão aparece “simplificada”, ou seja, o programa executa as operações, como 7,5y - 0,5y = 7y. 108COMPUTAÇÃO PARA ENGENHARIA Como substituir uma variável por um valor numérico? Basta utilizar o comando subs e sua sintaxe é: subs(f,x,a) Neste caso, o comando retorna o valor de f com a variável x é substituída pelo valor de a. Exemplo: Numa certa cultura de bactérias a taxa de crescimento é proporcional à população presente. A função y = 1000e0,05776t representa o crescimento y em função do tempo t, em minutos. a. Determine a população inicial. b. Determine o número de bactérias na cultura após 1 h. Solução: • Linha 1: definição da variável t simbolicamente. • Linha 2: definição da função. • Linha 3: define-se os instantes que serão substituídos na função. Note que na definição do exercício o tempo é dado em minutos, e 1 hora equivale a 60 minutos. • Linha 4 e 5: os valores do tempo são substituídos na função. • Linha 6: o resultado da linha 5 é “exato”, por isso o comando double(y1) é utilizado, pois converte a expressão simbólica y1, escrita na forma exata, em expressão numérica. 109COMPUTAÇÃO PARA ENGENHARIA Alguns comandos úteis: • expand(p) – expande todos os termos da expressão p. • factor(p) – apresenta a forma fatorada da expressão, quando possível. • simplify(p) – utiliza operações matemáticas como somas, subtrações, identidades trigonométricas, entre outras para escrever de forma mais simples uma exprssão. • collect(p,nome da variável) – agrupa termos de mesma potência com a variável específica. Exemplo: Defina a função g(x) = (x2 - 5x + 6)(x + 1)(x - 3). a. Desenvolva o produto e apresente a expressão simplificada. b. Determine uma decomposição de g(x). Solução: Exemplo: A expressão abaixo pode ser escrita de uma forma mais simples? q = sen2x + cos2x + x2 - 5x + 6 x - 2 Solução: Fazendo algumas manipulações algébricas e aplicando relações trigonométricas podemos responder à essa pergunta, mas vamos utilizar o Matlab. 110COMPUTAÇÃO PARA ENGENHARIA não há necessidade de indicar a variável a qual a expressão será organi- zada, ou seja, neste caso os termos de x do mesmo grau são agrupados de ordem de maior potência para a menor. Analise o resultado apresentado na Figura abaixo. Na segunda expressão, a grande diferença é que a expressão depende de x e y, portanto, pode ser organizada em termos das potências de x ou y. Analise as linhas 6 e 7 e os respectivos resultados. Lembrando que, sen2x + cos2x = 1, é uma iden- tidade trigonométrica. O resultado de x2 - 5x + 6 x - 2 é x - 3 (verifique!). Exemplo: Considere as expressões A = (x2 + 2x - 1 + senx)(5x - 2) B = (x3 + y)(y2 - 2x + 1) Utilize o comando collect e apresente as ex- pressões organizadas. Solução: O comando em questão pode ser utilizado de duas formas. Na primeira expressão há apenas uma variável x, portanto, ao usar o comando 111COMPUTAÇÃO PARAENGENHARIA Resolução de Equações Algébricas Iniciamos este capítulo citando a ex- pressão 2ax + b = c, a qual pode ser resolvida em termos de a,b e c, assim o resultado é x = c - b 2a , mas é possível obter esta solução com o auxílio do Matlab? Claro que sim! Para resolver este problema o comando a ser utilizado é solve(equação) ou solve(e- quação, variável). A equação foi definida com outro comando, mas vou deixar para você pesquisar, acesse, para iniciar, www.mathworks.com/help/symbolic/str2sym.html Exemplo: Determine as raízes do polinômio q = x2 + 3x - 10e p = ax2 + bx + c. Solução: Já vimos anteriormente que um polinômio pode ser tratado como um vetor, mas vamos resolver este problema definindo a função de forma simbólica. Exemplo: Resolva o sistema linear: { 2x + y = 0 3x + 2y = 9 Solução: http://www.mathworks.com/help/symbolic/str2sym.html 112COMPUTAÇÃO PARA ENGENHARIA O comando ezplot Para esboçar o gráfico de uma expressão simbólica, usa-se o comando ezplot, suas formas de escrita podem variar depen- dendo do número de variáveis da função. ezplot(expressão) ezplot(expressão, [min, max]) Exemplo: Trace o gráfico das funções a. f(x) = 1 x no intervalo [-3,5] b. (x - 2)2 + (y + 3)2 - 4 = 0 Uma Aplicação: Se depositarmos um valor M0 (capital inicial), em reais, em uma caderneta de poupança, o saldo M é dado por M(t) = M0 (1 + r)t, onde r é a taxa de juros mensal e t é o período de aplicação, neste caso, em meses. Qual é o tempo de investimento necessário para que um capital de R$ 1.000,00 tenha um rendimento de R$ 400,00, considerando uma taxa mensal de juros de 0,5%? Solução: 113COMPUTAÇÃO PARA ENGENHARIA Síntese Com o auxílio do Matlab, aprendemos neste capítulo a manipular expressões algébricas e traçar gráficos de forma simbólica. Aqui não foram apresentados comandos para cálculo de limites, derivadas, integrais, mas caso você já tenha feito as disciplina de Cálculo, pesquise estes comandos, pois lhe serão muito úteis e se, ainda você não as fez, saibas que poderá utilizar o Matlab em todas as disciplinas de cálculo, física e afins. 114COMPUTAÇÃO PARA ENGENHARIA Exercícios 1. Simplifique as expressões: a. x2 + 5 x3 + 5x b. 10x3 y3 + 3xy2 2xy2 2. Um ciclista decide descer uma ladeira sem acionar os freios. A velocidade v, em metros por segundo, do ciclista é monitorada e é dada por v(t) = 20,83 (1 - e-1,875t), onde t é o tempo em segundos. a. Calcule a velocidade nos instantes t = 0,2 e 4 segundos. b. Calcule exatamente o instante em que a velocidade é de 20 m/s. c. Trace o gráfico da função e rotule os eixos adequadamente. 115COMPUTAÇÃO PARA ENGENHARIA AJUSTES DE CURVAS E INTERPOLAÇÃO Qual é a diferença entre ajuste e interpolação? Em que situação o ajuste de curva é aplicado? Pesquise antes de continuar. Polinômios podem ser utilizados de duas maneiras no ajuste de curvas: • O polinômio é forçado a passar através de todos os pontos; • O Polinômio dá uma boa aproximação do conjunto de pontos. 116COMPUTAÇÃO PARA ENGENHARIA Quando são conhecidos n pontos, é possível escrever um polinômio de grau menor que n-1 que não passa necessariamente sobre os pontos, mas dá uma boa aproximação desse conjunto de pontos. O método mais conhecido é o dos mínimos quadra- dos. Os coeficientes são determinados minimizando-se a soma dos quadrados dos resíduos de todo o conjunto de pontos. O resíduo é definido como a diferença entre o valor do polinômio de ajuste e o valor dado real (mais detalhes deste método serão vistos mais adiante, na disciplina de Cálculo Numérico). O ajuste pode ser feito por meio do comando P=polyfit(x,y,n) Retorna os coeficientes do polinômio p(x) de grau n que minimiza os erros de ajuste, no sentido dos mínimos quadrados. Os coeficientes são retornados na forma de um vetor. Exemplo: Considere a tabela abaixo: a. Ajustar o conjunto de dados a uma reta. b. Ajustar o conjunto de dados a uma parábola. c. Trace o gráfico dos dados da tabela (gráfico de dispersão) e as funções de ajuste no mesmo plano cartesiano. d. Qual é a melhor? x y 1,1 2,1790 3,5 71,8750 5,2 168,5780 4,1 95,1990 7 350 117COMPUTAÇÃO PARA ENGENHARIA Solução 1: Os itens a), b) e c) estão desenvolvi- dos na linhas de comandos conforme mostra a Figura abaixo. Há alguns comandos novos, como por exemplo, poly2sym e vpa, mas nesta etapa da disciplina ficarão como itens de pesquisa. Neste momento, vamos responder ao item d) sem muito formalismo, ou seja, de forma bem simples, a melhor aproximação é aquela que está mais próxima ao conjunto de dados. Pela análise gráfica, a parábola se ajusta melhor ao conjunto, pois está mais próxima. 118COMPUTAÇÃO PARA ENGENHARIA Solução 2: O Matlab possui uma interface chamada Basic Fitting a qual pode ser utilizada para o ajuste de curvas e interpolação. • Inicie gerando o gráfico do conjunto de pontos. Use marcadores. • Na janela gráfica clique na aba Tools – Basic Fitting • Uma nova janela abrirá 119COMPUTAÇÃO PARA ENGENHARIA • Para ajuste linear selecione a caixa linear e show equations e, em seguida, clique na seta na parte inferior direita da janela. • Observe que, a equação é exibida na ja- nela gráfica junto com os dados da tabela e os coefientes do polinômio, bem como sua forma. O resíduo é definido dentro da teoria do ajuste pelo método dos mínimos quadrados, o que omitiremos aqui, mas quanto menor resíduo melhor é o ajuste. • Para o caso quadrático, tem-se: 120COMPUTAÇÃO PARA ENGENHARIA Interpolação Veremos agora, o caso da interpolação de pontos, ou seja, é outra maneira de determinar um polinômio “aproximado” para uma curva. Interpolação é o nome dado ao processo em que se determi- na o valor de uma função em um ponto interno a um intervalo a partir dos valores da função nas fronteiras desse interpolador. Trabalharemos aqui com a interpolação unidimensional onde a cada ponto associa-se uma variável independente (x) e uma dependente (y). A função tanto do Octave quanto do Matlab que trata de interpolação unidimensional é função interp1. O comando é escrito como yi=interp1(x,y,xi,’método’) 121COMPUTAÇÃO PARA ENGENHARIA Onde yi representa o valor interpolado, x é um vetor com coordenadas horizontais do conjunto de pontos de entrada (variável independente), y é um vetor com coordenada verticais do conjunto de pontos de entrada (variável dependente), xi é a coordenada horizontal do ponto de interpolação (variável independente). O programa pode fazer interpolação usando um dos muitos métodos disponíveis. Entre eles cita-se: • nearest retorna o valor do ponto que está mais próximo ao ponto interpolado. • linear usa interpolação spline linear. • spline usa interpolação spline cúbica. • pchip utiliza interpolação por partes. Exemplo: A tabela a seguir mostra um conjunto de pontos obtidos da função f(x)=sen(x)+√x. Utilize os métodos de interpolação linear, spline para calcular o valor de y entre os pontos. Construa os gráficos. Solução: x 1 3 5 7 8 y 1,8415 1,8732 1,2771 3,3037 3,8178 122COMPUTAÇÃO PARA ENGENHARIA Exemplo: Para determinar a resistência elétrica de um solo num sistema de aterramento, enterra-se duas hastes de cobre e aplica-se uma determinada voltagem, resultando numa corrente elétrica. Numa experiência deste tipo, foram obtidos os seguintes dados: a. Determinar o polinômio interpolador usando os dados da tabela. b. Estimar a corrente se a voltagem aplicada for de 38 V. Solução: A interface Basic Fitting também pode ser uti- lizada para a interpolação. Neste caso, temos 5 pontos, pode- -se obter um polinômio interpolador de, no máximo, grau 4 (número de pontos menos 1). Os outros métodos podem ser escolhidos. O item a) aparece na janela gráfica, ou seja, neste caso há um polinômio que representa a corrente (y) em função da tensão (x), portanto para determina a corrente quando a voltagem é de 38 V, basta subsituir x por 38, mas esta aproximação podeser obtida na interface Basic Fitting. Na primeira aba, vá cli- cando na seta no canto inferior direito (clique duas vezes) até que apareça a opção Find f(x), no campo que aparece circulado de vermelho, como na Figura abaixo, preencha com o valor da variável independente a ser aproximado e clique em Evaluate. Tensão (V) 30 35 40 47 50 Corrente (A) 2 2,8 3,5 4,3 4,5 123COMPUTAÇÃO PARA ENGENHARIA Neste caso, o valor aproximado para a corrente quando a tensão é de 38 V é aproximadamente 3,23 A. Pode-se, ainda, utilizar a opção por linha de comando: 124COMPUTAÇÃO PARA ENGENHARIA Exemplo: A tabela abaixo fornece um conjunto de pontos de dados que relacionam pressão p em atmosferas (atm) e a temperatura T (em ⁰C) de uma quantidade fixa de dióxido de carbono em um cilindro fechado. a. Determine a reta de mínimos quadrados que se ajusta ao conjunto de pontos. b. Use o modelo obtido em (a) para prever a pressão quando a temperatura for de 250 ⁰C. c. Use o modelo obtido em (a) para prever a temperatura na qual a pressão do gás será nula. Solução: Os itens a) e b) facilmente são resolvido através da interface. A reta de ajuste é y = 0,00936x + 2,558 e o valor aproximado da pressão quando a temperatura é de 250 ⁰C é 4,9 atm. Temperatura 0 50 100 150 200 Pressão 2,54 3,06 3,46 4,00 4,41 125COMPUTAÇÃO PARA ENGENHARIA Para responder ao item c), uma das formas é trabalhando com a expressão de forma simbólica. Assim, a pressão do gás será nula quando a temperatura for aproximadamente -273,30 ⁰C. 126COMPUTAÇÃO PARA ENGENHARIA Síntese Ajuste de Curvas e Interpolação foram os assuntos do capítulo final, estas técnicas são utilizadas na obtenção de funções aproximadas. A interface Basic Fitting foi apresentada e utilizada na resolução de alguns exemplos. Como já mencionado, na disciplina de Cálculo Numérico, você verá a teoria de Ajuste de curvas e interpolação com mais formalidade. O objetivo aqui, é mostrar como o software Matlab pode ser uma ferramenta de trabalho muito interessante e bastante eficaz. 127COMPUTAÇÃO PARA ENGENHARIA Exercícios 1. Qual a diferença entre ajuste de curva e interpolação? 2. Resolva os exemplos apresentados no Capítulo no Octave. 3. Considere a tabela abaixo: Usando um polinômio interpolador de grau 2, calcule a altura aproximada de uma pessoa com peso de 70 kg. Temperatura 0 50 100 150 200 Pressão 2,54 3,06 3,46 4,00 4,41 128COMPUTAÇÃO PARA ENGENHARIA Referências GILAT Amos. Matlab com aplicações para engenharia. 3 ed. LTC, 1999. CHAPMAN, Stephen J. Programação em Matlab para Engenheiros - 2ª Ed. Editora: Cengage Learning, 2011. CHAPRA, Steven C.; CHAPRA, Steven C. Métodos Numéricos Aplicados Com Matlab Para Engenheiros e Cientistas. 3ª Ed Bookman , 2013. CHAPRA, Steven C.; CHAPRA, Steven C. Programação em Matlab Para Engenheiros e Cientistas. 2ª Ed. São Paulo: Cencage Learning, 2010. BECKER, Christiano Gonçalves.,FARIA, Eduardo Chaves., FARRER, Harry., MAIA, Miriam Lourenço., MATOS, Helton Fábio de.,SANTOS, Marcos Augusto dos., Algoritmos estruturados. 3 ed. LTC, 1999. OLIVEIRA, Jayr Figueiredo de; MANZANO, JOSÉ AUGUSTO N. G. Algoritmos: lógica para desenvolvimento de programação de computadores . 10 ed : Érica, 2000. GUIMARAES, Ângelo Moura; Lages, Newton Alberto de Castilho. Algoritmos e Estrutura de Dados. 2ª Ed. Rio de Janeiro: LTC, 1994. SALVETTI, Dirceu Douglas; BARBOSA , Lisbete Medsen. Algoritmos. São Paulo: Makron Books, 1998. HANSELMANN Duane, LITTLEFIELD Brunce. Matlab 6 Curso Completo. 1 .ed. São Paulo, Prentice Hall, 2003. Disponível na Biblioteca Virtual Pearson. DORNELLES FILHO, Adalberto Ayjara. Cálculo Numérico. Porto Alegre: Bookman, 2016. ADAMI, Adriana Miorelli; DORNELLES FILHO, Adalberto Ayjara; LORANDI, Magda Mantovani. Pré-Cálculo. Porto Alegre: Bookman, 2015. SOUZA, Fernando Lourenço. Introdução ao Octave. Junho de 2003. TEIXEIRA, Sergio Roberto; SODRE, Ulysses; OLIVEIRA, Andrielber da Silva, TAFFOLI, Sônia Ferreira Lopes. Octave – Uma Introdução: Primeiros contatos com o ambiente de programação numérica Octave. UEL – Universidade Estadual de Londrina, 2010. ANTON, H.; BIVENS, I.; DAVIS, S. Cálculo. v.1, 10.ed . Porto Alegre: Bookman, 2012. https://www.mathworks.com https://www.gnu.org/software/octave/ Da unidade curricular Do material didático O software Octave Você conhece o ambiente Octave? Operações Matemáticas Formato de exibição de dados numéricos Funções Matemáticas El ementares Funções de Arredondamento Declaração de Variáveis Criação de Programas ou M-Files Criação de Arranjos Matrizes Operações Matemáticas Operações Elemento a Elemento Gráficos Bidimensionais Especificações Programando no Octave Operadores Lógicos e Relacionais Sentenças Condicionais Caixa de Diálogo Funções Funções Anônimas Polinômios O MATLAB Introdução ao Matlab MATEMÁTICA SIMBÓLICA AJUSTES DE CURVAS E INTERPOLAÇÃO Interpolaçãoco de Comandos. A variável ans foi listada. Para ocultar o resultado, basta digitar ponto e vírgula (;) no final do comando. Mui- tas vezes, em programas extensos este recurso faz-se necessário. Mais de um comando pode ser digi- tado na mesma linha, separados por vírgula ou ponto e vírgula. Quando a tecla Enter é 11COMPUTAÇÃO PARA ENGENHARIA pressionada, os comandos são executados na ordem em que foram digitados, sucessivamente da esquerda para a direita. Não é possível retornar a última linha exibida na janela de comandos, fazer uma correção para então executar novamente, produzindo um resultado na nessa mesma linha, mas as teclas de navegação (↑) e (↑) do teclado podem ser usadas para chamar um comando anteriormente digitado, assim é possível mo- dificá-lo, se for necessário, ou executá-lo novamente. O símbolo de porcentagem (%) é usado no início de uma linha de comando para designá-la como co- mentário. Isto significa que quando a tecla Enter for pressionada, a linha não será executada. Os comentá- rios são úteis em programas para adicionar descrições ou explicar algum ponto importante do programa. Operações Matemáticas Iniciaremos utilizando o Octave como uma calculadora, por isso precisamos relembrar alguns conceitos matemáticos importan- tes, como a ordem em que as operações são executadas, e também entender como as operações podem ser escritas no programa. Os operadores aritméticos são os seguintes: Operação Expressão Matemática Comando Adição (+) 50+4 >> 50+4 Subtração (-) 100-4 >> 100-4 Multiplicação (*) 77x4 >>77*4 Divisão à direita (/) 200/4 ou 200 4 >>200/4 Exponenciação (^) 38 >>3^8 12COMPUTAÇÃO PARA ENGENHARIA Teste cada um dos comandos acima. Digite o comando logo após (>>) e tecle Enter. Exemplo: É extremamente importante ter clareza da diferença entre expressão matemática e comando. Durante a disciplina vamos trabalhar sempre pensando na expressão matemática e no comando que a mesma representa. Vale lembrar, que as operações são executadas em ordem de procedência, ou melhor, na ordem estabelecida na Matemática de execução das operações. Para você não ter dúvida, sempre pense como você resolve uma operação matemática no papel, como por exemplo, (3 + 4)2 primeiro resolve-se a expressão do interior dos parênteses e depois o resultado deve ser elevado ao quadrado. O programa fará o mesmo. A ordem em que o Octave executa os operações é a seguinte: 1. Primeiro: parênteses. 2. Exponenciação 3. Multiplicação e divisão 4. Adição e subtração Caso duas ou mais operações tiverem a mesma ordem de procedência, a expressão mais à esquerda será executada primeira. Os parênteses podem ser utilizados para mudar a ordem de procedência, portanto cuidado com os parênteses. Observação: a separação decimal no Octave é feita por PONTO. Portanto, números como 2,345; devem ser digitados >>2.345 13COMPUTAÇÃO PARA ENGENHARIA Expressão 2: 3 . 2 + 5 . 14 >> 3 * 2 + 5 * 14 ans = 76 Inicialmente as multiplicações são executadas e, por último a soma é efetuada. Expressão 3: 7 + 30 6 >> 7 + 30 / 6 ans = 12 Entre a soma e a divisão, a primeira operação a ser executada é a di- visão, ou seja 30/6, em seguida o resultado é somado ao 10. A seguir são dadas algumas expressões matemá- ticas, em cada caso utilize o programa para calcular o valor das mesmas e indique a ordem em que as ope- rações são executadas. Expressão 1: 7(25 + 3.9) >> 7*(25+3*9) ans = 364 Inicialmente as operações do interior dos parênteses são executadas primeiro. Já no interior dos parênteses há duas operações: soma e multiplicação. A multiplicação é executada e, em seguida, a soma. A última operação a ser executada é a multiplicação externa aos parênteses. 14COMPUTAÇÃO PARA ENGENHARIA Expressão 4: 73 + 30 3 >> (73 + 30) / 3 ans = 34.3333 Note que a diferença entre O parênteses da letra c) altera a ordem de procedência, pois aqui a soma de dentro do parênte- ses é executada primeiro e depois o resultado é dividido por 3. Expressão 5: 73 4 >> 7^3 / 4 ans = 85.750 A exponenciação é a primeira operação a ser executada, e por fim a divisão. Expressão 6: 32 1 3 + 550,7 >> 32^(1/3)+55^0.7 ans = 19.704 Neste caso, há duas operações de exponenciação, desta for- ma, a que está mais a esquerda é executada primeiro, e depois a da direita. Em seguida, os resultados são somados. Expressão 7: 7 4 9 >> 8/4*9 ans = 18 A divisão e a multiplicação tem a mesma ordem de procedência, sendo assim as operações são executadas da esquerda para a direita. 15COMPUTAÇÃO PARA ENGENHARIA Quando uma expressão é muito longa, pode-se utilizar reticên- cias (...) para dividir a expressão em mais de uma linha. Por exemplo >> 1/2+(3*5*5*4*6*7)+1.111111333333555+7^3+... 3*3+(1+8+9+9+9+9+9+910) ans = 1.3918e+004 Deve-se teclar Enter, logo após as reticências, desta forma o cursor ficará piscando na linha seguinte, assim que o restante do comando for executado, o programa retornará a resposta. Formato de exibição de dados numéricos O programa possui uma ampla representação numérica, ou seja, podemos solicitar a exibição numérica conforme a necessidade. Por exemplo, se estamos trabalhando com funções custo, por exemplo, onde trabalha-se com unidades monetárias, nada melhor que uti- lizar o formato numérico com duas casas decimais após a vírgula, então nesta seção serão apresentados alguns formatados. Vamos lá? 16COMPUTAÇÃO PARA ENGENHARIA O programa possui uma ampla representação numérica, ou seja, podemos solicitar a exibição nu- mérica conforme a necessidade. Por exemplo, se estamos trabalhando com funções custo, por exemplo, onde trabalha-se com unidades monetárias, nada melhor que utilizar o formato numérico com duas casas decimais após a vírgula, então nesta seção serão apresentados alguns formatados. Vamos lá? format short: utiliza 5 dígitos decimais. >> 1/3 ans = 0.33333 format long: utiliza 15 dígitos decimais. >> format long >> 1/3 ans = 0.333333333333333 format bank: dois dígitos decimais. >> format bank >> 1/3 ans = 0.33 format short e: notação científica com 4 dígitos decimais. >> format shorte >> 1/3 ans = 3.3333e-001 O resultado acima deve ser interpretado como 3,3333 x 10-1. format long e: notação científica com 15 dígitos decimais. >> format longe >> 1/3 ans = 3.33333333333333e-001 format rat: format fracionário >> format rat >> 1/3 ans = 1/3 17COMPUTAÇÃO PARA ENGENHARIA Funções Matemáticas El ementares O programa Octave possui funções “prontas” em sua biblio- teca, nesta seção serão apresentadas algumas. Dica: crie uma lista em folha A4 com as principais funções e comandos, pois facilita o estudo. O Octave possui várias funções pré-definidas, a tabela abaixo apresenta algumas das funções elementares, bem como os comandos. Função Expressão Matemática Comando Raiz quadrada (sqrt(x)) √144 >> sqrt(144) n-ésima raiz real de um número real x (nthroot(x)) a√125 >> nthroot(125,3) Exponencial – ex (exp(x)) e1 >> exp(1) Valor absoluto /módulo – (abs(x)) |-7| >> abs(-7) Logaritmo natural – (log(x)) ln (100) >> log(100) Logaritmo na base 10 (log10(x)) log 100 >> log10(100) Fatorial de x - x! (factorial(x)) 3! >> factorial(3) 18COMPUTAÇÃO PARA ENGENHARIA Algo deve ficar muito claro: há uma diferença na escrita de uma expressão matemática e o seu respectivo comando no MATLAB. Portanto, fique atento a essas diferenças, faça a distinção! Caso você não lembre de alguma das funções listadas, como por exemplo, a definição da raiz quadrada de um número, faça uma breve pesquisa, mas lembre-se não fique com dúvidas. Esta disciplina, bem como o entendimento das funções matemáticas o ajudarão ao longo do curso. Se até aqui os conceitos estão claros, continue, senão volte e repita os exemplos, teste outros casos, se preferir você utilizar um livro de matemática do ensino fundamental e/ ou médio para lhe ajudar e não esqueça envie suas dúvidas. O comando das principais funções trigonométricas são os seguintes:Função Descrição Comando sin(x) sind(x) Seno do ângulo x (radianos) Seno do ângulo x (graus) >> sin(pi/6) = sind(30) ans = 0.50000 >> sind(30) ans = 0.50000 cos(x) cosd(x) Cosseno do ângulo x (radianos) Cosseno do ângulo x (graus) >> cos(pi/6) ans = 0.86603 >> cosd(30) ans = 0.86603 tan(x) tand(x) Tangente do ângulo x (radianos) Tangente do ângulo x (graus) >> tan(pi/6) ans = 0.57735 >> tand(30) ans = 0.57735 Observação: o comando pi representa o número π. Faça a verificação, digite apenas pi na janela principal. 19COMPUTAÇÃO PARA ENGENHARIA Funções de Arredondamento O programa apresenta funções que permitem arredondar um número. Faça os exemplos a seguir e verifique a diferença de cada função. Teste com outros números. Função Descrição Exemplo round(x) Arredonda x para o inteiro mais próximo. >> round(3.4) >>ans=3 fix(x) Arredonda x para o inteiro na direção de zero. >> fix(3.4) >>ans=3 ceil(x) Arredonda x para o inteiro na direção de mais infinito. >> ceil(3.4) >>ans=4 f loor(x) Arredonda x para o inteiro na direção de menos infinito. >> f loor(-3.4) >>ans=-4 rem(x,y) Retorna o resto da divisão de x por y >> rem(21,4) >>ans=1 sign(x) Função sinal. Retorna 1 (se x> 0); -1 (se x> sign(-3.4) >>ans=-1 20COMPUTAÇÃO PARA ENGENHARIA Declaração de Variáveis O Octave permite-nos inserir e trabalhar com variáveis, assim como em outros programas, há regras para nomear as variáveis. O sinal (=) é o operador de atribuição, o qual inicializa ou modifica o valor de uma variável. Estas variáveis devem ser iniciadas por letras e não pode conter espaços nem caracteres de pontuação. Além disso, o Octave distingue letras maiús- culas de minúsculas. Há algumas variáveis pré-definidas no programa, e não podem ser utilizadas para outra finalidade, ou seja, você não pode nomear uma variável com o nome de função já existente no programa. Algumas destas são: • ans – variável usada para armazenar os resultados. • pi – número π. • inf – infinito. • NaN ou nan – indeterminação, significa que o resultado não é um número. Exemplo: 0/0. • i e j - unidade imaginária de um número complexo. 21COMPUTAÇÃO PARA ENGENHARIA As variáveis podem ser renomeadas ou um valor atribuído a elas, exceto as variáveis pré-definidas. Faça uma pesquisa de outras funções. Pode-se criar novas variáveis, a forma de declaração de variáveis segue a seguinte sintaxe: Nome_variável = Valor numérico ou uma expressão Exemplo: As linhas de comando abaixo inicializam a variável x com o valor 5, em seguida, a variável é atualizada através da expressão x=7x+8. Observe, durante a execução, as alterações na janela “Ambiente de Trabalho”. Uma nova variável pode ser definida a partir de variáveis declaradas anteriormente. Analise o próximo exemplo. Exemplo: a. Atribua o valor numérico 10 para a variável a e 2 para a variável B, então calcule com a ajuda do Octave o valor da expressão numérica C=a2+B+(a+B)/2-a/B*7. Teste para outros valores! b. Faça o mesmo teste mas agora use (;) no final de cada linha. c. Faça as várias atribuições na mesma linha. Solução: >> a=10; >> B=2; >> C=a^2+B+(a+B)/2-a/B*7 C = 73 22COMPUTAÇÃO PARA ENGENHARIA Exemplo: a. Defina a variável x como 3-3+√71 b. Defina a variável y como e6 c. Defina a variável K como a soma de x e y. Caso o usuário queira visualizar as variáveis declaradas, apagar algumas delas, ou apagar todas elas, os comandos a seguir têm essas funções: • who – mostra as variáveis declaradas pelo usuário. • clear palavra – apaga a variável chamada palavra. • clear – apaga todas as variáveis declaradas pelo usuário. • clc – limpa a janela principal. Criação de Programas ou M-Files Até o momento todos os comandos foram digitados na Janela de Comandos, mas observe que os comandos digitados não podem ser salvos ou executados novamente. Claro, os comandos podem ser acessados através do histórico de co- mandos. Além disso, sempre que a tecla Enter é pressionada apenas o último comando digitado é executado. Para que os comandos possam ser corrigidos ou alterados, o arquivo salvo e executado novamente, podemos criar arquivos chamados de script files, scripts ou programas. Abrirá uma nova janela, a Solução: >> x=3^-3+sqrt(71) x = 8.4632 >> y=exp(6) y = 403.43 >> K=x+y K = 411.89 23COMPUTAÇÃO PARA ENGENHARIA qual chamaremos de Janela de Edição ou simplesmente Editor. Dentro desta janela você poderá digitar os comandos um em cada linha, ou separados por vírgula, ou ainda com ponto e vírgula no final. Primeiramente, crie uma pasta, pode ser na Área de Tra- balho. Por exemplo, criei a pasta chamada “EXEMPLOS”. Clique com o botão direito na Área de Trabalho, selecione Novo – Pasta e, então nomeie a pasta com o nome que desejar. Em seguida, no Octave mude o Diretório Atual, pois provavelmente o programa estará acessando a pasta no qual foi instalado Selecione a Pasta desejada na lista do Gerenciador de Ar- quivos. Por exemplo, clique em Desktop – EXEMPLOS. Observe a figura abaixo, o caminho listado no Diretório Atual, note que não há arquivos listados no Gerenciador de Arquivos. 24COMPUTAÇÃO PARA ENGENHARIA Este processo é necessário, pois os arquivos criados serão salvos automaticamente na pasta que está sendo “acessada” pelo programa. Tudo certo? Então vamos continuar. Vamos começar com um exemplo bem simples. Exemplo: Escreva um programa que calcule a raiz qua- drada de um número x. Solução: primeiro é necessário abrir a janela de edição, há várias maneiras. Observe a figura abaixo, uma das formas de abrir a janela de edição é, simplesmente, clicar na barra inferior em Editor, ou clicar no ícone que representa uma “pagina em branco”. 25COMPUTAÇÃO PARA ENGENHARIA O cursor ficará piscando ao lado do número 1, as linhas de comando são numeradas. Os comandos devem ser digitados diretamente nesta janela, mas os resultados continuam sendo apresentados na Janela de Comandos. Você pode trabalhar com a janela de edição como aparece abaixo ou pode “desa- coplá-la”, para isso clique nos “quadradinhos” como mostra a figura abaixo. A janela ficará como abaixo e você poderá posicioná-la como preferir. 26COMPUTAÇÃO PARA ENGENHARIA Agora, os comandos já podem ser digitados diretamente na janela de Edição, então vamos lá. A figura acima apresenta os comandos, na linha 1 cria-se uma variável x com o valor de 121, em seguida, na linha 2, uma nova variável, chamada raiz é criada para “guardar” o valor da raiz quadrada de x. Você deve ter percebido que ao clicar Enter na janela de Edição o cursor segue para a próxima linha, mas os comandos não são executados como na Janela de Comandos. Então, após os comandos serem digitados é necessário salvar o arquivo para, então executá-lo. Sendo assim, clique em Arquivo no Editor e depois em Salvar Como. Coloque o nome que desejar no arquivo, seguindo algumas regras: o arquivo não pode ter o nome de uma função pré-definida do programa, por exemplo, nenhum arquivo pode ter o nome de sqrt, o nome do arquivo não pode iniciar com números, apenas com letras, não pode haver sinais de pontuação nem espaço. 27COMPUTAÇÃO PARA ENGENHARIA Note que na Janela de Gerenciador de Arquivos o arquivo “teste1.m” aparecerá listados, isto indica que está tudo corre- to. Para executar o arquivo, clique na seta amarela destacada na figura acima. O programa executará uma linha por vez e, então o resultado será apresentado na Janela de Comandos. Teste o seu arquivo. Você pode alterar o valor de x, e clicar na seta amarela, assim o programa fará a alteração e mostrará o resultado atualizado. Bom, vamos criar outro arquivo. Na Janela de Edição clique no ícone que parece uma “pagina em branco” e, então, abrirá uma nova janela. 28COMPUTAÇÃO PARA ENGENHARIA Exemplo: Escreva um programa para criar duas variáveis numéricas (a e b) e outra que receba a raiz quadrada da soma de a e b. Solução: observe no final das duas primeiras linhasde comando foram colocados “;” e, por isso, as mesmas são exe- cutadas, mas seus resultados não são apresentados na janela de Comandos. Exemplo: Escreva um programa que calcule as raízes de uma função da forma y=ax2+bx+c. Solução: A Figura acima apresenta uma possível solução do problema proposto, mas vale lembrar que o programa pode ser escrito de várias maneiras diferentes. 29COMPUTAÇÃO PARA ENGENHARIA Síntese Neste capítulo aprendemos a: • efetuar as principais operações aritméticas; • alterar o formato de exibição dos numéros na tela do programa; • criar variáveis e manipulá-las; • utilizar as principais funções matemáticas “prontas” do programa; • criar programas, arquivos no Octave. Assim, você já pode utilizar o programa como uma calculadora científica, além de executar uma sequência de operações através de linhas de comandos em arquivos e salvá-los em qualquer diretório. 30COMPUTAÇÃO PARA ENGENHARIA Exercícios 1. Escreva a linha de comando do Octave para calcular os valores dados. a. a = 25, b = √7, c = a+b 27 b. a = e2, b = 3√2, c= 3√-8 c. a = cos(60°), b = tg(π/4) d. a = 3,5603 × 104 + 2,0034 × 103 2. Ao se digitar os comandos mostrados abaixo, obtêm-se mensagens de erro. O que elas significam? Como corrigir o comando? a. >> a=ln(5) error: 'ln' undefined near line 1 column 3 b. >> t=cos(3,1416) error: Invalid call to cos. c. >> x=16; y=sqrt(X) error: 'X' undefined near line 1 column 14 3. Crie um arquivo para calcular a área de um círculo e o volume de uma esfera. 31COMPUTAÇÃO PARA ENGENHARIA CRIAÇÃO DE ARRANJOS O programa trabalha com arranjos, mas o que é um arranjo? Arranjo é a maneira padrão utilizada pelo Octave para ar- mazenar e manipular dados. Um arranjo é uma lista de números organizados em linhas ou colunas. Os arranjos unidimensionais são os vetores e os arranjos bidimensionais são matrizes. 32COMPUTAÇÃO PARA ENGENHARIA Iniciaremos, tratando e definindo vetores, assim há duas possibilidades: • Vetor linha: digite os elementos dentro dos colchetes, se- parando-os com um espaço ou uma vírgula. • Vetor coluna: digite os elementos dentro dos colchetes a partir do colchete esquerdo [. Então, digite os elementos separando-os por ponto e vírgula ou pressionando Enter após cada elemento e, então digite o colchete direito ] para terminar. Exemplo: A tabela abaixo representa os dados populacionais da cidade de Caxias do Sul a. Atribua a lista de anos a um vetor linha chamado ano. b. Atribua os dados populacionais a um vetor coluna chamado pop. Solução: Ano 1991 1996 2000 2007 2010 População 290.925 323.488 360.419 399.038 435.564 33COMPUTAÇÃO PARA ENGENHARIA Em muitas aplicações, é muito útil criar vetores com espaçamento constante. O Octave possui duas maneiras diferentes. A primeira é utilizando o comando com colchetes e (:) da seguinte forma: nome variável = [m: q: n] ←último termo Assim para criar o vetor v=[3 6 9 12 15 18], por exemplo, basta digitar o comando >> v=[3:3:18] A segunda alternativa é através do comando linspace. A sintaxe é a seguinte: nome variável = linspace(xi, xf, n) ←número de elementos Agora, para gerar o vetor v=[3 6 9 12 15 18], o comando é >> v=linspace(3,18,6) primeiro elemento ↓ primeiro termo ↓ ↑ espaçamento ↑ último termo 34COMPUTAÇÃO PARA ENGENHARIA Matrizes Matrizes são arranjos bidimensionais e, neste, caso os elementos estão dispostos em linhas e colunas. As matrizes podem ser usadas para armazenar informação como uma tabela. Uma matriz A, m x n possui m linhas e n colunas, sendo a dimensão ou tamanho da matriz, m por n é escrita como a11 ... a1n A = am1 ... amn mxn A = (a ij)mxn aij i → linha j → coluna{ ( ( Uma matriz é criada atribuindo-se os elementos do arranjo a uma variável. nome variável = [1a linha de elementos; 2a linha de elementos; 3a linha de elementos; ...; última linha de elementos] Os principais tipos de matrizes são: • Matriz Linha: A = [1 2 3 4] • Matriz Coluna: A = 5 4 3 • Matriz Quadrada: número de linhas igual ao número de colunas A = 1 2 3 4 5 6 7 8 9 ordem 3x3 35COMPUTAÇÃO PARA ENGENHARIA • Matriz Identidade: é a matriz quadrada cujos elementos da diagonal principal são iguais a 1 e os elementos fora da diagonal principal são iguais a zero. I2 = 1 0 0 1 • Matriz Oposta: A = 7 5 -9 -4 3 -1 -A = -7 -5 9 4 -3 1 • Matriz Diagonal: matriz quadrada em que os elementos que não pertencem à diagonal principal são nulos. A = 1 0 0 0 7 0 0 0 -3 • Matriz Simétrica: matriz quadrada onde aij=aji, ou seja, A=AT A = 1 0 4 0 -5 7 4 7 10 AT = 1 0 4 0 -5 7 4 7 10 • Matriz Anti-Simétrica: matriz quadrada onde aij = -aji, ou seja, A = -AT A = 0 1 6 -1 0 -2 -6 2 0 -AT = 0 1 6 -1 0 -2 -6 2 0 • Matriz Transposta A = x y z 3 2 1 AT = x 3 y 2 z 1 As principais propriedades das matrizes transpostas são I. A + BT = AT + BT II. ATT= A III. (kA)T = kAT, onde k é um escalar IV. (AB)T = BT + AT 36COMPUTAÇÃO PARA ENGENHARIA Exemplo: Determine a matriz transposta da matriz a seguir: A = 10 -1 4 8 3 0 Solução: >> A=[10 -1; 4 8; 3 0] A = 10 -1 4 8 3 0 >> A' ans = 10 4 3 -1 8 0 O operador transposição é a aspa simples, ou seja, ( ‘ ). Exemplo: 1. Represente a matriz 2 x 3 1 2 3 4 5 6 2. Represente a matriz quadrada 5 35 43 4 76 81 21 32 40 Solução: a. >>A=[1 2 3; 4 5 6] b. >>B=[5 35 43; 4 76 81; 21 32 40] Não é necessário definir o tamanho do arranjo antes dos elementos serem atribuídos à variável. Uma vez que uma vari- ável tenha sido declarada é possível modificá-la para qualquer outro tamanho ou tipo diferente do original. Pode-se referenciar elementos dentro de um arranjo. Fazer referência significa indicar a posição que o elemento ocupa na linha ou coluna. 37COMPUTAÇÃO PARA ENGENHARIA Exemplo: Considere o vetor w=[20 40 50 60 70]. Referencie o primeiro e o terceiro elemento do vetor. Solução: Primeiro defina o vetor w >>w=[20 40 50 60 70] Para referenciar o primeiro elemento, basta digitar o nome da variável e a posição entre parênteses, ou seja, >>w(1)=20 De forma análoga para o terceiro elemento >>W(3)=50 Para referenciar um elemento de uma matriz, basta indicar a linha e a coluna do referido elemento. Exemplo: >> A=[35 45 -10; 4 6 9; -1 0 0] A = 35 45 -10 4 6 9 -1 0 0 >> A(1,2) ans = 45 Assim, o elemento que encontra na primeira linha e se- gunda coluna é o 45. Outra forma de referenciar é usando (:). Assim, • va(:) – referencia todos os elementos do vetor va. • va(m:n) – referencia os elementos entre as posições m e n. 38COMPUTAÇÃO PARA ENGENHARIA Exemplo: >> v=[1 2 3 4 5 6 7 8 9 10] >> u=v(:) >> w=v(5:10) w = 5 6 7 8 9 10 Note que w é um novo vetor criado a partir de v! Como uma matriz é um arranjo bidimensional, há outras possibilidades de referenciarmos os elementos de uma matriz, sendo assim temos • A(:,n) – referencia os elementos da matriz A em todas as linhas da coluna n. • A(n,:) - referencia os elementos da matriz A em todas as colunas da linha n. • A(:,m:n) - referencia os elementos da matriz A em todas as linhas entre as coluna m e n. • A(m:n,:) - referencia os elementos da matriz A em todas as colunas entre as linhas m e n. • A(m:n,p:q) - referencia os elementos da matriz A entre as linhas m e n e entre as colunas p e q. 39COMPUTAÇÃO PARA ENGENHARIA Operações Matemáticas Os comandos para as operações matemáticas com arranjos são os mesmos apresentados anteriormente, mas como é feita a multiplicação de matrizes? • Adição e Subtração A soma e subtração de matrizes estão definidas se as matri- zes possuem o mesmo tamanho. Assim, sejam A e B matrizes de mesma ordem, então A= A11 A12 A13A21 A22 A23 e B= B11 B12 B13 B21 B22 B23 A + B = (A11+B11) (A12+B12) (A13+B13) (A21+B21) (A22+B22) (A23+B23) • Multiplicação de Matrizes A condição de existência da multiplicação entre matrizes é que o número de colunas da primeira seja igual ao número de linhas da segunda, ou seja, Amxn.Bnxp=Cmxp 40COMPUTAÇÃO PARA ENGENHARIA Exemplo: 3 2 1 7 0 -3 2 1 1 3 4 0 Solução: >> [3 2 1; 7 0 -3]*[2 1; 1 3; 4 0] ans = 12 9 2 7 Para entender o processo de multiplicação observe o exemplo a seguir. Considere as matrizes A e B, a multiplicação é feita multiplicando-se as linhas de A pelas colunas de B. A= A11 A12 A13 A21 A22 A23 A31 A32 A33 A41 A42 A43 e B= B11 B12 B21 B22 B31 B32 A * B= (A11B11 + A12B21 + A13B31) (A11B12 + A12B22 + A13B33) (A21B11 + A22B21 + A23B31) (A21B12 + A22B22 + A23B33) (A31B11 + A32B21 + A33B31) (A31B12 + A32B22 + A33B33) (A41B11 + A42B21 + A43B31) (A41B12 + A42B22 + A43B33) Para efetuar a multiplicação é importante verificar as di- mensões das matrizes envolvidas na operação, pois pode acon- tecer que o produto não exista, e caso, você tente executar o produto no programa ele acusará um erro. • Determinantes Está associado a matrizes quadradas. Simbolicamente, o determinante de A pode ser escrito como det(A) ou |A|. A função nativa é det(A). Exemplo: A= 1 -2 3 -1 Solução: >> A=[1 -2; 3 -1]; >> det(A) ans = 5 41COMPUTAÇÃO PARA ENGENHARIA • Resolução de Sistemas Lineares Para resolver um sistema linear é necessário escrever o sistema na sua forma matricial. Exemplo: Resolva o sistema usando operações matriciais: { 4x - 2y + 6z = 8 2x + 8y + 2z = 4 6x + 10y + 3z = 0 Solução: Escreva na forma AX=B 4 -2 6 2 8 2 6 10 3 x y z = 5 4 3 >>A=[4 -2 6; 2 8 2; 6 10 3]; >>B=[8;4;0]; >>X=A\B Ou >> Xb=inv(A)*B X = -1.8049 0.2927 2.6341 Observe que as dimensões das matrizes devem ser res- peitadas na resolução de um sistema linear, ou seja, o vetor coluna B, deve ser digitado como uma coluna, caso contrário o programa acusará um erro na dimensão das matrizes. 42COMPUTAÇÃO PARA ENGENHARIA Operações Elemento a Elemento As operações que vimos até agora são aquelas que seguem rigorosamente a álgebra linear, mas muitas vezes deseja-se realizar operações matriciais de forma diferente. O Octave permite-nos realizar operações chamadas “operações elemen- to a elemento”, como por exemplo, multiplicação de matrizes elemento a elemento e não mais, linhas de uma matriz vezes as colunas da segunda. Operações elemento por elemento são sinalizadas digitan- do-se um ponto antes do operador aritmético. Sejam a=[a1 a2 a3 a4] e b=[b1 b2 b3 b4], então a.*b= [a1b1 a2b2 a3b3 a4b4] a./b= [a1/b1 a2/b2 a3/b3 a4/b4] a.^b= [(a1)b1 (a2)b2 (a3)b3 (a4)b4] 43COMPUTAÇÃO PARA ENGENHARIA As operações de soma e subtração são operações elemento a elemento, portanto as operações de multiplicação, expo- nenciação e divisão de vetores e/ou matrizes é que podem ser antecedidas de ponto (.) para indicar uma operação diferente da álgebra matricial. Exemplo: Analise as operações a seguir >> A=[2 6 3; 5 8 4]; >> B=[1 4 10; 3 2 7]; >> A.*B ans = 2 24 30 15 16 28 >> A./B ans = 2.00000 1.50000 0.30000 1.66667 4.00000 0.57143 >> B.^2 ans = 1 16 100 9 4 49 >> x=[1:8] x = 1 2 3 4 5 6 7 8 >> y=x.^2-4*x y = -3 -4 -3 0 5 12 21 32 Efetue a operação A*B (sem o ponto antes do asterisco), o que acontece? Antes de prosseguir faça outros testes, “brinque” com o programa, entenda bem os conceitos aprendidos até aqui. É extremamente importante ter clareza da diferença do ponto antes das operações. Há casos em que se faz necessário, em outros não. Exemplo: Aplicação Da Física, sabemos que a altura h, acima do solo, de um objeto lançado em queda livre (sob ação exclusiva da força gravitacional) é dada pela equação h(t) = h0 + v0t - 12 gt2 Onde h0 é a altura inicial (em metros), v0 é a velocidade inicial (em metros por segundo) e g≈10 m/s2 é a aceleração 44COMPUTAÇÃO PARA ENGENHARIA b. Note que o resultado é escrito na forma vetorial. No instante t=0 s a altura é de 0 m; em t=1,75 s a altura do objeto é de 10,93750; e assim por diante. Com base nos resultados responda: • Qual é a altura máxima alcançada pelo objeto? Em que instante acorre? • Qual é a altura do objeto em t=3 s? • Quanto tempo durou o movimento do objeto? gravitacional. Considere um objeto sendo jogado verticalmente para cima, a partir do solo, com velo- cidade inicial de 15 m/s. a. Substitua os valores na função apresentada e de- termine uma expressão para h(t). b. Determine a altura para do objeto para t=0 s; t=0,25 s; t=0,5 s; t=0,75 s; t=1 s; t=1,25 s; e assim por diante até t=3 s. Escreva os comandos em um arquivo .m. Solução: a. Temos h0=0 já que o objeto é lançado do solo, g=10 m/s2 e v0=15, assim a expressão para a altura é h(t)=15t-5t2. 45COMPUTAÇÃO PARA ENGENHARIA Síntese Neste capítulo, o foco foi a criação e manipulação de arranjos, aprendemos: • criação de arranjos: matrizes e vetores; • operações entre matrizes e vetores; • operações elemento a elemento (extremamente importantes no programa). Com isso, você já pode manipular e operar matrizes, lem- bre-se que toda tabela é uma matriz e que o programa traba- lha operando matrizes, mesmo quando estamos trabalhando com “escalares”. É necessário que fique muito claro como as operações elemento a elemento funcionam e quando são ne- cessárias, no próximo capítulo elas serão muito importantes. 46COMPUTAÇÃO PARA ENGENHARIA Exercícios 1. Escreva a linha de comando necessária para construir os vetores dados. a. x=[6 2 0 5] , vetor linha b. y=[6 2 0 5]T, vetor coluna c. w=[0,0 0,1 0,2 ... 9,8 9,9 10,0] 2. Construa uma matriz A de ordem 3x4, uma matriz B de ordem 3x4, C de ordem 4x3. Efetue as operações a seguir explicando cada uma. a. A+B b. A-B c. A*B d. A.*B e. A.^B f. A*C g. A.C 3. Pesquise os comandos a seguir. Dê exemplos: a. eye b. size c. zeros d. max e. mean 47COMPUTAÇÃO PARA ENGENHARIA 4. A temperatura ambiente T (em graus Celsius) em um ponto de uma cidade pode ser modelada pela função T(t)= - 16 t2 + 4t + 10 onde 0 ≤ t ≤ 24 é o tempo (em horas). a. Escreva um arquivo .m para calcular a temperatura nas 24 horas. Defina o vetor para o tempo como achar adequado. b. Com base nos dados obtidos em a) responda: I. Qual é a temperatura às 14 h? II. Em que instante a temperatura é a mais alta? III. Determine a temperatura média no período de 24 h. 5. Faça um pesquisa de como utilizar os comandos disp, fprintf e table. Crie exemplos e execute-os no programa. Alguns desses comandos serão usados ao longo do E-book. 48COMPUTAÇÃO PARA ENGENHARIA GRÁFICOS BIDIMENSIONAIS Há diferentes tipos de gráficos, aqui trabalharemos com os bidimensionais e cartesianos. Além de um ambiente de trabalho baseado em linha de comando, o Octave cria automaticamente uma janela separada para a apresentação de gráficos. O Octave possui uma série de recursos para geração de gráficos: 2D e 3D, gráficos esta- tísticos, coordenadas polares, enfim. 49COMPUTAÇÃO PARA ENGENHARIA Nós trabalharemos apenas com os gráficos bidimensionais cartesianos. O comando básico para o traçado desses gráficos é o comando plo- t(x,y). Os parâmetros x e y são coordenadas a serem traçadas. Usando vetores o programa irá traçar todos os pontos correspondentes a esses valores e uni-los por linhas retas. A figura ao lado representa um plano carte- siano, o qual é formado por dois eixos perpendi- culares entre si, o eixo horizontal e o eixo vertical, cada ponto no plano cartesiano bidimensional é identificado por suas coordenadas, através do par ordenado (x,y) e é único. Normalmente, utiliza-se as variáveis x ey no estudo de funções, onde x representa a variável independente e y a variável dependente, mas claro que as variáveis podem ser quaisquer, portanto entenda o conceito de traçar um gráfico com o auxílio do programa. Ei xo ve rt ica l Eixo horizontal • (x,y) x y 50COMPUTAÇÃO PARA ENGENHARIA Exemplo: Observe na figura abaixo que os pares ordenados são: (1,0); (2,4); (3,6); (5,1); (7,3); (8,9); (10,4). Para traçar o gráfico cria-se dois vetores, um para a variável x representada no eixo horizontal e outro para a variável y representada no eixo vertical. Em seguida, digita-se o comando plot(x,y) e, então, o programa automaticamente, cria os pontos e uma janela gráfica surge com o gráfico em questão. Identifique os pares ordenados na janela gráfica. Exemplo: A tabela abaixo representa os dados populacio- nais da cidade de Caxias do Sul. Trace o gráfico com os dados populacionais de Caxias do Sul. Solução: Ano 1991 1996 2000 2007 2010 População 290.925 323.488 360.419 399.038 435.564 51COMPUTAÇÃO PARA ENGENHARIA Observação: Note que os vetores das variáveis devem conter o mesmo número de elementos. Exemplo: Plote a função f (x)=x2+6x+3 para -10 ≤ x ≤ 4 Solução: Crie um vetor para x usando o linspace, por exemplo, com 10 elementos. >> x=linspace(-10,4,10); Crie um vetor para f(x) usando a função dada. Aqui, tome o cuidado de digitar corretamente a função, ou seja, fique atento a diferença entre a expressão matemática e o comando. Outro detalhe importante é que x é um vetor, portanto as operações de multiplicação, divisão e exponenciação devem ser operações elemento a elemento, portanto não esqueça os pontos antes de cada operação. >> y=x.^2+6*x+3; Use o comando plot para gerar o gráfico. A função dada é representada graficamente por uma pa- rábola (forma de U), mas observe na figura acima que a curva não está suave, pois percebe-se as retas utilizadas para traçar o gráfico. Como o pragrama liga os pontos através de retas, para suavizar a curva, devemos tornar a distância entre os pontos tão pequena que as retas não sejam percebidas. Para isso, basta diminuir a distância entre os elementos do vetor x, ou em outras palavras, aumentar o número de elementos dos dois vetores. 52COMPUTAÇÃO PARA ENGENHARIA O gráfico abaixo foi gerado com 50 elementos e note que a curva melhorou muito. Tome muito cuidado ao traçar gráficos de curvas de funções. Exemplo: Plote a função f(x) = (x+5)2 4+3x2 para -3 ≤ x ≤ 5 Solução: >> x=linspace(-3,5,100); >> y=(x+5).^2./(4+3.*x.^2); >> plot(x,y) 53COMPUTAÇÃO PARA ENGENHARIA Especificações A cor padrão do gráfico é azul. Podemos adicionar alguns argumentos no comando plot para especificar cor, estilo da linha e cor, estilo dos marcadores. • Especificadores de Linha • Especificadores de Marcadores • Especificadores de Cor Para alterar o tipo de linha, cor, especificador, o comando torna-se plot(x,y,’Especificador’). O próximo exemplo apre- senta algumas situações. Exemplo: Gerar o gráfico da função y=sen(3t)cos(4t)+0,6; 0≤t≤6 Com as seguintes especificações: a. Linha contínua vermelha b. Linha pontilhada magenta c. Marcador verde d. Linha contínua e estrelas pretas Especificador de Linha Sólida (padrão) Tracejada Pontilhada Traço-ponto Especificador - -- : -. Tipo de marcador Triângulo Quadrado Losango Estrelas Especificador ^,v, s d p, h Cor da linha Ciano Magenta Amarelo Preto Especificador c m y k Tipo de marcador Sinal Círculo Asterisco Ponto Cruz Especificador + o * . x Cor da linha Vermelha Verde Azul Especificador r g b 54COMPUTAÇÃO PARA ENGENHARIA Solução: Crie um script e faça as alterações diretamente no arquivo. t=linspace(0,6,120); y=sin(3*t).*cos(4*t)+.6; a. plot(x,y,’r’) b. plot(x,y,'--m') c. plot(x,y,'*g') d. plot(x,y,’-pk’) Os gráficos podem ser salvos como imagem. Na janela grá- fico clique em Arquivo e, em seguida em Salvar Como, digite o nome da imagem e acrescente o “tipo”, como por exemplo, graf1.jpg. Assim, é possível acrescentar gráficos como imagens em arquivos de texto. O Octave permite gerar mais de um gráfico na mesma janela, há mais de um comando para esta opção. Vejamos um exemplo Exemplo: Da Física, se um corpo é lançado com velocidade v a um ângulo θ com a horizontal, então seu alcance R é dado por R = v2 g sen(2θ) Trace, com o auxílio do Octave, os gráf icos de R(θ) para v=15,20,40 m/s no mesmo plano cartesiano. Considere g = 9,81 m/s2. 55COMPUTAÇÃO PARA ENGENHARIA Solução: Pode-se ainda formatar o gráfico, ou seja, inserir rótulo aos eixos, título, legenda. Execute os comandos a seguir com a janela de gráfico aberta ou escreva um scritp com o exemplo anterior. • xlabel('\theta (radianos)') • ylabel('R (m)') • title('Gráficos de três funções na mesma janela') • legend('v=10 m/s’, 'v=20 m/s', 'v=30 m/s') Note que a legenda segue a ordem do comando plot, ou seja, as funções são nomeadas na ordem em que são geradas através do comando plot. O gráfico, agora, apresenta os rótulos, título e legenda. 56COMPUTAÇÃO PARA ENGENHARIA Um comando útil é o grid, o qual inseri uma grade na figura gerada, basta digitar o comando logo após o comando plot, ou seja, Exemplo: Dispõe-se de uma lâmina retangular de 20 cm por 12 cm, para construir uma caixa retangular sem a tampa, cortando um quadrado de igual tamanho em cada uma das quinas da mesma. 57COMPUTAÇÃO PARA ENGENHARIA A expressão para o volume é V=(20-2x)(12-2x)x a. Represente o volume graficamente para 0≤x≤6. b. Determine o volume máximo. c. Determine (aproximadamente) o lado dos quadrados a serem recortados de modo que possa obter uma caixa de maior volume possível. Solução: Os comandos e o gráfico são apresentados na Figura abaixo. Para responder ao item b) basta utilizar o comando max(vetor), e assim, o valor do volume máximo (aproximado) é de 192,45 cm2. Por análise gráfica, o valor aproximado de x é 2.1 cm. 58COMPUTAÇÃO PARA ENGENHARIA Síntese Podemos chamar este capítulo de “O Capítulo dos Gráficos”, pois aprendemos os comandos básicos para gerar um gráfico bidimensional no Octave e/ou Matlab. Assim, agora você já pode gerar gráficos através de dados de tabelas e/ou a partir de funções matemáticas. Antes de prosseguir, aproveite e pesquise outras formas de gráficos que podem ser geradas no Octave, como por exemplo, gráficos de barras, pizzas, gráficos tridimensionais entre outros. 59COMPUTAÇÃO PARA ENGENHARIA Exercícios 1. Desenhe os gráficos das funções a seguir. Adicione grade, legenda, rótulos nos eixos e título. a. f(x)=x2+x-4 b. g(x)=e-x-1 c. h(x)=2+3 cos(x) d. i(x)= x+1 x-1 2. Pesquise os comandos. Dê exemplos: a. subplot b. axis 60COMPUTAÇÃO PARA ENGENHARIA PROGRAMANDO NO OCTAVE Aqui, serão apresentados comandos e formas extremamente básicos de lógica e programação. Busque um livro para complementar seus estudos. Siga com calma, bom trabalho! Um programa de computador é uma sequência de comandos devidamente ordenados que visam à resolução de um proble- ma. Em um programa considerado básico, os comandos são executados um após o outro, na ordem em que são digitados. Todavia, em muitas situações, são necessários programas mais sofisticados, em que os comandos não são executados necessa- riamente na ordem em que são digitados, ou seja, o programa toma decisões baseado na estrutura do programa. 61COMPUTAÇÃO PARA ENGENHARIA O Octave também é uma linguagem de programação e, portanto, dispõe de ferramentas que podem ser utilizadas para controlar o f luxo de um programa. É claro que o redire- cionamento do f luxo de um programa requer alguma espécie de estrutura de decisão, ou seja, o programa deve decidir se executa o próximo comando ou ignora um ou mais comandos e continua em uma linha de programa diferente. O programa toma essas decisões comparando os valores assumidos pelas variáveis. Uma maneira de fazer isso é usar operadores lógicos e relacionais os quais são apresentadosa seguir. Operadores Lógicos e Relacionais Um operador relacional compara dois números determi- nando se o resultado da sentença de comparação é verdadeiro (V) ou falso (F). Se a sentença for verdadeira, o valor retornado é 1. Caso contrário, o valor retornado é 0. Os operadores relacionais são: O operador relacional que testa a igualdade entre dois objetos é representado por dois sinais de igualdade (==), sem espaço entre eles. Isso porque um único sinal de igualdade representa o operador de atribuição. Exemplos: a. >> 5>8 ans = 0 Operador Relacional Descrição Maior que = Maior que ou igual a == Igual a ~= Diferente de 62COMPUTAÇÃO PARA ENGENHARIA b. >> a=5>y=(68)+(5*3==60/4) y = 2 d. >> b=[15 6 9 4 11 7 14]; >> c=[8 20 9 2 19 7 10]; >> d=c>=b d = 0 1 1 0 1 1 0 e. >> b==c ans= 0 0 1 0 0 1 0 f. >> b~=c ans= 1 1 0 1 1 0 1 Operadores relacionais são utilizados juntamente com ope- radores aritméticos dentro de expressões matemáticas. Se dois arranjos são comparados (apenas arranjos de mesma dimensão podem ser comparados), a comparação é feita elemento por ele- mento do arranjo e o resultado é um arranjo lógico de 1s e 0s. Se um escalar é comparado com um arranjo, o escalar será comparado com cada elemento do arranjo e o resultado é um arranjo lógico de 1s e 0s, de acordo com cada posição de cada elemento no arranjo. Os resultados de um operação relacional com vetores, que são vetores com 0s e 1s são chamados vetores lógicos. Vetores e arranjos numéricos de 0s e 1s não funcionam como vetores/arranjos lógicos de 0s e 1s. Ordem de precedência: em uma expressão matemática que inclua operadores lógicos e aritméticos, as operações aritméticas (+,-,*,/) precedem todas as operações relacionais. Exemplo: a. >> 3+4> 3+(4> x=-2; y=5; >> -5> -5 > ~(y> ~y>~y. Qual o resultado? Como nesta sentença não há parênteses, a negação é executada primeiro, “negar a variável y” significa toná-la falsa, pois como y é uma variável que foi declarada anteriormente, a mesma é uma sentença verdadeira por definição, logo “~y” é falsa (0). Assim, a sentença res- tante é 0 > ~((y>=-8)| (x> ~(y>=-8)| (x=). Exemplo: T1=T>=26. • Para determinar o número de dias, some os valores do vetor T1, ou seja adicione todos os 1s no vetor Ndias. Exemplo: Ndias=sum(T1). • Para a letra b), crie um vetor lógico com temperaturas entre 25°F e 30°F. Exemplo: T2 =(T>=25) \& (To número de horas trabalhadas:'); h=input('Por favor, digite o valor da hora trabalhadas: R$'); • O programa determina o salário, multiplicando o número de horas trabalhadas pelo valor da hora. Exemplo: Salario=t*h • A sentença if verifica se o número de horas excede a 40 horas semanais. Caso exceda, os comandos internos à sentença calculam o pagamento extra e adicionam o valor ao salário base. Caso contrário, o programa deve saltar para a sentença end. 68COMPUTAÇÃO PARA ENGENHARIA Um exemplo deste programa é o seguinte Ao executar o programa, verifique o que acontece na ja- nela de comandos. O programa “aguarda” o usuário digitar os dados necessário para o cálculo da variável Salario. Faça uma breve pesquisa sobre o comando input. Observe que enquanto o programa aguarda o cursor fica “piscando” e (>>) não aparecem. Ao executar o programa, verifique o que acontece na ja- nela de comandos. O programa “aguarda” o usuário digitar os dados necessário para o cálculo da variável Salario. Faça uma breve pesquisa sobre o comando input. Observe que enquanto o programa aguarda o cursor fica “piscando” e (>>) não aparecem. Estrutura if-elseif-else-end A estrutura if-elseif-else-end possui duas sentenças de teste if e elseif que tornam possível selecionar um dos três grupos de comandos para a execução. Exemplo: Escreva um script conforme a figura abaixo. Altere os valores da variável x para entender bem a estrutura. Qual é a ideia do programa: testar se x é positivo, negativo ou nulo. Note que há um comando novo, o comando disp. O comando é utilizando para textos com formatação simples. O programa testa a primeira sentença “SE x>0, então (faça) x é positivo”, “senão se x0, o programa deve exibir a mensagem: ”A equação possui duas raízes reais distintas”, e as raízes devem ser mos- tradas na próxima linha. Se D=0, o programa deve exibir a mensagem: “ À equação possui duas raízes reais iguais”, e a raiz deve ser mostrada na próxima linha. Se D3. Explique a diferença entre o operador lógico (==) e o sinal de igualdade (=). 77COMPUTAÇÃO PARA ENGENHARIA FUNÇÕES Vamos aprender a criar nossas próprias funções? O programa têm funções pré-defindas, as quais já estuda- mos algumas, mas podemos criar funções através do comando function da seguinte forma: function [Dados de saída] = Nome_ função(Dados de entrada) 78COMPUTAÇÃO PARA ENGENHARIA Vamos exemplificar com uma situação bem simples: Exemplo: Criar uma função que calcule a área de um círculo de raio r. Solução: Primeiro é necessário definir as variáveis. Neste caso, o valor do raio é o dado de entrada e o o valor da área é o dado de saída (omitiremos unidades de medida). No Editor Octave, inicia-se com o comando de definições de entradas e saídas como na Figura abaixo: 79COMPUTAÇÃO PARA ENGENHARIA Observações: • Salve o arquivo de modo similar aos Scripts, mas o nome da função deve ser idêntico ao nome dado dentro do arquivo. Note na Figura acima a parte marcada em azul. • Não salve suas funções com nomes de funções pré-definidas ou nomes de variáveis em uso, por exemplo, sqrt não pode ser usado como nome de função, pois é o comando para o cálculo de raiz quadrada de um número. • Note que o arquivo foi salvo no diretório que está sendo acessado pelo programa. Sempre observe se o arquivo está no Gerenciador de Arquivos. • Os arquivos de funções são salvos com a extensão .m como os scritps. • Para chamar a função, uma das formas é utilizando a linha de comando destacada em azul, a qual deve ser escrita na Janela de Comandos com os valores das entradas. Note que no exemplo, foi calculo o valor da área de um círculo de raio 10, mas basta alterar o valor de entrada que o valor da área é atualizado. • Na linha 3 há end, mas não é necessário. • O arquivo não precisa estar aberto para ser executado. • Não coloque espaços, acentos, ou quaisquer sinais de pon- tuação no nome da função ou das variáveis. No exemplo anterior vamos acrescentar o cálculo do volume de um cilindro reto? 80COMPUTAÇÃO PARA ENGENHARIA Lembrando que a fórmula do volume é: V=πr2 h onde r é o raio do círculo da base e h representa a altura do cilindro. Observe que o volume pode ser reescrito da seguinte forma: V=Ah com A sendo a área do círculo da base do cilindro. O resultado é: Exemplo: Um máquina sobre desvalorização ao lon- go do tempo. Daqui a t anos o valor dessa máquina será V=50(0,8)t milhares de reais. Escreva uma função que calcu- le o valor atual da máquina e a desvalorização que sofreu ao longo dos anos. 81COMPUTAÇÃO PARA ENGENHARIA Solução: Uma solução é apresentada na Figura abaixo. Assim, após 5 anos o valor da máquina será de aproximadamente 16 mil reais e sua desvalorização ao longo deste tempo foi de 33,6 mil reais. Como escrever comentários de ajuda? Os comentários são precedidos do símbolo de %, pois não fazem parte do código do programa. É comum inserir logo após a linha de definição da função, informações sobre a função como comentário. Isso é muito útil, pois ao longo do tempo muitas funções são criadas e, desta forma você pode organizar seus arquivos e/ou funções. Por exemplo, vamos inserir ao exemplo anterior linhas de comentários com explicações sobre a função. 82COMPUTAÇÃO PARA ENGENHARIA Para acessar os comentários de ajuda, basta digitar na Janela de comandos help e o nome da função. Como exercício, crie comen- tários de ajuda para as funções criadas anteriormente. O comando lookfor pode ser utilizado para pesquisar em as linhas de comentários (sempre na linha inicial logo após o comando function) de todas as funções nativas e funções “criadas” pelo usuário a palavra-chave digitada pelo usuário. Veja, o exemplo a seguir, onde o programa busca a palavra-chave root dentre as funções nativas. 83COMPUTAÇÃO PARA ENGENHARIA Funções Anônimas As funções anônimas são funções definidas diretamente na Janela Principal ou até mesmo dentro de uma função comum sem que haja a necessidade da criação de um arquivo. Uma função anônima é declarada com o seguinte comando: Nome = @ (lista de argumentos) expressão A expressão deve ser digitada com comandos que sejam válidos no programa. Exemplo: Definir a função f (x)=e2x cos(x) de forma anô- nima e gerar o gráfico no intervalo de -1 ≤ x ≤ 1,5. Solução: Para calcular o valor da função para x=π, basta digitar f(π) como mostra a Figura acima. A função foi definida utilizan- do-se as operações elemento a elemento pois o parâmetro de entrada pode ser um vetor, por exemplo: Assim, o gráfico pode ser gerado através dos comandos: 84COMPUTAÇÃO PARA ENGENHARIA Síntese Espero que você esteja gostando que está aprendendo e lembre-se siga em frente sem medo. Neste capítulo aprendemos um pouco sobre como definir funções no programa. Em resumo aprendemos a criar: • Functions; • Funções anônimas; • Comentários de ajuda. 85COMPUTAÇÃO PARA ENGENHARIA Exercícios 1. Crie uma função para calcular as notas de Grau B. O programa deve solicitar ao usuário duas notas principais. 2. Se uma bola estacionária é lançada da altura h0 acima da superfície da Terra, com velocidade vertical v0, a posição e a velocidade da bola como função do tempo serão dadas pelas equações h(t) = 1 2 gt2 + v0 t + h0 v(t) = gt + v0 onde g é a aceleração da gravidade da gravidade (-9,81 m/s2), h é a altura acima da super- fície da Terra (assumindo ausência de atrito do ar) e v é o componente vertical da velo- cidade. Escreva um programa que solicite ao usuário a altura inicial da bola em metros, a velocidade da bola em m/s e um determinado instante e apresente como saída: posição, velocidade da bola. 3. Analise os processos do seu trabalho e/ ou do seu dia a dia. Algum deles pode ser sistema- tizado e escrito como uma função? Se sim, escreva uma função. ax2 + bx + c = 0 86COMPUTAÇÃO PARA ENGENHARIA POLINÔMIOS O software em estudo possui muitas ferramentas, uma delas é a manipulação de polinômios. Siga em frente fazendo relações com outras disciplinas e/ou com o que você já aprendeu ao longo da vida acadêmica. Polinômios são expressões algébricas que aparecem em muitas situações de aplicação nas áreas das Engenharias, Física e outras Ciências. 87COMPUTAÇÃO PARA ENGENHARIA Uma função polinomial de grau n é da forma y = f (x) = anxn + an-1xn-1 + ... + a1x + a0 onde x é a variável independente, an, an-1,..., a1, a0 são nú- meros reais denominados de coeficientes e n é um número inteiro não negativo Define-se o polinômio pelo grau do maior exponente que aparece na expressão, assim: • y = a0 é dito um polinômio de grau 0. Exemplo: y = 2, f(x) = π. • y = a1x + a0 é chamado de polinômio de grau 1. Exemplo: y = 2x + 1, f(x) = 3x - 4. • y = a2 x2 + a1 x + a0 define um polinômio de grau 2 ou qua- drático. Exemplo: y = 2x2, f(x) = x2 + 7. E assim, por diante. Para representar um polinômio no Octave é necessário inserir os coeficientes na forma vetorial. Exemplo: Representação de um polinômio a. 5x-7 representa-se por p=[5 -7]. b. 6x2-3x+11 representado por p=[6 -3 11]. c. x2, lembre-se que este polinômio é da forma x2+0x+0, e portanto, é representado por p=[1 1 1]. d. 3x4-3x2-1 (3x4+0x3-3x2+0x-1) representado por p=[3 0 -3 0 -1]. Note que se o polinômio é de grau 2, por exemplo, há 3 coeficientes, se o polinômio é de grau 4, há 5 coeficientes, ou seja, se o polinômio é de grau n, existem n+1 coeficientes. O valor numérico de um polinômio em ponto x=α é o resultado da substituição de x por α. 88COMPUTAÇÃO PARA ENGENHARIA Exemplo: Considere f(x) = 6x2 + 40x - 1, determine f(2). Solução: f(2) significa determinar o valor de f para x=2, ou seja, f(2) = 6.22 + 40.2 - 1 = 103 O comando que realiza esta operação no Octave é polyval(p,x), onde p é um vetor contendo os coeficientes do polinômio e x é um número, uma variável inicializada ou uma expressão matemática computável. Para o exemplo acima, os comandos são: >> f=[6 40 -1]; >> polyval(f,2) ans