Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Calculo de Raízes e Íntegrais: Exemplos e Algoritmos, Exercícios de Cálculo

Documento contendo exemplos e algoritmos para o cálculo de raízes e íntegrais usando o python. Aborda o método da bisseção, o método de bhaskara, o método dos trapézios e o método do simpson.

Tipologia: Exercícios

2022

Compartilhado em 07/11/2022

EmiliaCuca
EmiliaCuca 🇧🇷

4.5

(113)

217 documentos

1 / 177

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Programação para estudantes de engenharia,
usando Python
Marcio Delamaro Stevão Andrade Misael Costa Júnior
Claudinei Brito Júnior
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe Calculo de Raízes e Íntegrais: Exemplos e Algoritmos e outras Exercícios em PDF para Cálculo, somente na Docsity!

Programação para estudantes de engenharia,

usando Python

Marcio Delamaro Stevão Andrade Misael Costa Júnior

Claudinei Brito Júnior

Sumário

  • I Algoritmos
  • 1 Introdução – o que são algoritmos
  • 2 Raízes de funções
    • 2.1 O método da bisseção
    • 2.2 O método de Newton-Raphson
  • 3 Integração numérica
    • 3.1 O método dos trapézios
    • 3.2 O método de Simpson
  • 4 Estatística descritiva
  • 5 Resolução de sistemas de equações lineares
    • 5.1 Regra de Cramer
    • 5.2 Método da eliminação de Gauss
  • 6 Cálculo do caminho mínimo
    • 6.1 Grafos
    • 6.2 O algoritmo de Dijkstra
  • II A linguagem Python
  • 7 Introdução – o que é Python
    • 7.1 Como instalar
    • 7.2 Como executar
  • 8 O interpretador Python
    • 8.1 Números
    • 8.2 Números não são todos iguais
      • 8.2.1 Exercícios
    • 8.3 Variáveis
      • 8.3.1 Exercícios
    • 8.4 Strings
      • 8.4.1 Exercícios
    • 8.5 Funções
      • 8.5.1 Exercícios
    • 8.6 Aplicação: o método de Bhaskara
      • 8.6.1 Exercícios SUMÁRIO ii
    • 8.7 Aplicação: o método da bisseção
    • 8.8 Exercícios
  • 9 Programando de verdade
    • 9.1 Comando de saída
      • 9.1.1 Exercícios
    • 9.2 Comando de entrada
      • 9.2.1 Exercícios
    • 9.3 Indentação e comentários
    • 9.4 Exercícios
    • 9.5 Formatação da saída
      • 9.5.1 Exercícios
  • 10 Comandos de seleção
    • 10.1 O comando if/else
      • 10.1.1 Exercícios
    • 10.2 Aplicação: método da bisseção
    • 10.3 O comando if/elif/else
      • 10.3.1 Exercícios
    • 10.4 Comandos aninhados
      • 10.4.1 Exercícios
  • 11 Comandos de repetição
    • 11.1 O comando while
      • 11.1.1 Exercícios
    • 11.2 O comando for
      • 11.2.1 Exercícios
    • 11.3 Aplicação: integração numérica
    • 11.4 Comandos break e continue
      • 11.4.1 Exercícios
  • 12 Listas e similares
    • 12.1 Inclusão e exclusão
    • 12.2 Outras operações
      • 12.2.1 Exercícios
    • 12.3 Aplicação: estatística descritiva
    • 12.4 Tuplas
      • 12.4.1 Exercícios
    • 12.5 Matrizes
      • 12.5.1 Exercícios
    • 12.6 Aplicação: método de Gauss
  • 13 Definindo funções
    • 13.1 Definindo nossas próprias funções
      • 13.1.1 Exercícios
    • 13.2 Recursão
      • 13.2.1 Exercícios
    • 13.3 Aplicação: o método de Cramer
  • 14 Arquivos SUMÁRIO iii
    • 14.1 Abrindo e fechando
    • 14.2 Lendo dados
    • 14.3 Lendo com o comando for
    • 14.4 Escrevendo dados em um arquivo
    • 14.5 Modos de abertura
      • 14.5.1 Exercícios
    • 14.6 Manipulação externa de arquivos
      • 14.6.1 Exercícios
  • 15 Exceções
    • 15.1 Tratamento de exceções
    • 15.2 Gerando uma exceção
      • 15.2.1 Exercícios
    • 15.3 O comando finally
      • 15.3.1 Exercícios
  • 16 Conjuntos e dicionários
  • 17 Pacotes para engenheiros
  • A Complementos de Python
    • A.1 Ambientes de programação
      • A.1.1 IDLE
      • A.1.2 Geany
      • A.1.3 Spyder
    • A.2 pip: Instalando pacotes
      • A.2.1 Instalando o pip
      • A.2.2 Usando o pip
    • A.3 Criando ambientes virtuais

Prefácio

Na primeira parte deste texto são apresentados alguns métodos numéricos e os algoritmos para a sua implementação. Na segunda parte é apresentada a linguagem Python. As implementações dos métodos numéricos são apresentadas na segunda parte do texto, e servem como motivação para o estudante.

Capítulo 1

Introdução – o que são

algoritmos

Algoritmos são sequências de passos que nos levam à solução de um problema. Vamos escolher, então um problema exemplo, e tentar mostrar, de forma prática o que seria um algoritmo para sua resolução. O problema que usaremos é bem conhecido e bastante simples. Queremos resolver uma equação de segundo grau, ou seja, dada a equação ax^2 + bx + c, queremos saber quais são as suas raízes reais, se elas existirem. Vamos, então, descrever uma sequência de passos para solucionar esse pro- blema. A primeira questão é: qual o nível de detalhes que precisamos especificar nesses passos? Por exemplo, podemos simplesmente escrever:

“Resolva a equação ax^2 + bx + c.”

Mas isso não nos ajuda muito. O que precisamos é uma sequência de ope- rações simples, que saibamos fazer, e que nos levem às raízes desejadas. Então, antes de mais nada, precisamos saber quais são as operações “conhecidas” que estão à nossa disposição, para que possamos descrever o algoritmo. No caso do nosso problema, o algoritmo de Bhaskara, descrito a seguir, supõe que sabemos efetuar operações aritméticas como soma, subtração, divisão, multiplicação e extrair a raiz quadrada. Usando como exemplo a equação 2 x^2 + 2x − 6 , seguimos os seguintes passos:

  1. Identifique na equação, os coeficientes a, b, e c. No caso, a = 2, b = 2 e c = − 6.
  2. Se a = 0 então a equação não é de segundo grau, e o algoritmo não pode ser usado. Caso contrário, continue. No nosso caso, continuamos pois a 6 = 0
  3. Calcule o valor do discriminante ∆ = b^2 − 4 × a × c; Temos ∆ = 2^2 − 4 × 2 × −6 = 4 + 48 = 52
  4. Se o valor de ∆ for negativo, então a equação não tem raízes reais, e o algoritmo termina aqui. Caso contrário, prossiga. Continuamos, pois nosso ∆ é positivo.

CAPÍTULO 1. INTRODUÇÃO – O QUE SÃO ALGORITMOS 4

  1. Compute o valor da primeira raiz, x 1 , que é dada pela expressão

x 1 =

−b +

2 × a

x 1 = (−2 +

  1. Compute o valor da segunda raiz, x 2 , que é dada pela expressão

x 2 = −b −

2 × a

x 2 = (− 2 −

  1. Se x 1 = x 2 é porque o valor do discriminante é zero, então temos uma única raiz para essa equação. No nosso exemplo, não se aplica pois ∆ = 52 e portanto x 1 6 = x 2

Fim dos trabalhos. Seguindo esses passos, podemos tomar uma equação de segundo grau e ao final olhar os valores de x 1 e x 2 para conhecermos as suas soluções.

CAPÍTULO 2. RAÍZES DE FUNÇÕES 6

computamos o valor de f nesse ponto. Obtemos f (− 3 .5) = − 1 , 625. Se o valor computado for zero, então achamos o valor da raiz. Caso contrário, conseguimos diminuir o tamanho do intervalo no qual devemos procurar a raiz. Note, na Figura 2.2 que o valor da função no ponto médio − 3 , 5 está abaixo do eixo x, ou seja, é negativo. Então, não adianta tentar procurar a solução que queremos no intervalo (a, c). Temos que procurar no outro subintervalo, ou seja, (c, b). Em outras palavras, devemos escolher esse intervalo pois verificamos que f (c) × f (b) < 0 , ou seja, f (c) e f (b) têm sinais opostos.

Figura 2.2: Dividindo o intervalo com o método da bisseção

Vamos repetir então as mesmas operações, mas agora considerando um in- tervalo menor. A cada iteração, o tamanho desse intervalo vai diminuindo e mesmo que nunca consigamos achar o valor exato da raiz, vamos cada vez nos aproximando mais dela. Ou, como costuma-se dizer, vamos convergindo para a solução. Precisamos saber, também, qual é a tolerância, ou o erro que podemos ad- mitir na nossa resposta. Por exemplo, se usarmos uma tolerância de 0 , 001 , isso significa que estamos satisfeitos com uma resposta que esteja a essa distância da raiz. Ou, olhando para o nosso algoritmo, quando o tamanho do intervalo for menor do que esse valor, podemos parar de dividir e assumir que o valor médio, c, é a resposta que desejamos. Uma descrição, passo a passo do método pode ser a seguinte:

  1. iniciamos com o intervalo (a, b);
  2. calculamos o ponto médio do intervalo, c = (a + b)/ 2 ;
  3. se f (c) = 0 ou se o b − a <tolerância, então, c é a resposta;
  4. se f (c) ∗ f (a) < 0 reduzimos o intervalo de busca para (a, c);
  5. caso contrário o próximo intervalo de busca será (c, b);
  6. repetimos o processo considerando esse novo intervalo.

CAPÍTULO 2. RAÍZES DE FUNÇÕES 7

A Tabela 2.1 mostra a sequência de valores que são utilizados em cada ite- ração do método, para a computar a primeira raiz do nosso exemplo. É bom notar que utilizamos uma tolerância bastante alta para podermos mostrar todos os valores calculados pois o método da bisseção converge de forma relativamente lenta. Se utilizássemos, por exemplo, 0. 00001 como tolerância, precisaríamos de 17 iterações para achar o valor desejado.

Tabela 2.1: Sequência de valores no método da bisseção para f (x) = x^3 − x^2 − 13 x + 8 Iteração a b c Erro 1 -4 -3 -3.5 0. 2 -3.5 -3 -3.25 0. 3 -3.5 -3.25 -3.375 0. 4 -3.5 -3.375 -3.4375 0. 5 -3.5 -3.4375 -3.46875 0. 6 -3.46875 -3.4375 -3.453125 0. 7 -3.453125 -3.4375 -3.4453125 0. 8 -3.453125 -3.4453125 -3.44921875 0. 9 -3.44921875 -3.4453125 -3.447265625 0. 10 -3.447265625 -3.4453125 -3.4462890625 0.

2.2 O método de Newton-Raphson

Este é um outro método iterativo para computarem-se raízes de funções. Assim como no método da bisseção, precisamos ter uma ideia de onde se encontra a raiz que desejamos computar. Mas nesse caso não precisamos definir um intervalo, e sim um “chute” inicial. Precisamos também conhecer a primeira derivada da função que desejamos computar e, ainda, um valor de tolerância que representa o erro máximo que aceitamos na nossa resposta. A partir do nosso chute inicial, x 0 , computamos a próxima aproximação da raiz fazendo:

xi = xi− 1 −

f (xi− 1 ) f ′(xi− 1 ) E assim, continuamos até que a diferença entre xi− 1 e xi seja menor que a nossa tolerância. Olhando na Figura 2.3, podemos entender o que o método faz. Usando o nossa função como exemplo, e iniciando com um chute inicial de − 3 , achamos a reta tangente que passa por f (−3) e cuja inclinação é dada por f ′(−3). Traçando essa reta, vamos encontrar o ponto onde ela cruza o eixo x, que é − 3 , 55. Veja que esse ponto está mais próximo da raiz, e é justamente o próximo valor que usaremos como chute. Repetimos o processo nesse ponto, até chegarmos a uma aproximação aceitável. Os primeiros passos, para o nosso exemplo, seriam os seguintes, considerando a primeira derivada da função f ′(x) = 3x^2 − 2 x − 13 :

CAPÍTULO 2. RAÍZES DE FUNÇÕES 9

Figura 2.4: O método de Newton-Raphson para f (x) = xe−x

2

Capítulo 3

Integração numérica

Os alunos de engenharia certamente estão familiarizados com conceitos de cál- culo como limite, derivada e integral. Vamos falar um pouco sobre o cálculo de integrais, como:

∫ (^2)

0

x^3 + 8 dx

Aprendemos que para computar o valor dessa integral, basta fazermos ∫ (^) b

a

f (x) dx = F (b) − F (a)

onde F (x) corresponde à antiderivada de f (x). Ou no nosso caso,

F (x) =

x^4 + 8x

∫ (^2)

0

x^3 + 8dx = F (2) − F (0) = 20, 0

Nesse caso bastou-nos computar a antiderivada da função, e conseguimos calcular o valor exato da integral. Porém, nem sempre é fácil computar a anti- derivada e nesses casos precisamos apelar para métodos numéricos para achar o valor da integral. Sabemos, também, que computar essa derivada é o mesmo que achar a área sob a curva, no intervalo que desejamos. Na Figura 3.1 vemos a curva da função f (x) = x^3 + 8 e, no intervalo [0,2], a área sob a curva, preenchida em cinza, corresponde à integral

0 x

(^3) + 8dx. Então, a solução é tentar computar, de forma aproximada, a área sob a curva, e daí obter o valor da integral. Existem vários métodos para fazermos isso. Nas duas próximas seções vamos estudar dois deles.

3.1 O método dos trapézios

Nesse método, buscamos achar uma reta que interpole, ou represente da melhor maneira possível, a curva entre os dois pontos, inicial e final do intervalo de interesse. Como conhecemos apenas dois pontos, essa reta passa por esses dois

CAPÍTULO 3. INTEGRAÇÃO NUMÉRICA 12

guinte forma, considerando f (x) e o intervalo [a, b]:

  1. determinamos n, o número de subintervalos que queremos usar;
  2. computamos o tamanho de cada subintervalo, h = (b − a)/n;
  3. computamos a área de cada subintervalo Ai;
  4. computamos a área total A =

∑n i=1 Ai.

3.2 O método de Simpson

Este método busca usar um polinômio de grau dois para interpolar três pontos da função que queremos computar a integral. No caso, os pontos a, b e o ponto médio. Da mesma forma, utilizando um único intervalo pode não gerar bons resultados, assim, dividimos o intervalo em subintervalos e então aplicamos o método. Se dividirmos o intervalo em n subintervalos, obtemos uma sequência de valores a, x 1 , , x 2 , ..., xn− 1 , b, que utilizaremos para computar a integral. Com um pouco de manipulação matemática, que não faremos aqui, obtém-se uma maneira bastante simples de computar a integral:

  1. determinamos n, o número de subintervalos que queremos usar. n deve ser par;
  2. computamos o valor h = (b − a)/n;
  3. para cada xi, em que i é impar, adicionamos 4 f (xi) ao valor da integral;
  4. para cada xi, em que i é par, adicionamos 2 f (xi) ao valor da integral;
  5. adicionamos f (a) e f (b) ao valor da integral;
  6. multiplicamos esse valor por h/ 3 , que nos dá a resposta que queremos.

Para polinômios de grau até três, o método apresenta resultado exato com apenas dois subintervalos. Por isso, vamos utilizar como exemplo a função da Figura 2.4, f (x) = xe−x 2

. No intervalo (0, 2), obtemos, com 40 subintervalos, o valor 0. 4908423652668696 e no intervalo (− 2 , 2) obtemos 2. 868076146948321 e − 17 , valor muito próximo de zero, que seria o valor exato esperado.

Capítulo 4

Estatística descritiva

Não é fácil descrever o que seja estatística, ou tudo o que ela compreende. Mas, podemos vê-la como um conjunto de técnicas que permitem colher da- dos, organizá-los e analisá-los, para que possamos deles extrair algum tipo de conhecimento que nos interesse. Nesse capítulo vamos apresentar uma pequena fração dessas técnicas. A estatística descritiva, segundo dizem os especialistas, é a etapa inicial que toma- mos para sumarizar e tentar entender os dados. Note que nosso objetivo aqui não é ensinar estatística ou como utilizá-la, mas sim mostrar como podem ser calculas algumas medidas que estão associadas à estatística descritiva. Vamos supor, então, que temos uma população e que dela queremos estimar uma variável. Por exemplo, queremos saber qual a altura da população mascu- lina no Brasil. Ou quantos litros de cerveja bebem as estudantes de engenharia da USP, por semana. Infelizmente, não podemos coletar esses dados de todos os elementos que compõem essas populações. Por isso, fazemos uma amostra- gem, por exemplo, entrevistando ou medindo um subconjunto pequeno desses elementos. Assim, temos um conjunto de dados, x 1 , x 2 , x 3 , ..., xn, que contém os valores medidos para a variável de interesse, para n elementos que compõem a nossa amostra. Por exemplo, podemos entrevistar dez estudantes de engenharia e descobrir que, por semana, elas bebem a quantidade de cerveja mostrada na Tabela 4.1.

Tabela 4.1: Quantidade de cerveja ingerida pelas estudantes de engenharia da USP Estudante 1 2 3 4 5 6 7 8 9 10 Litros 1,5 2 2 4 0 2,5 3,5 2 6 3,

A primeira medida, talvez a mais conhecida, é a média desses dados. Ela é uma das medidas que chamamos de medidas de tendência central ou medidas de posição. Como o nome sugere, elas servem que tenhamos uma ideia da localização dos dados, dentro da escala em que foram medidos. A média pode ser calculada da seguinte maneira:

CAPÍTULO 4. ESTATÍSTICA DESCRITIVA 15

Já o cálculo da variância é um pouco mais trabalhoso. A variância avalia a dispersão total medindo o quanto cada ponto se afasta da medida central da média. Em outras palavras, calculamos a variância como:

varianciaˆ =

(x 1 − m´edia)^2 + (x 2 − m´edia)^2 + ... + (xn − m´edia)^2 n − 1

Ou seja, para cada valor da amostra, computamos a sua diferença com a média e a elevamos ao quadrado. Somamos todos esses valores e dividimos a soma pelo tamanho da amostra menos um. O desvio padrão é uma outra medida de dispersão, definida apenas como a raiz quadrada da variância.

Capítulo 5

Resolução de sistemas de

equações lineares

Muitos problemas de engenharia requerem a solução de um sistema de equações lineares. Ou seja, se tivermos várias variáveis cujo valor precisamos calcular e o mesmo número de equações envolvendo essas variáveis, queremos calcular os valores das variáveis que satisfaçam todas as equações. Por exemplo, vamos considerar um sistema com quatro incógnitas e quatro variáveis. Queremos no sistema a seguir, descobrir valores para x 1 , x 2 , x 3 e x 4 que satisfaçam as equações.     

3 x 1 + 6x 2 − x 3 = 25 − 2 x 1 + 3x 2 + x 3 + x 4 = 6 x 1 − 4 x 2 + 2x 3 + 2x 4 = 2 − 2 x 1 − 2 x 2 + 2x 4 = 0 As técnicas para resolver esse tipo de sistema baseiam-se na manipulação de matrizes. Uma matriz quadrada é usada para representar os coeficientes das variáveis e uma matriz coluna para representar o lado direto das equações. Temos então algo como:

   

x 1 x 2 x 3 x 4

Ou, podemos ter uma matriz estendida, em que juntamos os dois lados da equação em uma única matriz.    