Baixe o app para aproveitar ainda mais
Prévia do material em texto
Variáveis Indexadas (Matrizes) APRESENTAÇÃO Matrizes, arranjos ou estruturas de dados homogêneas de duas dimensões representam coleções de elementos que são identificados por índices que representam linhas e colunas. A linguagem MATLAB fornece recursos poderosos para trabalhar com matrizes, que vão desde simples operações até funções complexas, que realizam cálculos avançados com o objetivo de encontrar soluções para diversas questões do mundo real que podem ser representadas por expressões matemáticas. Nesta Unidade de Aprendizagem, você vai estudar sobre a declaração de estruturas de dados homogêneas de duas dimensões e a construção de algoritmos em pseudocódigo e em MATLAB na solução de problemas. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Declarar estruturas de dados de duas dimensões (matrizes) em pseudocódigo e linguagem MATLAB. • Construir algoritmos com estruturas de dados homogêneas (matrizes) em pseudocódigo e linguagem MATLAB. • Aplicar as estruturas de dados homogêneas (matrizes) na solução de problemas.• DESAFIO Um sistema de equações lineares pode ser entendido como um conjunto de equações aplicadas em um mesmo conjunto de variáveis. Esse conjunto de equações pode ser representado por matrizes, cuja solução se dá pela atribuição de números às variáveis que satisfazem todas as equações desse sistema. Na matemática, os sistemas lineares fazem parte da base de uma parte fundamental da álgebra linear e da matemática moderna aplicada, podendo ser empregada na engenharia, na física, na economia, e em várias outras áreas. Um modelo de um sistema de equações lineares com tratamento matricial 2x2 está descrito a seguir: x + y = 3 x – y = 1 Você é um engenheiro e precisa desenvolver um algoritmo em MATLAB que resolva o sistema linear 2x2, apresentado acima, por meio do tratamento matricial. Utilize as funções nativas do MATLAB para auxiliar na solução. INFOGRÁFICO Uma matriz bidimensional é um arranjo de elementos dispostos de modo tabular, como uma grade ou tabela (2 x N ou N x 2). Cada elemento da matriz possui um par de índices, que inicia na coluna um – linha um e vai até a quantidade total de linhas e colunas da matriz. É por meio desses índices que as estruturas de repetição permitem realizar a navegação e acessar os elementos da matriz individualmente para ler, editar ou excluir dados. Veja, no Infográfico a seguir, a ilustração da declaração de uma matriz e como realizar a navegação em seus elementos por meio de uma estrutura de repetição. CONTEÚDO DO LIVRO Matrizes bidimensionais são estruturas de dados homogêneas que armazenam coleções de elementos organizados em linhas e colunas. Na engenharia, aprender a desenvolver programas com matrizes é uma atividade muito importante, uma vez que permite trabalhar com dados que podem ser tabuados e armazenados para a realização de diversas operações, como cálculos e simulações. Nesse contexto, a linguagem MATLAB possui diversos recursos que facilitam a manipulação e a execução de operações com matrizes. Para saber mais, acompanhe a leitura do capítulo Variáveis indexadas (matrizes), da obra Algoritmos e Programação, que serve como base teórica desta Unidade de Aprendizagem. C6_Algoritmo.indd 14 10/05/2018 17:07:40 Variáveis indexadas (matrizes) Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: Declarar estruturas de dados de duas dimensões (matrizes) em pseu- docódigo e linguagem MATLAB. Construir algoritmos com estruturas de dados homogêneas (matrizes) em pseudocódigo e linguagem MATLAB. Aplicar as estruturas de dados homogêneas (matrizes) na solução de problemas. Introdução Matrizes, arranjos ou estruturas de dados homogêneas de duas dimensões representam coleções de elementos que são identificados por índices que representam linhas e colunas. A linguagem MATLAB fornece recursos poderosos para trabalhar com matrizes, que vão desde simples operações até funções complexas, que realizam cálculos avançados com o objetivo de encontrar soluções para diversas questões do mundo real que podem ser representadas por expressões matemáticas. Neste capítulo, você vai estudar sobre a declaração de estruturas de dados homogêneas de duas dimensões e a construção de algoritmos em pseudocódigo e em MATLAB na solução de problemas. Estruturas de dados de duas dimensões (matrizes) em pseudocódigo e linguagem MATLAB Uma estrutura de dados bidimensional, também conhecida como matriz ou arranjo, é uma relação de elementos referenciados por índices que representam linhas e colunas, como uma tabela (PALM III, 2013). C6_Algoritmo.indd 1 10/05/2018 17:07:36 Uma matriz é uma estrutura de elementos homogêneos, isto é, seus ele- mentos são todos do mesmo tipo de dados, como uma relação de números inteiros, de números reais ou de strings. Isso significa que não é possível inserir elementos de tipos diferentes em uma matriz, mesmo que a linguagem de programação não exija que a declaração do tipo de dados seja explícita (GILAT, 2012). Algumas linguagens de programação exigem que as variáveis sejam declaradas com um tipo de dados específico, como Pascal, C, Java e outras. No entanto, há linguagens que realizam a conversão implícita de dados e, assim, não requerem que o tipo seja informado na declaração, como MATLAB, Visual Basic, PHP, etc. Nesse caso, uma matriz que contém números inteiros e reais terá seus elementos convertidos para números reais. Matrizes são organizadas por índices ou subscritos, que representam cada um dos pares da estrutura. Na linguagem MATLAB, o índice de uma matriz inicia a partir da primeira posição (1, 1), seguindo até o número de linhas e colunas (N, N), conforme ilustrado na Figura 1 (GILAT, 2012). Figura 1. Estrutura de uma matriz. Os elementos de uma matriz são armazenados em posições contíguas da memória do dispositivo ou da máquina virtual que o armazenam, por isso os elementos podem ser acessados diretamente a partir de seus índices (DEITEL; DEITEL, 2011). Variáveis indexadas (matrizes)2 C6_Algoritmo.indd 2 10/05/2018 17:07:36 A linguagem MATLAB foi desenvolvida especificamente para tratar com matrizes. Dessa forma, qualquer relação de elementos pode ser tratada como uma matriz, como, por exemplo, dados estatísticos de determinada população (GILAT, 2012). A declaração de uma matriz em pseudocódigo pode ser realizada pela indica- ção de um nome para a variável que representa a estrutura seguida da atribuição dos valores da tabela, ou seja, dos valores dos elementos de cada posição: Esse exemplo cria uma matriz de duas linhas e três colunas cujos elementos foram inseridos automaticamente na sua declaração. É possível, ainda, declarar uma matriz sem indicar os elementos na sua criação, podendo inseri-los poste- riormente por meio de uma estrutura de repetição, conforme será apresentado posteriormente neste capítulo. No MATLAB, a declaração de uma matriz se dá pela separação entre as linhas pelo caractere ponto e vírgula, podendo separar os elementos de cada linha por espaço ou por uma vírgula (PALM III, 2013). Com o MATLAB, é possível criar matrizes com valores zero e um por meio das instruções e . Essas instruções declaram matrizes de acordo com o número de linhas e colunas passados como parâmetro (PALM III, 2013). É possível, ainda, criar uma matriz com elementos espaçados de um fator constante no MATLAB. Para isso, deve-se indicar o valor do primeiro elemento, o incremento e o valor do último elemento. Se o incremento, que representa o parâmetro do meio, não for informado, o interpretador do MA- TLAB usará o valor um, incrementando a sequência a cada número inteiro. 3Variáveis indexadas (matrizes) C6_Algoritmo.indd 3 10/05/2018 17:07:37 No entanto, se o incremento superar o último valor, a matriz receberá até o último número que não excedero valor final (CHAPRA, 2013). Uma matriz identidade pode ser criada automaticamente por meio da instrução . Essa instrução cria a matriz com base em um único parâmetro, que indica a quantidade de linhas e colunas (GILAT, 2012). Algoritmos com estruturas de dados homogêneas (matrizes) em pseudocódigo e linguagem MATLAB Uma vez defi nidas as declarações das estruturas de dados homogêneas bidimen- sionais, isto é, das matrizes de duas dimensões, conforme visto anteriormente, é possível executar diversas ações com esses dados, como pesquisar, editar, concatenar e acrescentar elementos, entre outras. Acessar elementos Sabendo que os índices de uma matriz iniciam na posição (1,1), é possível acessar diretamente qualquer elemento de uma matriz a partir de seus índices, informando apenas as posições ou um intervalo, conforme com os seguintes exemplos: Variáveis indexadas (matrizes)4 C6_Algoritmo.indd 4 10/05/2018 17:07:37 Editar elementos A edição de uma matriz também ocorre pela seleção dos índices de seus elementos. Essa edição pode modifi car um único elemento ou uma faixa que indica a posição inicial e a fi nal. Se houver a atribuição para uma posição inexistente, essa posição será criada e seus elementos intermediários receberão zero (CHAPRA, 2013). Além disso, é possível excluir elementos de uma matriz pela atribuição de um valor nulo para determinada posição ou para uma faixa de posições. Nesse caso, a matriz reduz o seu tamanho para a quantidade de itens restantes. Concatenar matrizes A concatenação de duas matrizes se dá pela união de seus elementos. O resul- tado pode ser atribuído a outra variável ou a qualquer uma das variáveis que estão sendo concatenadas, desde que as matrizes possuam o mesmo número de linhas (PALM III, 2013): 5Variáveis indexadas (matrizes) C6_Algoritmo.indd 5 10/05/2018 17:07:37 Transpor matrizes Transpor uma matriz signifi ca transformá-la de linhas para colunas e de colunas para linhas, isto é, uma matriz 2x3 vai se transformar em 3x2. Para transpor uma matriz, utilize o caractere aspa simples, conforme o seguinte exemplo (GILAT, 2012): Operações com matrizes É possível realizar diversas operações com matrizes, como soma, subtração, divisão, multiplicação, exponenciação e outras. As operações adição, subtração e multiplicação por um escalar podem ser realizadas de forma direta, usando os operadores conhecidos da computação: +, - e * (GILAT, 2012). No entanto, as operações multiplicação, divisão e potenciação exigem uma representação um pouco diferente. Para isso, utiliza-se um ponto antes do operador na expressão, em uma representação conhecida no MATLAB por operações elemento por elemento (GILAT, 2012): Variáveis indexadas (matrizes)6 C6_Algoritmo.indd 6 10/05/2018 17:07:38 Algumas operações entre matrizes exigem que elas tenham a mesma dimensão e/ou que sejam matrizes quadradas, isto é, o número de linhas deve ser igual ao número de colunas. Percorrer matrizes É possível percorrer uma matriz para realizar comparações ou operações com seus elementos. A navegação em uma matriz se dá pelos índices dos elementos, que apontam para o conteúdo de cada posição, entre a posição (1,1) e (N,N) do arranjo (PALM III, 2013). O pseudocódigo de uma estrutura de repetição em uma matriz é apresentado a seguir. Nessa estrutura, as variáveis e indicam a posição de cada elemento pela navegação na estrutura, permitindo, assim, imprimir o conteúdo de cada posição. Para percorrer uma matriz de elementos com o MATLAB é preciso enca- dear duas estruturas de repetição, como ou . O seguinte exemplo navega em uma matriz 2x3 e multiplica por dois apenas os elementos pares que compõem a estrutura (GILAT, 2012). 7Variáveis indexadas (matrizes) C6_Algoritmo.indd 7 10/05/2018 17:07:38 Estruturas de dados homogêneas (matrizes) na solução de problemas A linguagem MATLAB é uma poderosa ferramenta para a solução de pro- blemas matemáticos. Inúmeras funções nativas estão disponíveis para o uso em matrizes, que facilitam e agilizam cálculos e operações nessas estruturas, conforme será apresentado a seguir. Contagem de elementos A instrução pode ser utilizada para obter a dimensão de uma matriz, cujo resultado apresenta dois números: a quantidade de linhas e de colunas (CHAPRA, 2013). Outra forma de encontrar o número de elementos de uma matriz se dá pela função , conforme os seguintes exemplos: Seleção de elementos Não raras vezes é necessário encontrar e/ou selecionar elementos de uma matriz de acordo com determinados critérios, como menor e maior, média, mediana e soma, entre outros. Com matrizes, por padrão, as seguintes funções realizam essas operações nas colunas (GILAT, 2012). Seleção de índices e valores Utilize a função para selecionar os índices dos elementos que satisfaçam a determinados critérios de pesquisa (GILAT, 2012). No exemplo a seguir, identifi cam-se os índices e os valores dos elementos possuem valor maior que o número quatro na linha um da matriz. Variáveis indexadas (matrizes)8 C6_Algoritmo.indd 8 10/05/2018 17:07:38 Funções nativas Diversas funções matemáticas estão disponíveis para o uso com matrizes no MATLAB. Essas funções servem de apoio para a execução de cálculos avançados, que vão desde a soma e o produto de uma matriz até funções mais complexas, como produto escalar, produto vetorial, seno, co-seno e tangente, entre outros. Destaca-se que, por padrão, as operações são realizadas com as colunas das matrizes (GILAT, 2012). Geração de números aleatórios Números aleatórios são importantes para a geração de dados que servem de base para diversas atividades da engenharia, como simulações, por exemplo. O MATLAB possui três formas diferentes de gerar números aleatórios para matrizes, que produzem números diferentes a cada execução, conforme segue (GILAT, 2012). Instrução rand Essa instrução gera números aleatórios entre 0 e 1 uniformemente distribuídos. Se apenas um parâmetro for passado, uma matriz quadrada será produzida com números aleatórios. No entanto, para produzir uma matriz não quadrada com números aleatórios a partir da função , utilize os dois parâmetros para defi nir a quantidade de linhas e colunas. 9Variáveis indexadas (matrizes) C6_Algoritmo.indd 9 10/05/2018 17:07:39 Instrução randi Essa instrução gera números aleatórios inteiros uniformemente distribuídos entre 1 e o número passado como primeiro parâmetro; o segundo parâmetro defi ne a quantidade de linhas da matriz e o terceiro, a quantidade de colunas. Se o terceiro parâmetro for omitido, o MATLAB produzirá uma matriz quadrada. Instrução randn Essa instrução gera uma distribuição normalizada de números defi nidos pela média 0 e desvio padrão 1. Com isso, pode gerar variáveis escalares, vetoriais ou matriciais cujos parâmetros defi nem as linhas e colunas da matriz. Entrada e saída de dados em matrizes Embora muitos problemas possam ser resolvidos pela defi nição de dados fi xos em variáveis, em outros casos, pode ser necessário promover a interação do usuário com a aplicação por meio da entrada e saída de dados. Variáveis indexadas (matrizes)10 C6_Algoritmo.indd 10 10/05/2018 17:07:39 Entrada de dados No MATLAB, a entrada de dados em matrizes pode ser realizada pelo teclado ou pela leitura de arquivos armazenados em alguma pasta no disco rígido ou em memória auxiliar, como um pendrive, por exemplo. Para isso, a instrução input pode ser utilizada para enviar uma mensagem ao usuário e, ao mesmo tempo, capturar a resposta inserida na aplicação (GILAT, 2012). Nesse exemplo, declaramos uma matriz vazia e implementamos dois laços de repetição para realizar a leitura dos elementos. A instrução converte um número para string para formar a mensagem exibida ao usuário e a função captura a leitura para dentro da matriz. Existem diversas formas de ler arquivos no MATLAB, mas foge ao objetivo deste capítulo explicar cada uma delas. Nesse sentido,trataremos a forma mais simplificada, que simplesmente carrega para uma matriz os dados de um arquivo que estejam em formato compatível. Essa entrada de dados facilita a execução de programas que possuem dados já armazenados, isto é, que foram capturados por outras fontes, mas que podem ser trabalhados no MATLAB. Para carregar um arquivo, utilize a instrução (GILAT, 2012). Nesse exemplo, o MATLAB cria uma variável com o nome do arquivo e atribui o conteúdo do arquivo a ela (Figura 2). Figura 2. Arquivo que contém os dados de uma matriz. 11Variáveis indexadas (matrizes) C6_Algoritmo.indd 11 10/05/2018 17:07:39 Na sequência, dois laços de repetição percorrem a matriz para exibir cada um dos elementos. Observe: o conteúdo do arquivo deve ser compatível com uma matriz. Saída de dados No MATLAB, a saída pode ser realizada pela simples execução de uma variável – modo como foi apresentado até agora –, ou pelas instruções e . Para ambos os modos, é possível apresentar os dados de uma matriz de forma única ou pela navegação em seus elementos por meio de uma estrutura de repetição (PALM III, 2013). A instrução é muito simples e exibe o conteúdo de uma variável sem qualquer parâmetro adicional. Já a função é mais elaborada e se comporta de forma seme- lhante ao comando da linguagem C. Assim, é possível controlar a apresentação da saída dos dados, como definir o formato dos números, inserir quebras de linhas, etc. Variáveis indexadas (matrizes)12 C6_Algoritmo.indd 12 10/05/2018 17:07:40 Assista ao vídeo sobre entrada e saída de dados no MATLAB no link ou código a seguir. https://goo.gl/h3kzMD CHAPRA, S. C. Métodos numéricos aplicados com MATLAB® para engenheiros e cientistas. 3. ed. Porto Alegre: AMGH, 2013. DEITEL, P. J.; DEITEL, H. M. Como Programar em C. 6. ed. São Paulo: Pearson, 2011. GILAT, A. MATLAB com aplicações em engenharia. 4. ed. Porto Alegre: Bookman, 2012. PALM III, W. J. Introdução ao MATLAB para engenheiros. 3. ed. Porto Alegre: AMGH, 2013. 13Variáveis indexadas (matrizes) C6_Algoritmo.indd 13 10/05/2018 17:07:40 Encerra aqui o trecho do livro disponibilizado para esta Unidade de Aprendizagem. Na Biblioteca Virtual da Instituição, você encontra a obra na íntegra. DICA DO PROFESSOR Matrizes são estruturas de dados de mais de uma dimensão que possuem a capacidade de armazenar uma relação de elementos que podem ser identificados por índices. Pelos índices, é possível percorrer cada um dos elementos da matriz para avaliar, comparar e realizar operações, como, por exemplo, cálculos algébricos. Assista ao seguinte vídeo para conhecer a declaração, entrada e saída de matrizes no MATLAB. Conteúdo interativo disponível na plataforma de ensino! EXERCÍCIOS 1) Indique a alternativa que representa corretamente a declaração de uma matriz de 3 linhas e 2 colunas no MATLAB. A) m= [[1;2]; [3;4]; [5;6]]; B) m= [[1;2;3]; [4;4;6]]; C) m= [1;2;3;4;5;6]; D) m= [1, 2; 3, 4; 5, 6]; E) m= [1, 2, 3; 4, 5, 6]; 2) Considerando duas matrizes m e n, marque a alternativa que representa corretamente a operação de multiplicação de elementos na linguagem MATLAB. A) r= m * n; B) r= m ** n; C) r= m .* n; D) r= multi(m, n); E) r= prod(m, n); 3) Considerando as duas matrizes m e n, indique a alternativa que apresenta o resultado correto da concatenação dessas matrizes, cujo conteúdo é: 1 2 3 4 3 4 5 6 5 6 7 8 m= [1 2; 3 4; 5 6]; n= [3 4; 5 6; 7 8]; A) r= [m n]; B) r= [m; n]; C) r= [m + n]; D) r= [m & n]; E) r= concat(m, n); 4) Analise o seguinte algoritmo baseado na linguagem MATLAB e marque a alternativa que representa o conteúdo da matriz m após a execução dos laços de repetição. m= [1:5; 2:6] * 3; for i= 1 : size(m, 1) for j= 1 : size(m, 2) if mod(m(i,j), 2) == 0 m(i,j)= m(i,j) * 2; end end end A) 1, 2, 3, 4, 5 2, 3, 4, 5, 6 B) 3, 6, 9, 12, 15 6, 9, 12, 15, 18 C) 3, 12, 9, 24, 15 12, 9, 24, 15, 36 D) 6, 6, 18, 24, 30 12, 18, 12, 30, 18 E) 6, 12, 18, 24, 30 12, 18, 24, 30, 36 5) Dado o seguinte algoritmo escrito na linguagem MATLAB, indique a alternativa que representa o resultado correto. m= [1, 2, 3; 4, 5, 6] n= find(m(2,1:3) < 5) A) 1 B) 1, 2 C) 1, 2, 3 D) 1, 2, 3, 4 E) 1, 2, 3, 4, 5 NA PRÁTICA MATLAB é uma linguagem de programação voltada para cálculos de álgebra bastante utilizados na engenharia, especialmente para a manipulação de estruturas de dados de uma ou mais dimensões, como vetores e matrizes. Entre os cálculos de álgebra que são realizados com vetores, apresenta-se o produto vetorial, que pode calcular a normal de um triângulo formado por dois vetores, para identificar a força ou a direção do movimento de uma peça em um plano de três dimensões. Nesse contexto, vamos apresentar o cálculo do vetor normal de um plano em R3 a partir do produto vetorial dado em determinante de uma matriz. Acompanhe, na imagem a seguir, o cálculo. SAIBA + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: [Matlab] - Criando Matrizes Neste link, você terá acesso a um vídeo que auxiliará a compreender como criar matrizes em MATLAB. Conteúdo interativo disponível na plataforma de ensino! [Matlab] - Trabalhando com Matrizes - Parte 1 Neste link, você terá acesso à parte 1 de um vídeo que auxiliará a conhecer como trabalhar com matrizes com MATLAB. Conteúdo interativo disponível na plataforma de ensino! [Matlab] - Trabalhando com Matrizes - Parte 2 Neste link, você terá acesso à parte 2 de um vídeo que auxiliará a conhecer como trabalhar com matrizes com MATLAB. Conteúdo interativo disponível na plataforma de ensino! [Matlab] - Trabalhando com Matrizes - Parte 3 Neste link, você terá acesso à parte 3 de um vídeo que auxiliará a conhecer como trabalhar com matrizes com MATLAB. Conteúdo interativo disponível na plataforma de ensino! Produto vetorial, explicação teórica e como calcular Neste link, você terá acesso a um vídeo que auxiliará a conhecer o produto vetorial entre dois vetores em R3. Conteúdo interativo disponível na plataforma de ensino!
Compartilhar