#!/usr/bin/env python # coding: utf-8 # # Aplicações de Matrizes em Situações do Dia a Dia # #### Vamos apresentar dois problemas rotineiros: um sobre um planejamento de atividades físicas e outro sobre planejamento financeiro de uma empresa. Ambos podem ser solucionados utilizando conhecimentos sobre matrizes em Álgebra Linear. # ##### Leon, Steven J., 1943 - Álgebra Linear com Aplicações/ Steven J. Leon; tradução Valéria de Magalhães Iório - [reimpr]. Rio de Janeiro: LTC, 2008. # ### Aplicação 1: Queimando calorias # Alysson pesa 81 quilos (os dados são meramente ilustrativos...). Ele quer perder peso por meio de um progama de dieta e exercícios. Após consultar a **tabela 1**, ele monta o programa de exercícios na **tabela 2**. quantas calorias ele vai queimar por dia se seguir esse progama? # #### Tabela 1. Calorias Queimadas por Hora # - **Atividades Esportivas** # |**Peso**|**Andar a 3km/h**|**Correr a 9km/h**|**Andar de bicicleta a 9km/h**|**Jogar Tênis(Moderado)**| # |:------:|:---------------:|:----------------:|:----------------------------:|:-----------------------:| # |69 |213 |651 |304 |420 | # |73 |225 |688 |321 |441 | # |77 |237 |726 |338 |468 | # |81 |249 |764 |356 |492 | # In[1]: # importando a biblioteca numpy do Python import numpy as np # importando a biblioteca de funções do Python matplotlib import matplotlib import matplotlib.pyplot as plt get_ipython().run_line_magic('matplotlib', 'inline') # In[2]: # definindo a matriz A a partir da tabela 1 A = np.array([[213, 651, 304, 420], [225, 688, 321, 441], [237, 726, 338, 468], [249, 764, 356, 492]]) # In[3]: # imprimindo a matriz A print("A matriz A é\n\n", A) # #### Tabela 2. Horas por Dia para Cada Atividade # - **Programa de Exercícios** # |**Dias da Semana**|**Andar**|**Correr**|**Andar de Bicicleta**|**Jogar Tênis**| # |:----------------:|:-------:|:--------:|:--------------------:|:-------------:| # |Segunda-feira |1.0 |0.0 |1.0 |0.0 | # |Terça-feira |0.0 |0.0 |0.0 |2.0 | # |Quarta-feira |0.4 |0.5 |0.0 |0.0 | # |Quinta-feira |0.0 |0.0 |0.5 |2.0 | # |Sexta-feira |0.4 |0.5 |0.0 |0.0 | # In[4]: # definindo a matriz B a partir da tabela 2 B = np.array([[1.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 2.0], [0.4, 0.5, 0.0, 0.0], [0.0, 0.0, 0.5, 2.0], [0.4, 0.5, 0.0, 0.0]]) # In[5]: # imprimindo a matriz B print("A matriz B é\n\n", B) # ###### Solução: # A informação pertinente para Alysson está localizada na quarta linha da **matriz A**, pois são os dados referentes a quem pesa 81 quilos. # Vamos criar uma nova matriz **x** do tipo **vetor-coluna** baseado nos dados contidos na 4º linha da **matriz A**. # In[6]: # x recebe a quarta linha de A x = A[3] # In[7]: # x é transposta para se tornar um vetor-coluna x = np.transpose(x) # Para resolver o problema, basta multiplicar a matriz $B_{5_{x}4}$ pela matriz $x_{4_{x}1}$. # In[8]: # realizando a multiplicação da matriz B com a matriz x Calorias = np.dot(B,x) # In[10]: # imprimindo a matriz de calorias gastas por semana print("A matriz com valores de calorias gastas é:\n\n", Calorias) # In[11]: # esquematizando as etiquetas do gráfico no eixo x DiasdaSemana = ['Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira'] # Dessa forma, vemos que Alysson, seguindo sua rotina de atividades físicas, queimara as respectivas calorias durante a semana: # |**Dias da Semana**|**Calorias Gastas**| # |:----------------:|:-----------------:| # |Segunda-feira |605.0 calorias | # |Terça-feira |984.0 calorias | # |Quarta-feira |481.6 calorias | # |Quinta-feira |1162.0 calorias | # |Sexta-feira |481.6 calorias | # Assim, podemos ter o seguinte gráfico: # In[12]: # definindo as dimensões do gráfico plt.figure(figsize=(8,5)) # definindo a legenda do eixo x plt.xlabel('Dias da Semana') # definindo as legendas do eixo y plt.ylabel('Calorias Gastas') # plotando o gráfico e definindo uma legenda plt.plot(DiasdaSemana, Calorias, label = 'Calorias Gastas/Dia') # chamando a legenda para ser exposta no gráfico plt.legend() # definindo um input diferente de 0 para entrada verdadeira na grade do gráfico plt.grid(True) # definindo o título do gráfico plt.title('Gráfico de Calorias Gastas por Alysson') # A visualização não ficou muito adequada com esse gráfico. Talvez um gráfico de barras fosse mais adequado para essa situação. # In[15]: # definindo as dimensões do gráfico plt.figure(figsize=(8,5)) # definindo a legenda do eixo x plt.xlabel('Dias da Semana') # definindo as legendas do eixo y plt.ylabel('Calorias Gastas') # plotando o gráfico e definindo uma legenda plt.barh(DiasdaSemana, Calorias, label = 'Calorias Gastas/Dia') # chamando a legenda para ser exposta no gráfico plt.legend() # definindo um input diferente de 0 para entrada verdadeira na grade do gráfico plt.grid(True) # definindo o título do gráfico plt.title('Gráfico de Calorias Gastas por Alysson') # ### Aplicação 2: Gestão Financeira de uma Empresa # Uma empresa fabrica três produtos. Suas despesas de produção estão divididas em três categorias. Em cada uma dessas categorias, faz-se uma estimativa do custo de produção de um único exemplar de cada produto. Faz-se, também, uma estimativa da quantidade de cada produto a ser fabricado por trimestre. Essas estimativas são dadas na **tabela 3** e na **tabela 4**. A empresa gostaria de apresentar a seus acionistas uma única tabela mostrando o custo total por **trimestre** de cada uma das três categorias: **matéria- prima**, **pessoal** e **despesas gerais**. # #### Tabela 3. Custo de Produção por Item (em reais) # |**Gastos** |**Produto A**|**Produto B**|**Produto C**| # |:-------------:|:-----------:|:-----------:|:-----------:| # |Matéria-prima |0.10 |0.30 |0.15 | # |Pessoal |0.30 |0.40 |0.25 | # |Despesas-gerais|0.10 |0.20 |0.15 | # In[16]: # definindo a matriz C baseada na tabela 3 C = np.array([[0.10, 0.30, 0.15], [0.30, 0.40, 0.25], [0.10, 0.20, 0.15]]) # In[17]: # imprimindo a matriz C print("A matriz C é:\n\n", C) # ###### Tabela 4. Quantidade Produzida por Trimestre # |**Produto**|**Verão**|**Outono**|**Inverno**|**Primavera**| # |:---------:|:-------:|:--------:|:---------:|:-----------:| # |A |4000 |4500 |4500 |4000 | # |B |2000 |2600 |2400 |2200 | # |C |5800 |6200 |6000 |6000 | # In[18]: # definindo a matriz D baseado na tabela 4 D = np.array([[4000, 4500, 4500, 4000], [2000, 2600, 2400, 2200], [5800, 6200, 6000, 6000]]) # In[19]: print("A matriz D é:\n\n", D) # Se fizermos o produto **CD**, teremos o custo de cada categoria por trimestre. # In[20]: # realizando a multiplicação da matriz C com a matriz D Custos = np.dot(C, D) # In[21]: # imprime a matriz de custos por trimeste em cada categoria, em reais print("A matriz de Custos é:\n\n", Custos) # |**Custos de cada Categoria por Trimeste**|**Verão**|**Outono**|**Inverno**|**Primavera**| # |:---------------------------------------:|:-------:|:--------:|:---------:|:-----------:| # |Matéria-prima |1870 |2160 |2070 |1960 | # |Pessoal |3450 |3940 |3810 |3580 | # |Despesas Gerais |1670 |1900 |1830 |1740 | # In[22]: # esquematizando as etiquetas do gráfico no eixo x Trimestres = ['Verão', 'Outono', 'Inverno', 'Primaveira'] # definindo os valores gastos apenas na categoria Matéria-Prima MateriaPrima = Custos[0] # definindo os valores gastos apenas na categoria Pessoal Pessoal = Custos[1] # definindo os valores gastos apenas na categoria Despesas Gerais DespesasGerais = Custos[2] # In[23]: # definindo as dimensões do gráfico plt.figure(figsize=(12,8)) # definindo a legenda do eixo x plt.xlabel('Trimestres') # definindo a legenda do eixo y plt.ylabel('Dinheiro(R$)') # plotando o gráfico para a categoria Matéria-Prima, com sua respectiva legenda plt.plot(Trimestres, MateriaPrima, label = 'Matéria-Prima') # plotando o gráfico para a categoria Pessoal, com sua respectiva legenda plt.plot(Trimestres, Pessoal, label = 'Pessoal') # plotando o gráfico para a categoria Despesas Gerais, com sua respectiva legenda plt.plot(Trimestres, DespesasGerais, label = 'Despesas Gerais') # chamando a legenda para ser exposta no gráfico plt.legend() # definindo um input diferente de 0 para entrada verdadeira na grade do gráfico plt.grid(True) # definindo o título do gráfico plt.title('Gráfico de Custos por Categoria em cada Trimestre') # Desse modo, observe que a álgebra linear pode estar presente em diversas situações do nosso dia a dia, das mais simples até as situações mais complexas da engenharia. Por esse motivo, a disciplina deve ser levada a sério e merece ser estudada com um maior grau de profundidade por parte dos estudantes. # ### Alguma Dúvida? Entre em Contato Comigo: [Me envie um e-mail](mailto:alysson.barbosa@ee.ufcg.edu.br)