Baixe o app para aproveitar ainda mais
Prévia do material em texto
FERRAMENTAS MATEMÁTICAS APLICADAS AULA 5 Prof. Ricardo Alexandre Deckmann Zanardini CONVERSA INICIAL Nesta aula, estudaremos importantes temas, muito úteis para a engenharia. Inicialmente, estudaremos vetores e matrizes. Aprenderemos a utilizar o Python para a realização de operações vetoriais e matriciais. Em seguida, abordaremos a resolução de sistemas lineares. Para abordarmos sistemas lineares relacionados a números complexos, estudaremos algumas funções trigonométricas e os números complexos. TEMA 1 – VETORES E MATRIZES Do ponto de vista matemático, uma matriz é um conjunto retangular de números reais ou complexos, formado por linhas e por colunas, representado entre colchetes ou entre parênteses. Por exemplo, temos a seguinte matriz: − = 2005 123 A Esta é uma matriz denominada de A que contém 2 linhas e 3 colunas. Podemos dizer então que A é uma matriz 2X3. As matrizes são utilizadas em diversas aplicações. Podemos armazenar preços de mercadorias, coeficientes de um sistema linear, valores associados aos pixels1 de uma imagem e muito mais. Um vetor é um caso particular de uma matriz, pois corresponde a apenas uma linha ou apenas uma coluna da matriz. Por exemplo: v=(3, 7, -9) Esta é um vetor que contém 3 componentes. Observe que também pode ser interpretado como sendo uma matriz que tem 1 linha e 3 colunas. Em Python, podemos utilizar a biblioteca “NumPy” para trabalharmos com matrizes e com vetores. Observe a seguinte matriz: 1 Do inglês “picture elements”. Cada pixel corresponde a um ponto da imagem. Em imagens em escala de cinza, cada ponto da imagem está associado a um elemento da matriz, e em imagens coloridas do tipo RGB, cada ponto está associado a 3 elementos correspondentes armazenados em 3 matrizes diferentes. 3 − = 2005 123 A Para a representarmos por meio da biblioteca “NumPy”, utilizaremos o comando “array()”. A sintaxe é: import numpy as np A=np.array([[3, 2, -1],[5, 0, 20]]) print(A) Observe que cada linha está entre colchetes e as duas linhas da matriz também estão entre colchetes, além dos parênteses que delimitam o comando. Observe o vetor: v=(3, 7,-9) A representação de sua sequência de comandos é: import numpy as np v=np.array([[3, 7, -9]]) print(v) É possível realizar operações relacionadas a matrizes e vetores de uma forma bastante simples por meio do Python. 4 Para compreendermos melhor essas operações, vamos acompanhar alguns exemplos. 1.1 Exemplo 1 Suponha que o vetor v armazena os preços de venda, em dólares, de algumas mercadorias: v=(35,00; 16,40; 8,49; 15,56) E, além disso, que cada dólar corresponde a 4 reais. Obtenha um vetor w que armazena os preços em reais dessas mercadorias. 1.1.1 Resolução Inicialmente, precisamos escrever o vetor v com os respectivos preços em dólar e, em seguida, multiplicar esse vetor por 4. Essa operação é conhecida como multiplicação de um vetor por um escalar. import numpy as np v=np.array([[35.00, 16.40, 8.49, 15.56]]) w=4*v print(w) Os preços são R$ 140,00, R$ 65,60, R$ 33,96 e R$ 62,24. 1.2 Exemplo 2 Considere o seguinte vetor: v=(35,00; 16,40; 8,49; 15,56) Ele armazena os preços de venda, em dólares, de algumas mercadorias, e o vetor u armazena os respectivos preços de custo, também em dólares: 5 u=(17,80; 10,20; 5,60; 9,99) Sabendo-se que a margem de contribuição corresponde ao preço de venda menos o preço de custo, obtenha o vetor m que contém as respectivas margens de contribuição, em dólares, dessas mercadorias. 1.2.1 Resolução Para obtermos as margens de contribuição, basta subtrairmos os vetores v e u. import numpy as np v=np.array([[35.00, 16.40, 8.49, 15.56]]) u=np.array([[17.80, 10.20, 5.60, 9.99]]) m=v-u print(m) As margens de contribuição, em dólares, são $ 17,20, $ 6,20, $ 2,89 e $ 5,57. 1.3 Exemplo 3 Em uma instituição de ensino superior, na disciplina de Geometria Analítica, os alunos matriculados realizaram quatro avaliações. O vetor “notas” contém as notas obtidas por um dos estudantes e o vetor “pesos” armazena as porcentagens referentes a cada avaliação, apresentadas na forma decimal. Os vetores são: notas=(80, 95, 100, 70) e 6 pesos=(0,2; 0,2; 0,3; 0,3) Sabendo-se que a média do estudante corresponde à soma das multiplicações de cada nota pelos respectivos pesos e que essa média, matematicamente, é fornecida pelo produto escalar dos vetores “notas” e “pesos”, determine a referida média. 1.3.1 Resolução O produto interno é obtido pela função “inner()” da biblioteca “NumPy”. import numpy as np notas=np.array([[80, 95, 100, 70]]) pesos=np.array([[0.2, 0.2, 0.3, 0.3]]) media=np.inner(notas,pesos) print(media) A média é 86. 1.4 Exemplo 4 Considerando os vetores u=(2, 2, -2) e v=(1, 5, 1), obtenha um vetor w ortogonal aos vetores u e v, ou seja, um vetor w que forma um ângulo de 90° com o vetor u e um ângulo de 90° com o vetor v. 1.3.1 Resolução Para obtermos um vetor ortogonal a outros dois vetores dados, todos com três componentes cada, precisamos calcular o produto vetorial, também 7 conhecido como produto externo. O comando da biblioteca “NumPy” destinado a esse cálculo é “cross()”. import numpy as np u=np.array([[2, 2, -2]]) v=np.array([[1, 5, 1]]) w=np.cross(u,v) print(w) O vetor w é dado por w=(12, -4, 8). Em relação às matrizes, também temos operações que podem ser feitas por meio do Python. Para entendermos melhor como podemos realizar operações com matrizes, vamos considerar mais alguns exemplos. 1.5 Exemplo 5 Uma indústria de motocicletas possui três modelos, A, B e C, e tem duas fábricas, F1 e F2. A fábrica F1 produz as peças e a fábrica F2 faz a montagem das motocicletas. Os custos de produção e de transporte referentes à fábrica F1 correspondem a Custo de produção das peças (R$) Custo de transporte (R$) A 3.000,00 110,00 B 5.000,00 112,00 C 6.500,00 125,00 Os custos de montagem e de transporte referentes à fábrica F2 são: Custo de montagem (R$) Custo de transporte (R$) A 300,00 130,00 B 350,00 130,00 C 420,00 130,00 8 Essas tabelas podem ser escritas como matrizes: = 1256500 1205000 1103000 1F e = 130420 130350 130300 1F Com base nessas informações, determine os custos totais de produção e de transporte referentes a cada modelo de motocicleta. 1.5.1 Resolução Para obtermos esses custos, precisamos efetuar a soma das matrizes. import numpy as np F1=np.array([[3000, 110],[5000, 120],[6500, 125]]) F2=np.array([[300, 130],[350, 130],[420, 130]]) CustoTotal=F1+F2 print(CustoTotal) O custo total é: =+ 2556920 2505350 2403300 21 FF 1.6 Exemplo 6 Considerando o exemplo 5 e supondo que houve um aumento de 10% sobre os custos de fabricação das peças e sobre os custos de transporte, quais serão os valores após o aumento? 9 1.6.1 Resolução O fator referente a um aumento de 10% corresponde a 1,1, pois 100%+10%=110%=1,1. Para que tenhamos a matriz F1 com os valores atualizados, basta multiplicarmos F1 por 1,1. Podemos armazenar esses valores na própria matriz F1, por isso a expressão “F1=1.1*F1”. import numpy as np F1=np.array([[3000, 110],[5000, 120],[6500, 125]]) F1=1.1*F1 print(F1) Com o aumento de 10%, os custos da fábrica 1 são: = 5,1377150 1325500 1213300 1F 1.7 Exemplo 7 Na confecção de três tamanhos de camisetas de futebol (P, M e G), são usados distintivos dos clubes nas cores verde e vermelha. O número de distintivos usados, por tamanho, é dado pela tabela a seguir. Camiseta P Camiseta M Camiseta G Verde 3 1 3 Vermelha 6 5 5 O númerode camisetas fabricadas, de cada tamanho, nos meses de maio e junho, é dado pela seguinte tabela. 10 Maio Junho Camiseta P 100 50 Camiseta M 50 100 Camiseta G 50 50 Nessas condições, obtenha, por meio do uso de matrizes, a tabela que dá o total de distintivos de cada cor usados em cada um dos meses de maio e junho. 1.7.1 Resolução A solução do problema se resume na multiplicação das matrizes associadas a cada uma das tabelas. Na biblioteca “NumPy”, o comando é “matmul()”. distintivos = 556 313 camisetas = 5050 10050 50100 import numpy as np distintivos=np.array([[3, 1, 3],[6, 5, 5]]) camisetas=np.array([[100, 50],[50, 100],[50, 50]]) TotalDeDistintivos=np.matmul(distintivos,camisetas) print(TotalDeDistintivos) Logo, a tabela obtida foi: Maio Junho Verde 500 400 Vermelha 1100 1050 11 TEMA 2 – SISTEMAS LINEARES Sistemas lineares são importantes e aparecem em diversas aplicações da engenharia. Desde exemplos simples, em que o objetivo é determinarmos quantidades de itens, até problemas mais avançados, tais como processamento digital de sinais e de imagens, tomografia computadorizada, entre outros. A forma geral de um sistema linear de m equações e n incógnitas é: =+++ =+++ =+++ mnmnmm nn nn bxaxaxa bxaxaxa bxaxaxa 2211 22222121 11212111 Nesse sistema, os termos a11, a12, ..., amn são os coeficientes, b1, b2, bm são os termos independentes e x1, x2, ..., xn são as variáveis. Um sistema linear pode ser escrito na forma matricial: Ax=b Na forma matricial, os coeficientes são armazenados na matriz A, os termos independentes no vetor b e as variáveis no vetor x. A biblioteca “NumPy” tem uma função que torna bastante simples a resolução de sistemas lineares. Essa função é “solve()” e utiliza a forma matricial de um sistema. Veremos a seguir diversos exemplos ilustrando o uso do comando “solve”. 2.1 Exemplo 1 Um casal foi a uma lanchonete. Marina consumiu um sanduíche e um refrigerante e pagou R$ 22,00. Leandro consumiu dois sanduíches e um refrigerante, totalizando R$ 34,00. Com base nessas informações, determine o preço de cada sanduíche e o preço de cada refrigerante. 2.1.1 Resolução O sistema linear associado ao problema corresponde a: =+ =+ 342 22 rs rs 12 A variável s representa o preço de cada sanduíche e a variável r representa o preço de cada refrigerante. Na forma matricial, o sistema corresponde a: = 34 22 12 11 r s Ou seja: = 12 11 A , = 34 22 b e = r s x . import numpy as np A=np.array([[1, 1],[2, 1]]) b=np.array([[22],[34]]) x=np.linalg.solve(A,b) print(x) Cada sanduíche custou R$ 12,00 e cada refrigerante custou R$ 10,00. 2.2 Exemplo 2 Uma indústria produz dois modelos de tapetes de pele. O primeiro modelo tem 3 m2 e o segundo modelo tem 4 m2. O total de pele que a indústria possui corresponde a 1.900 m2. A produção total de tapetes precisa ser de 550 unidades. Quantas unidades de cada modelo devem ser produzidas para que toda a matéria-prima seja utilizada e a produção total seja atendida? 2.2.1 Resolução Para esse problema, o sistema linear corresponde a: 13 =+ =+ 550 190043 ba ba Na forma matricial, temos: = 550 1900 11 43 b a Representamos a quantidade de tapetes do primeiro modelo por a e a quantidade de tapetes do segundo modelo por b. import numpy as np A=np.array([[3, 4],[1, 1]]) b=np.array([[1900],[550]]) x=np.linalg.solve(A,b) print(x) Serão produzidos 300 tapetes do primeiro modelo e 250 tapetes do segundo modelo. 2.3 Exemplo 3 Resolva o sistema linear =++− =+− =−+ 04 194 8243 zyx zyx zyx . 2.3.1 Resolução import numpy as np A=np.array([[3, 4, -2],[1, -1, 4],[-4, 1, 1]]) 14 b=np.array([[8],[19],[0]]) X=np.linalg.solve(A,b) print(X) A solução é x=2, y=3 e z=5. Em muitas aplicações, podemos ter sistemas lineares em que os coeficientes ou os termos independentes são números complexos. Mas o que são números complexos e como podemos resolver sistemas assim? É o que veremos a seguir. Inicialmente, abordaremos as funções trigonométricas, em seguida, os números complexos e, finalmente, os sistemas lineares com números complexos. TEMA 3 – FUNÇÕES TRIGONOMÉTRICAS A trigonometria está presente em uma grande quantidade de problemas relacionados à engenharia. As principais funções trigonométricas são seno, cosseno e tangente, mas temos muitas outras funções trigonométricas, entre as quais abordaremos também o arco seno, arco cosseno e arco tangente. Mas o que são essas funções? São funções angulares relacionadas a fenômenos que se repetem, ou seja, fenômenos periódicos. A função sen(θ) é obtida, em um triângulo retângulo, por meio da divisão do cateto oposto ao ângulo θ pela hipotenusa. 15 Podemos escrever HIP COsen =)(θ . O cosseno do ângulo é a divisão do cateto oposto pela hipotenusa e a tangente do ângulo é a divisão do cateto oposto pelo adjacente. Sendo assim, HIP CA =)cos(θ e CA COtg =)(θ . Como exemplo, podemos pensar em um triângulo retângulo de lados iguais a 3, 4 e 5. Com base nessas informações, temos 5 3)( =θsen , 5 4)cos( =θ e 4 3)( =θtg . E se quisermos saber o valor do ângulo θ? Precisaremos das funções inversas arco seno, arco cosseno ou arco tangente. O quadro a seguir apresenta algumas funções trigonométricas da biblioteca “NumPy”. 16 Função Sintaxe Seno np.sin() Cosseno np.cos() Tangente np.tan() Arco seno np.arcsin() Arco cosseno np.arccos() Arco tangente np.arctan() Os arcos são calculados em radianos. Sabemos que 180° corresponde a π radiano. São unidades diferentes de medidas de arcos, mas que podem ser convertidas por meio dos comandos “deg2rad()” e “rad2deg()”. A função “deg2rad()” converte grau em radiano e a função “rad2deg()” converte radiano em grau. Veremos alguns exemplos. 3.1 Exemplo 1 Obtenha o seno de 30°. 3.1.1 Resolução import numpy as np arco=np.deg2rad(30) np.sin(arco) 3.2 Exemplo 2 Qual é a inclinação, em graus, de uma rampa que tem 40 cm de altura e 150 cm de comprimento da base? 17 3.2.1 Resolução Como temos a base e a altura da rampa, para obtermos a respectiva inclinação, vamos utilizar o arco tangente e, no final, converter a solução para grau. import numpy as np inclinacao=np.arctan(40/150) np.rad2deg(inclinacao) A inclinação da rampa é de 14,93°. 3.3 Exemplo 3 Qual é o arco, em graus, referente a um arco de π/4 radianos? 3.3.1 Resolução import numpy as np np.rad2deg(np.pi/4) 18 O arco corresponde a 45°. TEMA 4 – NÚMEROS COMPLEXOS Um número complexo é um número da forma “z=a+bi” em que a e b são números reais e i é a unidade imaginária. Os números complexos estão associados ao cálculo de raízes de índice par de números negativos e possuem muitas aplicações, tais como em problemas de engenharia elétrica, de aerodinâmica, processamento digital de sinais e de imagens. Podemos calcular facilmente a raiz quadrada de 16, o que resulta em 4, mas e raiz quadrada de -16? Sabemos que 42=16 e que (-4)2=16, ou seja, dentro do conjunto dos números reais não há um número que elevado ao quadrado resulte em -16. No entanto, com o uso dos números complexos, a resolução desse problema fica bem simples. Basta fazermos 1.1616 −=− . Como a raiz quadrada de 16 corresponde a 4, temos 1416 −=− . Finalmente, podemos representar a raiz quadrada de -1 pela letra i e escrever i416 =− . Como o número 4i tem apenas a parte imaginária, dizemos que 4i é um número imaginário puro. Um número complexo “a+bi” pode ser representado em um sistemade eixos coordenados. 19 Além da forma “a+bi”, números complexos podem ser representados na forma trigonométrica, também conhecida como forma polar. Dessa forma, temos um vetor associado ao número complexo z. A inclinação é representada por θ. Temos também: )cos(.)cos( θθ ra r a =⇒= e )(sen.)(sen θθ rb r b =⇒= Logo, podemos escrever: 20 ))(sen.)(c( )(sen..)(c. θθ θθ iosrz riosrz biaz += += += Essa é a forma polar, ou seja, ))(sen.)(c( θθ iosrbiaz +=+= . O número z=2+2i, por exemplo, pode ser escrito na forma polar como: += 4 sen. 4 cos2 ππ iz Em Python, a unidade imaginária i é representada pela letra j e o número complexo “z=a+bi” é escrito como “complex(a,b)”. O número complexo “z=2+4j” corresponde a “z=complex(2, 4)”. O módulo de um número complexo é dado por “abs()”. Para obtermos o módulo de “z=2+4j”, podemos escrever “abs(z)”, em que “z=complex(2, 4)”. Também podemos obter o ângulo formado pelo número complexo. A função é “angle()”. Para obtermos o ângulo de “z=2+4j”, dado por “z=complex(2, 4)”, basta fazermos “np.angle(z,deg=True)”. O parâmetro “deg=True” é utilizado quando queremos o ângulo em graus. 21 Para obtermos o ângulo em radianos, vamos escrever apenas “np.angle(z)”. A soma de números complexos é feita mediante o operador “+”. Para somarmos z1=2+4j e z2=5+6j, temos a figura 24. A multiplicação de números complexos também é facilmente obtida utilizando o operador “*”. A multiplicação entre z1=2+4j e z2=5+6j resulta em z1*z2=-14+32j. Já a divisão entre z1=2+4j e z2=5+6j resulta em z1/z2=0,557+0,131j. 22 Agora que vimos como trabalhar com funções trigonométricas e com números complexos, podemos abordar a resolução de sistemas envolvendo números complexos. TEMA 5 – SISTEMAS LINEARES COM NÚMEROS COMPLEXOS Em diversas aplicações da engenharia elétrica, é muito comum a resolução de sistemas lineares com coeficientes ou termos independentes complexos. É importante sabermos como resolver esses sistemas de um modo simples e eficiente. Com base na biblioteca “NumPy” e nos conhecimentos adquiridos até aqui, temos condições de resolvermos facilmente esses sistemas. Vamos considerar um exemplo no qual o objetivo é resolver um sistema de equações com coeficientes e com termos independentes complexos. 5.1 Exemplo 1 Resolva o seguinte sistema linear: −=++− +=++ jbjaj jbjaj 76)33()5( 73)5()32( 5.1.1 Resolução Na forma matricial, o sistema pode ser escrito como: − + = +− + j j b a jj jj 76 73 335 532 import numpy as np A=np.array([[complex(2,3), complex(0,5)],[complex(5,-1), complex(3,3)]]) b=np.array([[complex(3,7)],[complex(6,-7)]]) 23 np.linalg.solve(A,b) A solução do sistema é a=2,29-2,87j e b=1,17+2,04j. Agora veremos um sistema em que os coeficientes estão na forma retangular “z=a+bj” e os termos independentes estão na forma polar. 5.2 Exemplo 2 Resolva o seguinte sistema linear: °−<=−+−− °<=−−++ 15050)8()43( 0100)43()48( 21 21 IjIj IjIj Nesse sistema, na primeira equação, a notação “100<0°” corresponde a um ângulo de 0° e a um raio igual a 100; a notação “50<-150°” corresponde a um ângulo de -150° e um raio igual a 50. 5.2.1 Resolução Na forma matricial, temos: °−< °< = −−− −−+ 15050 0100 843 4348 2 1 I I jj jj Para a resolução do sistema, precisaremos converter a forma polar para a forma retangular. Como ))(sen.)(c( θθ iosrbia +=+ , temos: import numpy as np A=np.array([[complex(8,4), complex(-3,-4)],[complex(-3,-4), complex(8,-1)]]) x1=np.cos(np.deg2rad(0)) y1=np.sin(np.deg2rad(0)) x2=np.cos(np.deg2rad(-150)) 24 y2=np.sin(np.deg2rad(-150)) b=np.array([[100*complex(x1,y1)],[50*complex(x2,y2)]]) np.linalg.solve(A,b) A solução do sistema é I1=10,27-4,64j e I2=0,71+0,36j. FINALIZANDO Nesta aula, estudamos vetores e matrizes e aplicações relacionadas a esses importantes temas. Vimos sistemas lineares com coeficientes reais e com coeficientes complexos. Também aprendemos a trabalhar com funções trigonométricas e com números complexos utilizando o Python. 25 REFERÊNCIAS CASTANHERIA, N. P. Matemática aplicada. 3. ed. Curitiba: IBPEX, 2010. DEMANA, F. D.; WAITS, B. K.; FOLEY, G. D.; KENNEDY, D. 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.
Compartilhar