Baixe o app para aproveitar ainda mais
Prévia do material em texto
FERRAMENTAS MATEMÁTICAS APLICADAS AULA 2 Prof. Ricardo Alexandre Deckmann Zanardini 2 CONVERSA INICIAL Estudamos anteriormente as operações fundamentais. Podemos, então, avançar nos estudos e abordar a utilização de bibliotecas que aumentam as possibilidades de resolução de problemas por meio do Python. Essas bibliotecas são ótimas, pois ampliam as capacidades do Python e facilitam muito o trabalho dos usuários. Nesta aula vamos aprender a importar bibliotecas e trabalhar com algumas das principais funções das bibliotecas “NumPy”, “SymPy” e “Matplotlib”. TEMA 1 – BIBLIOTECAS DO PYTHON O Python apresenta diversas funções desenvolvidas originalmente, mas, graças ao trabalho de programadores do mundo todo, muitas bibliotecas são desenvolvidas de modo a ampliar a capacidade de resolução de problemas por meio do Python e auxiliar o trabalho de usuários e programadores. Uma biblioteca do Python é um pacote contendo funções desenvolvidas para a resolução de um determinado conjunto de problemas. Há muitas bibliotecas contendo funções prontas para que possamos construir gráficos, trabalhar com matrizes e vetores, com problemas estatísticos, análise de dados, matemática simbólica, mineração de dados, com construção de árvores de decisão, redes neurais e muito mais. A vantagem do uso das bibliotecas é que não é necessário desenvolver um programa para executar determinada tarefa quando já existe uma função pronta. Isso não significa que todo o trabalho esteja feito. É claro que sempre há muito a desenvolver, mas o uso das bibliotecas economiza muito tempo e amplia as capacidades de uso dessa linguagem. No nosso caso, o objetivo não é a programação, e sim o uso das funções já existentes para que possamos resolver problemas relacionados à engenharia e ao nosso cotidiano. É importante ressaltar que, no caso do Python, o termo “função” se refere a um comando no qual existe uma sequência de passos para a resolução de um determinado problema; na matemática, o termo “função” se refere a uma relação entre quantidades. Abordaremos as funções matemáticas com mais detalhes nesta aula. Para evitarmos confusões de terminologia, podemos identificar quando estamos abordando uma função do Python e quando se trata de uma função matemática de acordo com o contexto. 3 Podemos importar uma biblioteca do Python ou apenas algumas funções da biblioteca. Veremos a seguir as maneiras de como podemos fazer essas importações. A primeira possibilidade é importar uma biblioteca utilizando o comando “import”. Para importarmos a biblioteca simbólica SymPy, por exemplo, podemos escrever “import sympy”: Fazendo isso, todas as funções da biblioteca SymPy foram importadas e podem ser utilizadas. Outra possibilidade é importar uma função específica da biblioteca utilizando o comando “from” seguido de “import”. Por exemplo, “from sympy import diff” que importa a função “diff” destinada à obtenção da derivada de uma função matemática. Outra forma muito utilizada de importação de uma biblioteca é o uso de um asterisco “*” que importa todas as funções da biblioteca. Esse comando é equivalente ao “import”: “from sympy import *” 4 Para simplificar a digitação, também é possível importar uma biblioteca e atribuir a ela um nome mais curto. Isso facilita no momento de digitarmos os comandos necessários para executarmos as funções dessa biblioteca. Por exemplo, podemos fazer “import matplotlib.pyplot as plt” Com isso, ao executarmos uma função da biblioteca, podemos digitar “plt” em vez de “matplotlib”. Por exemplo, para visualizarmos um gráfico, o comando passa a ser “plt.show()” e não mais “matplotlib.show()”. TEMA 2 – INTRODUÇÃO À MATEMÁTICA SIMBÓLICA Em muitos problemas reais precisamos trabalhar com variáveis do tipo “x”, “y”, “z”..., mas no Python não temos funções originais que fazem isso. Por esse motivo, existe a biblioteca “SymPy” que acrescenta essas funcionalidades à linguagem e que está sendo aprimorada constantemente. Para trabalharmos com essa biblioteca, o primeiro passo é importá-la. Em seguida, é preciso definir quais variáveis serão interpretadas como símbolos. Faremos isso utilizando a função “symbols”. Especificaremos quais serão essas variáveis separando cada uma delas por vírgulas. Dentro da função “symbols”, colocaremos essas variáveis entre aspas e separadas por espaços. Para trabalharmos com as variáveis simbólicas “x” e “y”, precisamos dos seguintes passos: from sympy import * x,y = symbols("x y") Essa importação precisa ser feita uma única vez. Nos nossos exemplos, estaremos importando a biblioteca e definindo as variáveis em cada resolução, 5 mas isso não é obrigatório. Faremos isso, pois se alguém for resolver apenas determinados exemplos, precisará lembrar de importar a biblioteca e definir as variáveis. Agora que definimos as variáveis, vamos imaginar que temos uma função matemática que relaciona o preço total a ser pago com a quantidade de fatias de bolo a serem compradas. Se cada fatia de bolo custa R$ 2,00, a função que relaciona essas quantidades é dada por y=2x em que “y” é o total a ser pago e “x” é a quantidade de fatias de bolo adquiridas. Em Python, após importarmos a biblioteca “SymPy” e definirmos “x” e “y” como símbolos, podemos escrever a função matemática assim: “y=2*x” Se quisermos mostrar a função “y”, basta digitarmos “print(y)” Agora que já temos a expressão que relaciona o preço total com a quantidade de fatias de bolo, podemos querer, por exemplo, saber qual é o preço total referente à compra de 7 fatias de bolo. Para que possamos saber esse valor, precisamos que o Python substitua o valor de “x” por “7” e faça o respectivo cálculo. Mas como fazer isso? Essa substituição é feita pelo comando “subs”. Escrevemos: “y.subs(x,7)” em que “y” indica a variável que receberá a substituição de “x” por “7” indicados entre parênteses. O resultado será 14, pois o Python substituirá “x” por “7” e fará a multiplicação necessária: 6 Vamos acompanhar mais alguns exemplos cujo objetivo é calcular valores funcionais em problemas práticos. Exemplo 1 Para colocar porcelanato em uma residência, a empresa cobra uma taxa fixa de R$ 100,00 mais R$ 20,00 por metro quadrado. Utilizando o Python, escreva a função que relaciona o preço total com a metragem e determine qual será o total a ser pago para que sejam colocados 76 metros quadrados de porcelanato. Resolução: from sympy import * x,y=symbols("x y") y=20*x+100 total=y.subs(x,76) print(y) print(total) O custo será de R$ 1.620,00. 7 Exemplo 2 O custo de produção referente a x unidades produzidas de um determinado bem, por hora, é dado pela função C(x) = 0,04x³ - 4x² + 101x + 5000. Determine o custo referente à produção de 15 unidades por hora. Resolução: from sympy import * x,C=symbols("x C") C=0.04*x**3-4*x**2+101*x+5000 C.subs(x,15) Nessa situação, o custo para a produção de 15 unidades corresponde a R$ 5.750,00. Além de valores, também é possível substituirmos expressões no lugar de variáveis. Com isso, podemos trabalhar com funções matemáticas compostas, ou seja, podemos substituir uma variável por uma determinada função. Exemplo 3 Em uma indústria, o custo c referente à produção diária de x unidades é de c (x) = x2 + 2x + 300. Sabe-se que o nível de produção dessa indústria é de x(t) = 20t unidades durante t horas de trabalho. Expresse o custo de produção em função do tempo. Resolução: from sympy import * c,x,t = symbols("c x t") c=x**2+2*x+300 c.subs(x,20*t) 8 Observe que, nesse exemplo, as variáveis são “c”, “x” e “t”. Para substituirmos “20t” na função “c”, utilizamos o comando “c.subs(x,20*t)” o que resultou na expressão “400*t**2+40*t+300” quecorresponde a “c=400t2+40t+300”. A função é apresentada na forma de uma string. Podemos ter uma representação melhor de expressões e de símbolos matemáticos, acrescentando a linha “init_printing()” no código. Essa função vai utilizar a melhor opção disponível para a apresentação dos resultados. Nesse exemplo, o resultado obtido é TEMA 3 – FATORAÇÃO E EXPANSÃO DE EXPRESSÕES A fatoração de uma expressão consiste em escrever essa expressão como o produto de duas ou mais expressões. Esse procedimento é muito útil na simplificação de expressões matemáticas. A expressão “2x4+8x3+10x2”, por exemplo, pode ser fatorada colocando-se “2x2” em evidência, pois é um fator comum aos dois termos, ou seja, 2x4+8x3+10x2=2x2(x2+4x+5). Essa fatoração pode ser feita também no Python. Basta utilizarmos o comando “factor”: “factor(2*x**4+8*x**3+10*x**2)” 9 Podemos também utilizar o Python para fatorações mais complexas. Por exemplo, a expressão “xy3+2x2y4” na forma fatorada, corresponde a “xy3(2xy+1)”: e a expressão “ 1 122 − +− x xx ” na forma fatorada é igual a “x-1”: Além da fatoração, muitas vezes é preciso efetuar a expansão de expressões. Mas como assim? Podemos efetuar a multiplicação ou desenvolver produtos notáveis com o auxílio do Python. Para expandirmos expressões, o comando a ser utilizado é “expand”. A expressão “(x2+1)(x2+3x+6)”, por exemplo, corresponde a “x4+3x3+7x2+3x+6”. Em Python, o procedimento para efetuarmos essa multiplicação é: 10 Sabemos que um produto notável consiste em uma multiplicação especial de expressões matemáticas. Alguns produtos notáveis bastante conhecidos são: ( ) 222 2 bababa ++=+ ( ) 222 2 bababa +−=− ( )( ) 22 bababa −=−+ ( ) 32233 33 babbaaba +++=+ ( ) 32233 33 babbaaba −+−=− A expansão de um produto notável pode ser feita em Python de maneira muito simples. Vamos acompanhar alguns exemplos. Exemplo 1 Sabemos que o produto notável (a+b)2 pode ser interpretado geometricamente como a área de um quadrado de lados iguais a “a+b”. Utilizando o Python, escreva a forma expandida de (a+b)2. Resolução: from sympy import * a,b = symbols("a b") expand((a+b)**2) 11 A forma expandida de (a+b)2 é igual a a2+2ab+b2. Exemplo 2 Utilizando o Python, expanda a expressão (a+b)5. Resolução: from sympy import * a,b=symbols("a b") init_printing() expand((a+b)**5) A forma expandida de (a+b)5 corresponde a a5+5a4b+10a3b2+10a2b3+5ab4+b5. TEMA 4 – RAÍZES E EQUAÇÕES Uma equação, é uma expressão matemática em que aparecem constantes, variáveis e uma igualdade. Em situações reais, as equações estão presentes em diversos problemas importantes. Um desses problemas é a obtenção do ponto de equilíbrio. O ponto de equilíbrio consiste na igualdade de duas ou mais funções matemáticas. Se estivermos pensando em custos e receita, o ponto de equilíbrio está associado à igualdade entre o que se ganha e o que se gasta. Abaixo do ponto de equilíbrio, há prejuízo e acima, temos lucro. Vamos resolver um exemplo para entender melhor o que é um ponto de equilíbrio e 12 como podemos resolver problemas assim utilizando o Python. Ainda nesta aula veremos como fazer gráficos e isso vai ajudar ainda mais na compreensão do conceito de ponto de equilíbrio. Em Python, o comando “solve()” é utilizado para resolver uma equação e o comando “Eq()” indica quais são as equações a serem consideradas. Se temos duas equações, a equação “e1” e a equação “e2”, por exemplo, ambas em relação à variável “x”, precisamos escrever “solve(Eq(e1,e2),x)” para obtermos a solução do problema. No exemplo a seguir entenderemos como é possível resolver uma equação no Python. Exemplo 1 Uma indústria de canoas tem uma receita de R$ 3.500,00 por unidade comercializada. Os custos fixos mensais correspondem a R$ 27.200,00 e custos unitários totalizam R$ 1.800,00. Com base nessas informações, a partir da função receita e da função custo, determine o ponto de equilíbrio. Resolução: Para resolver esse problema, o primeiro passo é definir a função custo e também a função receita. O custo está relacionado a tudo o que a empresa gasta. De acordo com os dados do problema, há um custo de R$ 1.800,00 por unidade e custos fixos que totalizam R$ 27.200,00. Como a quantidade de canoas vendidas é variável, vamos representar essa quantidade por x. O custo variável corresponde a 1800x, ou seja, o custo unitário multiplicado pela quantidade vendida. O custo total é a soma do custo unitário com o custo fixo. Logo, c=1800x+27200. A receita é o quanto a empresa recebe pelas vendas. Como a receita unitária é igual a R$ 3.500,00, a função receita é dada por r=3500x. Isso ocorre pois é preciso multiplicar a receita unitária pela quantidade comercializada para que tenhamos a receita total. from sympy import * x,r,c=symbols("x r c") init_printing() r=3500*x c=1800*x+27200 solve(Eq(r,c),x) 13 Resolvemos a equação “r=c”, ou seja, “3500x=1800x+27200” e o valor de x corresponde a 16. Observe que o resultado está entre colchetes “[ ]”. Isso significa que a resposta está na forma de um vetor. Se quisermos obter o valor do custo ou da receita quando “x” for igual a 16, precisamos substituir o valor de “x” em uma das duas expressões, ou em “r=3500x” ou em “c=1800x+27200”. Como o resultado está armazenado em um vetor que foi chamado de “p”, o valor de “x” está armazenado na primeira posição desse vetor. O Python atribui o índice “0” à primeira posição, “1” à segunda posição e assim por diante. Logo, o valor de “x” corresponde a “p[0]”, ou seja, ao valor que está na primeira posição de “p”. A sequência de todos os passos para calcularmos o valor de “x” e substituirmos esse valor na função matemática “r” corresponde a: from sympy import * x,r,c=symbols("x r c") init_printing() r=3500*x c=1800*x+27200 p=solve(Eq(r,c),x) print(p) r.subs(x,p[0]) 14 Fazendo isso, além de sabermos a quantidade a ser vendida para termos o ponto de equilíbrio, sabemos também qual é a respectiva receita, R$ 56.000,00. Se substituirmos “x=16” na função custo, o valor da função será o mesmo que o obtido substituindo “x” na função receita: from sympy import * x,r,c = symbols('x r c') r=186*x c=109*x+11200.0 p=solve(Eq(r,c),x) print(p) c.subs(x,p[0]) Dessa maneira, o ponto de equilíbrio é o par ordenado (16, 56000). 15 Exemplo 2 A receita de uma empresa é dada por r(x)=419x e os custos por c(x)=271x+15000 em que x é a quantidade comercializada de um determinado produto. Determine o respectivo ponto de equilíbrio. Resolução: from sympy import * x,r,c = symbols('x r c') r=419*x c=271*x+15000.0 p=solve(Eq(r,c),x) print(p) r.subs(x,p[0]) O ponto de equilíbrio é o par ordenado (101,35; 42466,22). Exemplo 3 Uma determinada agência locadora de automóveis (Locadora A) cobra R$ 59,90 por dia mais R$ 2,99 por quilômetro rodado. A locadora concorrente (Locadora B) cobra R$ 98,00 por dia mais R$ 2,16 por quilômetro rodado. Um cliente deseja locar um carro com o menor custo possível. Determine qual das duas locadoras deve ser escolhida em decorrência da quilometragem a ser percorrida por esse cliente. Resolução: A expressão relacionada à Locadora A corresponde a “f=2,99x+59,90” e a expressão relacionada à Locadora B corresponde a “g=2,16x+98,00”. Para obtermos o ponto de equilíbrio, basta fazermos: from sympy import * 16 f, g, x = symbols('f g x') f=2.99*x+59.90 g=2.16*x+98.00 p=solve(Eq(f,g),x) print(p) f.subs(x,p[0]) O ponto de equilíbrio é corresponde a (45,90; 197,15). Como a locadora A tem o menor custo fixo, de 0 a 45,9 km a melhor opção é a Locadora A e para distâncias acima de 45,9 km, a Locadora B é melhor. Quando o objetivo é determinar as raízes de uma função, há várias maneirasde resolver o problema por meio do Python. Se tivermos uma função polinomial, uma alternativa bastante interessante é utilizar o comando “roots” da biblioteca “NumPy”. É preciso escrever em um array os coeficientes da função e depois utilizar “roots”. Exemplo 4 Encontre as raízes da função y=-3x3+4x2-11x+1. Resolução: import numpy as np coeficientes=[-3, 4, -11, 1] np.roots(coeficientes) 17 As raízes são “0,62 + 1,78j”, “0,62 - 1,78j” e “0,094”. Exemplo 5 Quais são as raízes da função y=-x3-5x2+9x+11? Resolução: import numpy as np coeff = [-1, -5, 9, 11] np.roots(coeff) As raízes são “-6,17”, “2,04” e “-0,87”. Exemplo 6 Uma indústria de carne congelada realizou um estudo e chegou à conclusão de que o lucro mensal p(x) é dado em função do preço x do quilo da carne congelada e essa relação é descrita pelo polinômio p(x)=-120x2+4800x. Determine para quais valores de x o lucro mensal é nulo. Resolução: import numpy as np coeff = [-120, 4800, 0] np.roots(coeff) 18 Como as raízes são “40” e “0”, o lucro mensal é nulo quando o preço for R$ 0,00 ou R$ 40,00. TEMA 5 – GRÁFICOS Quando trabalhamos com funções, a representação gráfica é muito útil. Em Python há diversas bibliotecas e muitas opções de gráficos, tanto bidimensionais quanto tridimensionais. Nesse momento abordaremos uma forma simples e efetiva de construirmos gráficos usando o Python e futuramente nos aprofundaremos nesse assunto. Vamos utilizar a biblioteca “matplotlib” e para compreendermos melhor como construir um gráfico, vamos considerar a função “y=x2”. O primeiro passo é importarmos a biblioteca: “import matplotlib.pyplot as plt” Em seguida, precisamos de alguns valores para a variável independente “x” e os respectivos valores para a variável independente “y”. Quando x=-5, y=25, quando x=-4, y=16 e dessa maneira temos um vetor armazenando os valores de “x” e um vetor armazenando os respectivos valores de “y”: “x=[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]” “y=[25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25]” Para que seja construído o gráfico, a função é “plt.plot(x, y)” e para mostrar o gráfico é preciso fazer “plt.show()”. Logo, a sequência completa de comandos é: import matplotlib.pyplot as plt x=[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5] y=[25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25] plt.plot(x, y) plt.show() 19 Ao executar o código pela primeira vez, o gráfico ainda não aparece. Precisamos, então, executar novamente o código e o resultado é: Temos o gráfico da função “y=x2”, mas como utilizamos poucos pontos, o resultado ficou segmentado. Precisamos utilizar mais pontos para que a representação fique mais fiel à representação desejada. Podemos digitar um a um ou então utilizarmos a função “linspace” da biblioteca “numpy”. Por meio do linspace, podemos gerar automaticamente uma quantidade desejada de valores em um dado intervalo. Para termos um vetor “x” com 100 valores distribuídos no intervalo que vai de -5 a 5 basta fazermos “x=np.linspace(-5,5,100)” Os respectivos valores de y são gerados fazendo “y=x**2”. Os comandos são: import matplotlib.pyplot as plt import numpy as np x=np.linspace(-5,5,100) 20 y=x**2 plt.plot(x, y) plt.show() O resultado é um gráfico muito melhor do que o obtido anteriormente. Para fixar melhor os passos para gerarmos gráficos, vamos acompanhar alguns exemplos. Exemplo 1 Uma indústria de canoas tem uma receita de R$ 3.500,00 por unidade comercializada. Os custos fixos mensais correspondem a R$ 27.200,00 e custos unitários totalizam R$ 1.800,00. Faça o gráfico da função receita e da função custo em um mesmo sistema de eixos coordenados. Resolução: import matplotlib.pyplot as plt #Importa a biblioteca gráfica import numpy as np #Importa a biblioteca necessária para o comando linspace x=np.linspace(0,30,100) #Gera o vetor x com 100 valores de 0 a 30 r=3500*x #Gera o vetor com os valores de r da função receita c=1800*x+27200 #Gera o vetor com os valores de c da função custo plt.plot(x, r) #Plota a função receita plt.plot(x, c) #Plota a função custo plt.show() #Mostra o gráfico 21 Exemplo 2 A receita de uma empresa é dada por R(x)=419x e os custos por C(x)=271x+15000 em que x é a quantidade comercializada de um determinado produto. Faça, em um mesmo sistema de eixos, o gráfico de cada uma das funções. Resolução: import matplotlib.pyplot as plt import numpy as np x1=np.linspace(0,200,100) y1=419*x1 y2=271*x1+15000 plt.plot(x1, y1) plt.plot(x1, y2) plt.show() 22 FINALIZANDO Estamos chegando ao final da nossa aula. Aprendemos a importar bibliotecas e a desenvolver os primeiros passos necessários para a resolução de problemas relacionados à matemática simbólica. Vimos como substituir valores em funções matemáticas, fatorar ou expandir expressões. Aprendemos também a resolver equações e fazer gráficos de funções. Posteriormente, continuaremos com a matemática simbólica tratando de derivadas, integrais, máximos e mínimos de funções e mais. 23 REFERÊNCIAS CASTANHEIRA, N. P. Matemática aplicada. 3. ed. Curitiba: Ibpex, 2010. DEMANA, F. D. et al. Pré-cálculo. 2. ed. São Paulo: Pearson, 2013. FLEMING, D. M.; GONÇALVES, M. B. Cálculo A: função de uma variável. 2. ed. São Paulo: Pearson, 2007. PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento de aplicações. Rio de Janeiro: LTC, 2016. Conversa inicial Resolução: FINALIZANDO REFERÊNCIAS
Compartilhar