Escolar Documentos
Profissional Documentos
Cultura Documentos
Descrição
Aritmética Computacional, apresentação dos erros comuns na linguagem Python e métodos clássicos de
obtenção de raízes de funções não lineares.
Propósito
Entender a aritmética computacional como ferramenta essencial para os profissionais que utilizaram
programação para resolver problemas de modelagem matemática e os possíveis erros que podem ocorrer na
execução de algoritmos em uma linguagem específica.
Preparação
Para compreender os conceitos abordados, é necessário prévio conhecimento básico da linguagem Python.
Objetivos
Módulo 1
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 1/65
24/04/2022 23:01 Aritmética computacional em Python
Módulo 2
Módulo 3
Módulo 4
Introdução
Este conteúdo não é um manual abrangente de Python. O único objetivo é fornecer informações fiáveis
para lhe dar um bom começo, se você não estiver familiarizado com Python. Se você conhecer outra
linguagem de computador, e presumimos que sim, não é difícil que compreenda conforme avança.
Os programas Python não são compilados em código de máquina, mas são executados por um
interpretador. A grande vantagem de uma linguagem interpretada é que os programas podem ser
testados e depurados rapidamente, permitindo que o usuário se concentre mais nos princípios por trás
do programa e menos na programação em si. Não há necessidade de compilar, vincular e executar após
cada correção. Programas Python podem ser desenvolvidos em muito menos tempo do que os
programas Fortran ou C equivalentes.
O interpretador Python pode ser facilmente encontrado para ser baixado no site oficial. Normalmente,
vem com um bom editor de código chamado Idle, que permite a você executar programas diretamente
do editor. Se você usa Linux, é muito provável que o Python já esteja em paralisado em sua máquina. O
download inclui dois módulos de extensão que usamos em nossos programas: o módulo numpy, que
contém várias ferramentas para operações de array, e o módulo gráfico matplotlib, utilizado na
plotagem.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 2/65
24/04/2022 23:01 Aritmética computacional em Python
2
y = v 0 t + 0.5gt
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 3/65
24/04/2022 23:01 Aritmética computacional em Python
Onde:
V0
Para obter a altura ao decorrer do tempo, precisamos saber da velocidade inicial, que, para o nosso exemplo,
será de 5m/s. Então, podemos escrever um arquivo chamado de primeiroprograma.py, com o seguinte
conteúdo:
Python
content_copy
Agora, vamos entender as linhas do que seria o nosso primeiro programa em Python.
A primeira observação que vamos realizar é sobre as palavras iniciadas com #. Isso significa que
o interpretador que executará o seu programa vai considerar o que vem depois de # como
comentários. Isso é muito importante para documentar o seu programa, e, às vezes, nos lembrar
do que realmente estamos fazendo.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 4/65
24/04/2022 23:01 Aritmética computacional em Python
v0 = 5 # Velocidade inicial
Essa linha é uma atribuição de variável, ou seja, toda a vez que aparecer v0, o Python vai
entender que é uma representação de 5m/s. Uma maneira simples de entender o que é
atribuição seria pensar que o Python gera uma "caixa" no computador (memória) com o nome v0
escrito no topo. O número 5 é, então, colocado nessa caixa. Sempre que o Python, mais tarde,
encontra o nome v0 no código, ele encontra a caixa, de modo que o Python tira o número cinco e
substitui o nome v0 pelo número. Isso também acontece com as linhas seguintes: g = 10 e t =
0,5.
O Python já conhece três “caixas” com seus respectivos valores v0, g e t, então, a linha seguinte
contém a fórmula do nosso modelo matemático: y = v0 * t - 0,5 * g * t ** 2. Novamente, de acordo
com suas regras, Python interpreta * como multiplicação, - como menos e ** como
exponenciação. O Python executa a matemática e atribui o resultado (neste caso, o número
1,25) à variável de nome y.
print(y)
Na última linha, vem o comando print(y), que é um comando de impressão na tela do valor de y,
pois, caso não seja colocado essa função print, o Python executaria a fórmula e atribuiria na
“caixa” y o valor de 1,25 e nada aparecia na tela.
Vamos falar um pouco sobre o termo atribuição de variáveis. Observe que utilizamos o operador = para atribuir
um valor numérico a uma representação, como no exemplo v0, t e g. Nesse ponto, a linguagem de
programação difere da linguagem matemática. Para exemplificar essa diferença, usaremos a expressão x= 4-x.
Veja o que essa expressão significa em cada caso:
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 5/65
24/04/2022 23:01 Aritmética computacional em Python
Matemática
close
Programação
É necessário saber qual é o valor x do lado direito, subtraí-lo de 4 e atribuir esse resultado a x do lado
esquerdo. Geralmente, isso acontece em processos iterativos.
Nas próximas seções, serão apresentados alguns comandos e estruturas básicas do Python, lembrando que as
seções não são um aprofundamento da linguagem Python, mas o básico para começarmos a trabalhar com a
modelagem matemática.
Strings
Agora, vamos tratar de recursos adicionais da linguagem para apoiar o desenvolvimento dos códigos: os
strings. O Python usa a tabela de caracteres, que depende do seu sistema operacional, como, por exemplo,
ASCII e UTF-8. Os strings são colocados entre aspas simples (‘) ou duplas (“) e os caracteres que são não
imprimíveis podem ser expressos com a “barra-invertida” (\). Seguem alguns exemplos:
\n
\t
\b
É uma backspace.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 6/65
24/04/2022 23:01 Aritmética computacional em Python
Python
content_copy
1 >>>print('abc\nd')
2 abc
3 d
Python
content_copy
1 >>>>print('abc\td')
2 abc d
É possível obter o endereço dos caracteres dos strings usando a notação de índices, string[índice], observando
que, para o Python, o primeiro caractere tem índice 0 e o último tem índice -1. Vejamos alguns exemplos:
Python
content_copy
Podemos também fatiar (slices) um string com a notação string[índiceI:índiceF]. Com esse comando, o Python
nos retorna os caracteres, iniciando com o caractere de índiceI (inclusive) e finalizando com o caractere que
fica antes do indiceF. Isso acontece, pois o indiceF é exclusivo. Por exemplo:
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 7/65
24/04/2022 23:01 Aritmética computacional em Python
1 >>> palavra[0:2]
2 ab
Expressões Booleanas
São utilizados para realizar comparações relacionais e retornam verdadeiro (True) e falso (False). Os
operadores são:
Os exemplos a seguir mostram a resposta do Python ao comparar dados com as saídas True e False.
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 8/65
24/04/2022 23:01 Aritmética computacional em Python
Operadores Aritméticos
No Python, podemos utilizar as operações aritméticas usadas na matemática básica. Veja alguns exemplos
dos operadores que o Python suporta:
+ - *
Python
content_copy
1 >>> s = ’Olá’
2 >>> t = ’para você’
3 >>> a = [1, 2, 3]
4 >>> print(3*s) # Repetição
5 Olá Olá Olá
6 >>> print(3*a) # Repetição
7 [1, 2, 3, 1, 2, 3, 1, 2, 3]
8 >>> print(a + [4, 5]) # Adicionando elementos
9 [1, 2, 3, 4, 5]
10 >>> print(s + t)
11 Olá para você
Operadores Aritméticos
No Python, podemos utilizar as operações aritméticas usadas na matemática básica. Veja alguns exemplos
dos operadores que o Python suporta:
Tuplas e Listas
A tupla é uma sequência de objetos arbitrários separados por vírgulas e incluídos entre parênteses. Se a tupla
contém um único objeto, uma vírgula final é necessária; por exemplo, x = (2,). Tuplas suportam as mesmas
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 9/65
24/04/2022 23:01 Aritmética computacional em Python
operações que strings e são imutáveis. Veja a seguir um exemplo onde a tupla dados contém outra tupla
(31,10,73):
Python
content_copy
Uma lista é semelhante a uma tupla, mas é mutável, de modo que seus elementos e comprimento podem ser
mudados. Uma lista é identificada colocando-a entre colchetes. Seguem alguns exemplos da operações
realizadas em listas:
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 10/65
24/04/2022 23:01 Aritmética computacional em Python
Se a for um objeto mutável, como uma lista, a instrução de atribuição b = a não resulta em um novo objeto b,
mas, simplesmente, cria uma nova referência para a. Portanto, quaisquer mudanças feitas para b serão
refletidas em a. Veja, a seguir, um exemplo:
Python
content_copy
Para criar uma cópia independente de uma lista a, use a declaração c =a[:], conforme mostrado no exemplo a
seguir:
Python
content_copy
1 >>> c = a[:]
2 >>> c[0] = 1.0
3 >>> print(a)
4 [5.0, 2.0, 3.0]
video_library
Meu primeiro programa em Python
No vídeo a seguir, apresentamos os principais comandos em Python na prática.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 11/65
24/04/2022 23:01 Aritmética computacional em Python
Importando Bibliotecas
Lançamento oblíquo.
Para dar uma visão aplicada ao nosso estudo, começaremos com o problema clássico de física do ensino
médio, que é o lançamento oblíquo, ou seja, quando um objeto inicia seu movimento formando um
determinado ângulo com a horizontal. Nesse tipo de lançamento, o objeto executa dois movimentos
simultâneos, um na vertical e outro na horizontal.
assignment_ind
Comentário
Não precisaremos recapitular todo o assunto, já visto no ensino médio, para que o objetivo deste
conteúdo seja atingido.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 12/65
24/04/2022 23:01 Aritmética computacional em Python
Problema
A bala de um canhão, com massa (m) de 15kg, é lançada com velocidade inicial (v0) de 300m/s. Determine o
alcance horizontal máximo (A) do projétil para o caso de o ângulo (θ) formado entre o canhão e a horizontal ser
de 15°. Considere a gravidade (g) igual a 10m/s.
Dos resultados do ensino médio, utilizaremos a fórmula de alcance máximo para o lançamento oblíquo, dada
por:
2
v sen 2θ
0
A =
g
Onde:
v0
É velocidade inicial.
É a gravidade.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 13/65
24/04/2022 23:01 Aritmética computacional em Python
Python
content_copy
O que isso significa? O Python não reconheceu a função seno. Isso acontece porque
muitas funcionalidades do Python estão disponíveis em bibliotecas adicionais,
chamadas de módulos.
Embora o Python tenha muitas funções internas, como o print(), também possui um conjunto de bibliotecas-
padrão, que são programas em Python que podem ser incluídos no seu programa. Usaremos o módulo math,
pois ele disponibiliza diversas funções matemáticas. Existem certas formas de “chamar” esses módulos no
seu programa, a seguir veremos algumas.
Python.
import “alguma-coisa”
A palavra-chave, nessa situação, é import, e, logo depois, coloca-se o módulo. Por questão de organização, o
ideal é colocar sempre no início do programa. Então, antes de começar o programa para resolver o nosso
problema, devemos escrever:
Python
content_copy
1 >>>import math
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 14/65
24/04/2022 23:01 Aritmética computacional em Python
Quando fazemos isso, temos acesso a todas as funções da biblioteca math, mas devemos informar ao Python
de qual biblioteca estamos chamando a função, para isso utilizamos a sintaxe módulo.função(). Desse modo,
utilizaremos o math.sin() e o math.pi. Então, nosso programa pode ser escrito da seguinte maneira:
Python
content_copy
1 >>>import math
2 >>>v0 =300
3 >>>g=10
4 >>>theta=15
5 >>>A= (v0**2/g)*math.sin(2*theta*math.pi/180)
6 >>>print(A)
7 4500
Python
content_copy
Caso seja necessário utilizar todas as funções da biblioteca, basta usar o comando from módulo import *. Veja
o exemplo:
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 15/65
24/04/2022 23:01 Aritmética computacional em Python
2 >>>v0 =300
3 >>>g=10
4 >>>theta=15
5 >>>A= (v0**2/g)*sin(2*theta*pi/180)
6 >>>print(A)
Python
content_copy
1 >>>import math as m
2 >>>v0 =300
3 >>>g=10
4 >>>theta=15
5 >>>A= (v0**2/g)*m.sin(2*theta*m.pi/180)
6 >>>print(A)
Observe que o apelido será m; assim, chamamos a função seno com m.sin(). De maneira análoga, podemos
atribuir “apelidos” para as funções from módulo import função as apelido. Por exemplo:
Python
content_copy
Funções
Até agora, vimos sobre biblioteca de funções, módulos, parâmetros, utilizando, no entanto, o que o Python já
tem pronto. É possível também criar a nossa própria função e seus respectivos argumentos. Essa necessidade
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 16/65
24/04/2022 23:01 Aritmética computacional em Python
geralmente ocorre quando algum procedimento se repete no programa. Por exemplo, vamos supor que em um
problema você tenha que calcular diversos alcances de um lançamento oblíquo para diversos ângulos,
respectivamente, 15º, 30º, 45º, 60ºe 75º, usando esse programa.
Python
content_copy
1 >>>import math
2 >>>v0 =300
3 >>>g=10
4 >>>theta=15
5 >>>
6 >>>print(A)
Uma solução para isso é criar uma função, e a estrutura para declarar uma função em Python é dada da
seguinte maneira:
Declarações
return valor-de-retorno
A seguir, apresentaremos formas de executar procedimentos condicionados e recursivos, que são importantes
e comuns em funções.
Condicionais (if)
A construção de uma estrutura de condicionais no Python é dada por:
if condições:
bloco de instruções
elif condições:
bloco de instruções
else:
bloco de instruções
O exemplo a seguir é uma aplicação da estrutura if, onde o script decide se o número é positivo, negativo ou
zero:
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 17/65
24/04/2022 23:01 Aritmética computacional em Python
Python
content_copy
1 >>>def sinal_numerico(a):
2 >>> if a < 0.0: # Se a menor que zero
3 >>> sinal = ’negativo’
4 >>> elif a > 0.0: # Se a maior que zero
5 >>> sinal = ’positivo’
6 >>> else: # Senão, ou seja, se a não é maior, nem menor que zero (a igual
7 >>> sinal = ’zero’
8 >>> return sinal
9 >>> a = 1.5
10 >>>print(’a é ’ + sinal_numerico(a))
11 a é positivo
O Comando for
Antes de falarmos sobre o comando for, vamos abordar a função range. A função range retorna uma
progressão aritmética de inteiros numa lista com a seguinte estrutura: range (início,parada,incremento), onde:
Início
É um parâmetro opcional e o primeiro valor a ser gerado, quando não indicado, por default é o número
zero (0).
Parada
Incremento
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 18/65
24/04/2022 23:01 Aritmética computacional em Python
É um parâmetro opcional e indica o passo da progressão. O default, caso não seja informado, é um
(1).
Python
content_copy
1 >>> range(3) # parada indicada 3, como não foram indicados, o início será 0 e incremento ser
2 [0,1,2]
3 >>> range(2,5,2) # início 2, parada 5 e incremento 2
4 [2,4]
5 >>> range(5,2,-2) # o incremento é negativo
6 [5,3]
O comando for permite que nos informemos sobre os elementos de uma lista. De modo geral, o comando é
expresso da seguinte maneira:
Uma grande utilidade da função range é construir a lista de iteração, como no exemplo a seguir:
Python
content_copy
Solução do Problema
Agora, vamos retornar ao nosso problema anterior, ou seja, calcular diversos alcances de um lançamento
oblíquo para diversos ângulos, por exemplo: 15º, 30º, 45º, 60ºe 75º. Uma maneira de resolver esse problema é:
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 19/65
24/04/2022 23:01 Aritmética computacional em Python
Python
content_copy
1 >>>import numpy as np
2 >>>import matplotlib.pyplot as plt
3 >>>v0 = 5 # Velocidade inicial
4 >>>g = 10 # Aceleração da gravidade
5 >>>t = np.linspace(0,1,1001)# Tempo
6 >>>y = v0 * t - 0.5 * g * t ** 2 # Posição vertical
7 >>>plt.plot(t,y) # plotar o grafico yxt
8 >>>plt.xlabel('t (s)') # eixo x com t(s)
9 >>>plt.ylabel('y (m)') # eixo y como y(m)
10 >>>plt.show() #mostrar a figura
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 20/65
24/04/2022 23:01 Aritmética computacional em Python
1. A função linspace retorna um vetor e a construção genérica dele é linspace(a,b,n), onde gera um vetor
no intervalo [a,b] e com n pontos.
2. Quando utilizamos t como vetor, a função da altura y(t) torna-se também um vetor.
playlist_play
Vem que eu te explico!
Os vídeos a seguir abordam os assuntos mais relevantes do conteúdo que você acabou de estudar.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 21/65
24/04/2022 23:01 Aritmética computacional em Python
emoji_events
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 22/65
24/04/2022 23:01 Aritmética computacional em Python
Questão 1
A 39378
B 39377
C 39376
D 39375
E 39374
Responder
Questão 2
a=[1,2,3,4,5]
a[-5]
A 1
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 23/65
24/04/2022 23:01 Aritmética computacional em Python
B 5
C [3,4]
D [4, 5]
E [1,2,3,4,5]
Responder
starstarstarstarstar
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 24/65
24/04/2022 23:01 Aritmética computacional em Python
extension
Exemplo
O número 179 significa uma (1) centena (100) mais (+) sete (7) dezenas (10) e nove (9) unidades, ou,
de forma simplificada, por símbolos matemáticos: 179 = 1x102 + 7x10 + 9.
Agora, vamos generalizar essa notação matemática. Para isso, vamos adotar como representação para
qualquer digito numérico decimal a letra di, onde i é a posição no número N com n+1 dígitos. Por exemplo, no
número 179, o dígito decimal 1 encontra-se na posição i=2; 7 na posição i=1; e 9 na posição i=0. Em uma forma
de notação matemática, temos:
n n−1
N = d n d n−1 . . . . d i , . . . d 1 d 0 = d n ×10 + d n−1 ×10
1 0
+. . . +d 1 ×10 + d 0 ×10 ,
Onde
0 ≤ di < 10, i = 0, 1, … , n
Outra notação comum para representar um número inteiro positivo na base 10 é (dndn-1....di...d1d0 )10. Essa
notação nos leva a outra, caso se deseje representar o número com uma base diferente de 10, que seria N=
(dndn-1....di...d1d0 )b , com b sendo uma base diferente de 10; consequentemente, teremos 0≤ di < b.
n n−1
N = (d n d n−1 . . . . d i , . . . d 1 d 0 ) b = d n ×b + d n−1 ×b
1 0
+. . . +d 1 ×b + d 0 ×b
b=2
Binário
b=8
Octodecimal
b=16
Hexadecimal
Observe que, para b=2, por definição, os valores possíveis de d são 0 ou 1; de maneira análoga, quando b=8, os
valores que podem assumir são 0, 1, 2, 3, 4, 5, 6 e 7. Para os dígitos maiores que 9, adotamos as letras do
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 26/65
24/04/2022 23:01 Aritmética computacional em Python
nosso alfabeto, ou seja, A,B,C ,…. Nesse caso, para a base hexadecimal (b=16), os dígitos possíveis são 0, 1, 2,
3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F, onde A corresponde, na base decimal, ao número 10, B corresponde ao 11, e
assim, sucessivamente, até F, que corresponde ao 15 . Vejamos alguns exemplos:
2 1 0
(101) 2 = 1 × 2 + 0 × 2 + 1 × 2
2 1 0
(175) 8 = 1 × 8 + 7 × 8 + 5 × 8
2 1 0
(A2D) 16 = A × 16 + 2 × 16 + D × 16
n n−1
N = (d n d n−1 . . . . d i , . . . d 1 d 0 ) b = d n ×b + d n−1 ×b
i 1 0
+. . . +d i ×b +. . . . +d 1 ×b + d 0 ×b
2 1 0
(101) 2 = 1 × 2 + 0 × 2 + 1 × 2 = 4 + 0 + 1 = 5
2 1 0
(175) 8 = 1 × 8 + 7 × 8 + 5 × 8 = 1 × 64 + 7 × 8 + 5 × 1 = 125
2 1 0 2
(A2D) 16 = A × 16 + 2 × 16 + D × 16 = 10 × 16 + 2 × 16 + 13 = (2605) 10
De modo geral:
n n−1
(d n d n−1 … d i , … d 1 d 0 ) = dn × b + d n−1 × b
b
i 1 0
+ … + di × b + … + d1 × b + d0 × b = (N ) 10 = N
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# screen_rotation
27/65
24/04/2022 23:01 Aritmética computacional em Python
Rotacione a tela. screen_rotation
Onde N terá outros dígitos na base 10, como visto nos exemplos anteriores.
Para converter um número inteiro positivo N na base 10, para uma base b, é necessário determinar os seus
respectivos dígitos: di, de (dn dn-1....di,...d1 d0 )b. Para entender o procedimento, devemos nos lembrar do
algoritmo da divisão de números inteiros positivos, onde, ao dividir um número D por um número d, obtém-se
um quociente q e um resto r; e quando r=0, dizemos que a divisão foi exata e o resto só pode assumir os
valores de 0,1,2...d-1. Formalizando por símbolos matemáticos:
Agora, vamos fazer a divisão de N, na base 10, pela base b que deseja se transformar. Dessa forma, D=N e d=b,
sendo necessário descobrir quem será o q e o r. Lembrando o princípio da igualdade: se A=b, então, B=A.
Podemos observar que, na mudança da base b para a base 10, temos:
n n−1 i 1
dn × b + d n−1 × b + … + di × b + … + d1 × b +
0
d0 × b = (N ) 10 = N
n n−1 i 1 0
N = dn × b + d n−1 × b + … + di × b + … + d1 × b + d0 × b
n−1 n−2 i−1 0
q = dn × b + d n−1 × b + … + di × b + … + d1 × b
N =
0
xb e r = d 0
Então, quando dividimos o número inteiro positivo N, na base 10, por um número b na base desejada, obtemos
o resto r igual ao último digito d0 da representação de N-decimal na base b. Sabemos, pelo exemplo anterior,
que 2605 = (A2D)16, onde a letra D é o ultimo dígito na representação da base 16; de fato, quando dividimos
2605 por 16, resulta, como quociente, q=162 e resto r=13, que, na representação na base 16, é a letra D.
Portanto, o processo adotado será dividir N por b e obter q0 e r0 = d0; depois, divide-se q0 por b, resultando em
q1 e r1 = d1, e assim sucessivamente; os respectivos restos serão os dígitos di, na base b, e o quociente da n-
ésima e última divisão será o dn.
report_problem
Atenção
Define-se como bit (binary digit) o elemento de memória básico de um computador que assume dois
estados, que são representados pelos dígitos zero (0) e um (1). O número de bits disponíveis para
uma representação numérica de inteiros positivos corresponde ao maior inteiro que o computador
pode representar, ou seja, com m bits é possível representar 2m números. Por exemplo, para
representar os oito dígitos decimais, seriam necessários três bits, pois 23 = 8, entretanto, para
representar 10 dígitos decimais são necessários quatro bits, pois 24 = 16 configurações, o que é
excedente, ou seja, no sistema decimal há desperdício de bits.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 29/65
24/04/2022 23:01 Aritmética computacional em Python
Binário
A representação dos números inteiros não positivos é realizada utilizando a ideia do bit, ou seja, são
convencionadas para os sinais positivo (+) ou negativo (-) as representações de zero (0) ou um (1). O único
problema dessa representação ocorre em operações para obter os números +0 e -0, que, embora para o
computador sejam números diferentes, sabemos que são iguais.
assignment_ind
Comentário
Existem diversas formas de resolver esse problema, mas não é o objetivo deste conteúdo.
1 0 −1 −2
9 × 10 + 5 × 10 + 3 × 10 + 2 × 10
Agora, vamos generalizar essa ideia: um número real r na base dez (10), com n+1 dígitos na parte inteira e m
dígitos na parte fracionária, pode ser representado como:
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 30/65
24/04/2022 23:01 Aritmética computacional em Python
r = (d n d n−1 … d i , … d 1 d 0 , d −1 d −2 … d −m )
10
n n−1 1 0 −1
d n × 10 + d n−1 × 10 + … + d 1 × 10 + d 0 × 10 + d −1 × 10
−2 −m
+d −2 × 10 + … + d −m × 10
Rotacione a tela. screen_rotation
Utilizando o mesmo raciocínio, um número real r, representado em uma base b, pode ser escrito da seguinte
maneira:
r = (d n d n−1 … d i , … d 1 d 0 , d −1 d −2 … d −m )
b
n n−1 1 0 −1 −2 −m
dn × b + d n−1 × b + … + d1 × b + d0 × b + d −1 × b + d −2 × b + … + d −m × b
É a parte inteira.
É a parte fracionária.
Devemos reparar ambas as partes, ou seja, fazer r = i + 0,f; tomando como exemplo 95, temos 32 = 95 +0,32. Já
vimos nas seções anteriores a transformação da parte inteira; agora, vamos focar somente na parte fracionária
0,f. Então, vamos considerar que o nosso número real r só contém a parte fracionária:
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 31/65
24/04/2022 23:01 Aritmética computacional em Python
−1 −2
r = (0, d −1 d −2 … d −m ) = d −1 × b + d −2 × b +
b
−m
… + d −m × b
O procedimento seria, primeiramente, lembrar que, para transformar um inteiro na base (10) para uma base b,
deveríamos dividir o número por b, sucessivamente, e obter os restos. A ideia será a mesma, porém com uma
diferença, ao contrário de fazer divisões, faremos multiplicações, ou seja, o primeiro passo será multiplicar o
número real r pela base que se deseja transformar, b. Em símbolos matemáticos, teríamos:
−1 −m+1
r × b = d −1 + d −2 × b + … + d −m × b
Obtém-se uma parte inteira, d-1, e a parte fracionária começa com d-2. Multiplicando a parte fracionária
restante por b, o resultado será d-2, e, assim, sucessivamente. A seguir, veremos dois exemplos de conversão
dos número reais 0,625 e 0,2 para a base binária, o seja base dois (2):
Exemplo 1
Exemplo 2
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 32/65
24/04/2022 23:01 Aritmética computacional em Python
Esses dois exemplos ilustram que é possível, numa transformação de base dois de um número real na base 10,
obter um resultado cuja representação possui um número finito de zeros e um ou um número infinito (dízima
periódica) de zeros e um.
−1 −2
r = (0, d −1 d −2 … d −m ) = d −1 × b + d −2 × b +
b
−m
… + d −m × b
Por exemplo, converter o número (0,561)8 para a base 10, aplicando a fórmula:
−1 −2 −3
(0, 561) 8 = 5 × 8 + 5 × 8 + 5 × 8 = 0,
720703124
e
r = ±M × b
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 33/65
24/04/2022 23:01 Aritmética computacional em Python
Onde:
b≥2
É chamado de expoente.
No entanto, essa notação possui uma ambiguidade. O número 0,1, por exemplo, pode ser representado de
formas equivalentes:
∘ −1 1 2
0, 1 × 10 = 1 × 10 = 0, 01 × 10 = 0, 001 × 10 = 50
−2
× 10 = …
−1
M = 0 se r = 0 e b ≤ M < 1 se r ≠ 0
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 34/65
24/04/2022 23:01 Aritmética computacional em Python
Mantissa
Expoente
Criar um intervalo para o expoente, ou seja, o expoente e possui um valor mínimo (emin) e um valor
máximo (emax).
A notação que usaremos é FP(b,p, emin, emax), para nos referirmos ao número no sistema de ponto flutuante de
base b, na qual a mantissa possui p dígitos (na base b) e os expoentes estão contidos no intervalo fechado
[emin, emax], ou seja, r=0 ou r=±M×be, onde b-1 ≤ M ≤ 1 - b-p.
Tomamos como exemplo um número real representado em ponto flutuante FP(10,4,-99,99). Pode ser escrito de
forma genérica como r=±(0,d-1 d-2 d-3 d-4)×10e, onde -99≤ e ≤ 99. Observe que essa representação não é capaz
de representar o número real 0,1x10100, pois o expoente é igual a 100 > 99, que é o expoente máximo.
report_problem
Atenção
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 35/65
24/04/2022 23:01 Aritmética computacional em Python
video_library
Mudanças de Bases em Python
No vídeo a seguir, abordaremos os principais comandos em Python que são utilizados para mudanças de
bases.
playlist_play
Vem que eu te explico!
Os vídeos a seguir abordam os assuntos mais relevantes do conteúdo que você acabou de estudar.
Solução de exercícios
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 36/65
24/04/2022 23:01 Aritmética computacional em Python
emoji_events
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 37/65
24/04/2022 23:01 Aritmética computacional em Python
Questão 1
A (E2A)6
B (111)6
C (325)6
D (235)6
E (125)6
Responder
Questão 2
A (11,1)4
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 38/65
24/04/2022 23:01 Aritmética computacional em Python
B (111)4
C (10,1)4
D (1,11)4
E (10,1)4
Responder
starstarstarstarstar
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 39/65
24/04/2022 23:01 Aritmética computacional em Python
(√ 5)
2
= 5 , a resposta é falsa.
Erros de representação
A representação em pontos flutuantes só consegue ser realizada de maneira exata para alguns números. Para
outros números reais, poderá indicar algum erro, logicamente supondo que os números não sejam overflow ou
underflow. Definiremos um número real, que esteja contido em um sistema ponto flutuante FP(b,p, emin, emax ),
de forma exata, de r=fl(r). Caso contrário, obteremos a resposta r=fl(r) + erro.
Caso não seja possível representar o número real r no sistema de ponto flutuante com exatidão, existem duas
técnicas possíveis fl(r):
Dada uma mantissa M de um número real r, com número de dígitos m> p, onde p é o número de dígitos
do sistema de ponto flutuante; define-se o truncamento ao desprezar todos os dígitos a partir da
posição p+1. Por exemplo, seja o número real, na sua notação cientifica na base 10, igual a
r=0,341592654 x 10, se o representarmos num sistema de ponto flutuante FP(10,4,-99,99), então, o
resultado será fl(r) = 0,3415x10.
Essa técnica é a mais comum e tem por objetivo reduzir o erro entre o ponto flutuante fl(r) e o valor
exato r, ou seja, o valor mais próximo. Utilizando o exemplo anterior, aproximar fl(r) para 0,3416x10 tem
um erro menor que aproximar para o valor truncado.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 40/65
24/04/2022 23:01 Aritmética computacional em Python
O critério arrendondamento por aproximação, às vezes, pode apresentar uma ambiguidade, por
exemplo, quando o número real 0,15 for arrendondado para um dígito, os números 0,1 e 0,2 estão
igualmente próximos. Para resolver esse problema, foram desenvolvidas várias soluções e, para o
sistema binário (b=2) e decimal (b=10), a mais comum é arrendondar de forma que o último dígito seja
par.
report_problem
Atenção
Agora, podemos analisar os erros de representação de um número real e sem perda de generalidade. Vamos
considerar somente os números reais positivos exatos na notação cientifica normalizada, ou seja, r = Mxbt, e o
seu correspondente no sistema de ponto flutuante fl(r) = mxbt, não necessariamente normalizada. Define-se
como erro absoluto E por:
t t t
E = f l(r) − r = m × b − M × b = (m − M ) × b
1
É possível demonstrar que para o truncamento e para aproximação.
Define-se
t−p t−p
|E| ⩽ b |E| ⩽ b
2
f l(r) − r
e = ou f l(r) = (1 + e)r
r
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 41/65
24/04/2022 23:01 Aritmética computacional em Python
1
De maneira análoga, pode-se demonstrar que para o truncamento e
1−p 1−p
e ⩽ u = b e ⩽ u = b
2
extension
Exemplo
Para determinar a unidade de arrendondamento u de FP(2,24,-99,99) para o truncamento, temos:
.
1−p 1−24 −23 −6
b = 2 e p = 24, logo u = b = 2 = 2 ≃ 0, 16 × 10
Soma
a c a−c c
x1 + x2 = m1 b + m2 b = (m 1 + m 2 b )b
Subtração
a c a−c c
x1 − x2 = m1 b − m2 b = (m 1 − m 2 b )b
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 42/65
24/04/2022 23:01 Aritmética computacional em Python
Multiplicação
a c a+c
x 1 ×x 2 = m 1 b ×m 2 b = (m 1 ×m 2 )b
Divisão
a c a−c
x 1 ÷x 2 = m 1 b ÷m 2 b = (m 1 ÷m 2 )b
Podemos observar que nas quatro operações, considerando os expoentes inteiros, esses não são fontes de
erros, somente nos casos de overflow e underflow. Portanto, as fontes de erros encontram-se nas operações
das mantissas.
Vamos considerar dois valores reais positivos, x1=m1ba e x2=m2bc , e que x1 > x2 sejam os
valores exatos:
Soma
y= x1 + x2
Subtração
y= x1 - x2
Multiplicação
y= x1 * x2
Divisão
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 43/65
24/04/2022 23:01 Aritmética computacional em Python
y= x1 / x2
Em seguida, vamos definir as operações no sistema de pontos flutuantes. Por exemplo, quando calculamos
1/7 + 1/60 no sistema decimal FP(10,4,-2,2), temos:
∘ ∘
f l(1/7) = (0, 1429) ∗ 10 = (0, 1429) ∗ 10
∗ −1 ∗ ∘
f l(1/60) = (0, 1667) 10 = (0, 1667) 10
∗ ∘
y = f l(1/7) + f (1/60) = (0, 1596) ∗ 10
No entanto, o resultado exato é 67/20 = 0,1595238… e os erros absolutos e relativos são E=(0,76)*10-4 e e=
(0,48)*10-3. Agora, vamos estimar, de modo geral, os erros absolutos e relativos para as quatro operações e,
como já foi visto, fl(x) = x(1 +e) e |e|< u (unidade de arredondamento). Vamos lá:
Adição expand_more
Como sabemos:
^ = f l (x 1 + x 2 ) = (1 + e 1 )x 1 + (1 + e 2 )x 2
y
^ − y = e1 x1 + e2 x2
E = y
O erro relativo:
E x1 x2
e = = e1 ( ) + e2 ( )
y x1 + x2 x1 + x2
E a estimativa:
∗
|E| ≤ 2u y e |e| ≤ 2u
Subtração expand_more
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 44/65
24/04/2022 23:01 Aritmética computacional em Python
y
^ = f l (x 1 − x 2 ) = (1 + e 1 )x 1 − (1 + e 2 )x 2
E = y
^ − y = e1 x1 − e2 x2
E x1 x2
e = = e1 ( ) + e2 ( )
y x1 − x2 x1 − x2
E as respectivas estimativas:
∗
|E| ≤ 2u (|x 1 | + |x 2 |) e |e| ≤ 2u ((|x 1 | + |x 2 |)/ (|x 1 − x 2 |))
Multiplicação expand_more
^ = f l (x 1 × x 2 ) = (1 + e 1 ) (1 + e 2 )x 1 x 2
y
E = [(1 + e 1 ) (1 + e 2 ) − 1]x 1 x 2
e = (1 + e 1 ) (1 + e 2 ) − 1
Ou seja:
f l (x 1 × x 2 ) = (1 + e)x 1 x 2 com |e| ≤ 3u
Divisão expand_more
(1 + e 1 )x 1
^ = f l (x 1 ÷ x 2 ) =
y
(1 + e 2 )x 2
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 45/65
24/04/2022 23:01 Aritmética computacional em Python
(1 + e 1 ) x1
E = [ − 1]
(1 + e 2 ) x2
(1 + e 1 )
e = − 1
(1 + e 2 )
Ou seja:
x1
f l (x 1 ÷ x 2 ) = (1 + e) com |e| ≤ 3u
x2
extension
Exemplo
Para entendermos melhor, vamos calcular a subtração dos valores x1 =0,43787 *10-2 e x2 =0,43783
*102, para o sistema de ponto flutuante FP(10,4,-99,99), e obter os erros absolutos e relativo. Para
iniciar, o valor exato da subtração y = 0,4 * 10-6 e para o sistema de ponto flutuante, fl(x1 - x2) =0,1000
* 10-5. Dessa maneira |E| = 0,60 * 10-6 e |e| = 1,5. Agora, observamos que, embora o erro absoluto seja
pequeno, o erro relativo foi alto. Esse problema é conhecido como cancelamento, sendo comum nas
operações que envolvem subtração. Existem técnicas para diminuir o cancelamento e uma delas é
acrescentar 1 ou 2 dígitos na representação do número arredondado no sistema de ponto flutuante
utilizado.
y= Σ
3000
k=1
xk para xk constante e igual a 0,1, o valor exato é 3000.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 46/65
24/04/2022 23:01 Aritmética computacional em Python
Python
content_copy
1 # Soma 1
2 >>>soma = 0.1 + 0.1 + 0.1
3 >>>print('soma = '+str(val))
4 soma =0.30000000000000004
5
6 # Soma 2
7 >>>n = 30000
8 >>>lista1 = [0.5] * n
9 >>> print('sum(lista1) = '',sum(lista1)')
10 sum(lista1) = 15000.0
11
12 # Soma 3
13 >>>n = 30000
14 >>>lista2 = [0.1] * n
video_library
Cálculos de erros em Python
No vídeo a seguir, abordaremos os conceitos de erros computacionais e como podem ser observados em
Python.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 47/65
24/04/2022 23:01 Aritmética computacional em Python
playlist_play
Vem que eu te explico!
Os vídeos a seguir abordam os assuntos mais relevantes do conteúdo que você acabou de estudar.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 48/65
24/04/2022 23:01 Aritmética computacional em Python
emoji_events
Questão 1
Sabendo que o valor exato de um número n = 2345.713 e que, por um processo computacional, foi obtido
um valor aproximado de 2346.000. Calcule os erros absoluto e relativo.
A 0.710 e 0.00250000
B 0.716 e 0.00031340
C 0.731 e 0.00030396
D 0 713 e 0 00030369
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 49/65
24/04/2022 23:01 Aritmética computacional em Python
D 0.713 e 0.00030369
E 0.713 e 0.00030396
Responder
Questão 2
1 2
Para calcular o valor de √2 , é possível utilizar o método iterativo x n+1 = (x n + ) , para
2 xn
A 0,05882
B 0,00173
C 0,02222
D 0,33333
E 0,00001
Responder
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 50/65
24/04/2022 23:01 Aritmética computacional em Python
starstarstarstarstar
Primeiro passo
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 51/65
24/04/2022 23:01 Aritmética computacional em Python
Segundo passo
p(x).
Terceiro passo
São calculados os próximos x i+1 até o p(x i ) ficar tão pequeno quanto desejamos,
normalmente adotado em uma tolerância, tol. Então, a iteração pode ser dada pela seguinte
anotação:
x i+1 = x i + p (x i ), |p (x 1 )| ≥ tol
Agora, vamos determinar a raiz quadrada de dois, √2 usando o método iterativo, com chute inicial
lados .
2
2x
2 2 2
2x + x = 2x + 2
2 2 2
2x + 2x = x + 2 ÷ (2x)
2
x − 2
x = x −
2x
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 52/65
24/04/2022 23:01 Aritmética computacional em Python
2
x − 2
p (x) =
2x
2
x − 2
i
x i+1 = x i −
2x i
2 2
x − 2 1 − 2
0
x1 = x0 − = 1 − = 1, 5
2x 0 2 ⋅ 1
2 2
x − 2 1, 5 − 2
1
x2 = x1 − = 1 − = 1, 4167
2x 1 2 ⋅ 1, 5
Método da bisseção
O método da bisseção consiste na ideia de obter uma raiz, z, que esteja exatamente no ponto médio de um
intervalo. Esse intervalo é obtido pelo processo iterativo do método, onde parte da hipótese que existe, pelo
menos, uma raiz contida nesse intervalo inicial. Além disso, esse intervalo inicial tem como condição que os
valores da função não linear, no intervalo entre os extremos, tenham os sinais opostos.
Em notação matemática: seja o intervalo I= [a,b], se f(a).f(b)< 0. Nesse intervalo I, existe pelo menos uma raiz,
z. Essa afirmação é do Teorema de Bonzano e pode ser visualizada graficamente a seguir.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 53/65
24/04/2022 23:01 Aritmética computacional em Python
Seja o intervalo inicial I0 =[a0,b0] = [a,b], de tal modo f(a) . f(b)< 0, ou seja, f(a) e f(b) possuem sinais contrários.
Adotaremos a notação de Ii = [ai, bi], os intervalos na primeira iteração i=1, na segunda iteração i=2, e, assim,
sucessivamente. Para Ii, teremos o ponto médio, x i+1 , isto é:
ai + bi
x 1+1 =
2
Se f (z i+1 ) = 0 , então, z i+1 é o zero da função e interrompe o algoritmo; se não, deverá verificar o sinal
o substitui por z 1+1 , determinando o intervalo I i+1 = [a 1 , z i+1 ] , ou seja, fizemos a a 1+1 = a i e
Assim, podemos garantir que o zero sempre estará em um dos intervalos. Segundo as iterações, e dividindo
pela metade de intervalos, vamos confirmando o zero da função f(x) em um intervalo tão pequeno quanto
desejar.
Python
content_copy
1 >>>import math
2 >>>from numpy import sign
3 >>>def bisection(f,x1,x2,switch=1,tol=1.0e-9):
4 >>> f1 = f(x1)
5 >>> if f1 == 0.0: return x1
6 >>> f2 = f(x2)
7 >>> if f2 == 0.0: return x2
8 >>> if sign(f1) == sign(f2):
9 >>> print('Raiz não se encontra no intervalo informado')
10 >>> n = int(math.ceil(math.log(abs(x2 - x1)/tol)/math.log(2.0)))
11 >>> for i in range(n):
12 >>> x3 = 0.5*(x1 + x2); f3 = f(x3)
13 >>> if (switch == 1) and (abs(f3) > abs(f1)) \
14 >>> and (abs(f3) > abs(f2)):
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 54/65
24/04/2022 23:01 Aritmética computacional em Python
Método do secante
O método do secante consiste, basicamente, em obter uma reta que contém os pontos (x i−1 , f (x i−1 )) e
(x i , f (x i−1 )) , e obter o ponto (x i+1 , f (x i+1 )) que é a interseção com a função f (x) . A diferença
desse método com o de bissecação é que não é necessário verificar a condição do Teorema de Bonzano:
f (x i−1 ) × f (x i ) é ou não menor que zero. O método está ilustrado no gráfico a seguir.
f (x i )x i−1 − f (x i−1 )x i
x i+1 =
f (x i ) − f (x i−1 )
A expressão anterior pode apresentar um erro de cancelamento. Para evitar isso, pode-se reescrever a
expressão como:
f (x i )
x i+1 = x i + p i , onde pi =
[f (x i ) − f (x i−1 )/ (x i − x i−1 )]
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 55/65
24/04/2022 23:01 Aritmética computacional em Python
1 >>>import sys
2 >>>def secant(f, x0, x1, eps):
3 >>> f_x0 = f(x0)
4 >>> f_x1 = f(x1)
5 >>> numero_de_iteracoes = 0
6 >>> while abs(f_x1) > eps and numero_de_iteracoes < 100:
7 >>> try:
8 >>> denominador = (f_x1 - f_x0)/(x1 - x0)
9 >>> x = x1 - f_x1/denominador
10 >>> except ZeroDivisionError:
11 >>> print('Erro! - denominador zero para x = ', x)
12 >>> sys.exit(1)# Sair do programa caso tenha erro
13 >>> x0 = x1
14 >>> x1 = x
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 56/65
24/04/2022 23:01 Aritmética computacional em Python
O método de Newton-Raphson partiu da mesma ideia do método da secante, com uma diferenciação: agora,
em vez de iniciar com dois pontos, vamos iniciar somente com um ponto (x i , f (x i )) , determinar a reta
tangente a função f (x) nesse ponto e obter a interseção dessa reta, como o eixo-x, determinando xi+1,
É o coeficiente angular.
É o termo independente.
Para determinar esses valores, precisamos de um pouco de álgebra e de conhecimento de cálculo. Do cálculo,
tiramos que m é igual à derivada de f (x) em xi, f’(xi), pois a reta é tangente à função; e da álgebra, concluímos
que a equação dessa reta tangente é:
′
g(x) = f (x i ) − f (x i ) (x − x i )
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 57/65
24/04/2022 23:01 Aritmética computacional em Python
Logo, ao calcular x i+1 , que é a interseção de g (x) com eixo-x, ou seja, g (x i+1 ) = 0 , chegamos a:
f (x i )
x i+1 = x i −
′
f (x i )
f (x i )
Ou seja, o passo p_ipi do método de Newton x i+1 = x i −
′
. Porém, nem sempre é possível obter o
f (x i )
valor da derivada algebricamente; na maioria das vezes, a derivada é obtida numericamente conforme vemos a
seguir, com um valor de h muito pequeno, determinado pelo modelo matemático:
f (x i + h) − f (x i )
′
f (x i ) ≃
h
report_problem
Atenção
O método de Newton é eficiente quando o chute inicial, x0 , é próximo da raiz que se deseja
determinar. Algumas vezes, é interessante obter uma raiz aproximada com outro método (por
exemplo, da Bisseção) e aplicar o método de newton para obter uma raiz mais precisa.
Python
content_copy
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 58/65
24/04/2022 23:01 Aritmética computacional em Python
5 >>> dx = -f(x)/df(x)
6 >>> x = x + dx
7 >>> if abs(dx) < tol: return x,i
8 >>> print('Muitas iterações\n')
9 >>>raiz,numIter = newtonRaphson(2.0)
10 >>>print( 'Raiz =',raiz)
11 >>>print('Numero de iterações =' ,numIter)
video_library
Cálculos de zeros de funções não lineares
em Python
No vídeo a seguir, abordaremos os conceitos de cálculo de zeros de funções em Python.
playlist_play
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 59/65
24/04/2022 23:01 Aritmética computacional em Python
emoji_events
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 60/65
24/04/2022 23:01 Aritmética computacional em Python
Questão 1
M
Considere a seguinte equação: , em que C é o capital emprestado, M é a
−n
C = [1 − (1 + r) ]
r
mensalidade, r é a taxa de juro por cada período (expressa como uma fracção) e n é o número de anos.
Uma pessoa pode pagar uma mensalidade de R$1.250,00. Se pretender contrair um empréstimo de
R$10.000,00 a 10 anos, qual é a taxa que poderá suportar?
OBS.: O valor da taxa deve estar entre 0.01 e 0.05. Use um método iterativo que não recorra à derivada.
A 0,0151
B 0,0456
C 0,0428
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 61/65
24/04/2022 23:01 Aritmética computacional em Python
D 0,0500
E 0,0482
Responder
Questão 2
A relação entre a distância y (quilômetros) percorrida pela lava de um vulcão em erupção e o tempo t
(horas) é dada por:
t
y = 7 (2 − 0.9 )
Existe uma aldeia no sopé da montanha a uma distância de y = 10 . O gabinete de proteção civil
advertiu os moradores da aldeia de que a lava chegaria às suas casas em menos de 6 horas. Calcule,
utilizando o método de Newton, o instante de tempo em que a lava do vulcão atinge a aldeia. Considere
como tolerância 10 −3 .
x
da
Obs: = a
x
ln(a) .
dx
A 5,3141
B 5,4113
C 5,3411
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 62/65
24/04/2022 23:01 Aritmética computacional em Python
D 5,1341
E 5,3114
Responder
starstarstarstarstar
Considerações finais
Chegamos ao final deste conteúdo, no qual apresentamos conceitos fundamentais para a modelagem
matemática. Nesta, a representação numérica em base binária possui limitações computacionais que podem
causar erros. Esses erros podem ser mensurados e, dependendo do conhecimento dos valores exatos,
podemos calculá-los.
Para exemplificar essas representações, utilizamos a linguagem Python, iniciamos conceitos de variáveis,
strings, listas e aprendemos a definir funções. O Python, embora seja uma linguagem interpretada, é muito
poderosa e apresenta muitas funcionalidades nos módulos, como, por exemplo, math, numpy e matplotlib,
sendo o último usado para construir gráficos com estilo semelhante ao MatLab.
Finalmente, começamos com uns dos primeiros modelos de matemáticos iterativos para determinar os zeros
de funções não lineares. Descrevemos os algoritmos dos métodos da Bisseção, Newton e Secantes. Os
métodos da Bisseção e Secantes não utilizam derivadas, à diferença do método de Newton, em que é
necessário calcular a primeira derivada da função, da qual se deseja calcular o zero e possui a limitação do
chute inicial, que deve se encontrar próximo da raiz. O método da bisseção é necessário para determinar o
intervalo no domínio da função que contenha o zero. Para isso, é utilizado o teorema de Bolzano.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 63/65
24/04/2022 23:01 Aritmética computacional em Python
headset
Podcast
Ouça, no podcast, uma explicação a respeito dos recursos do Python na aritmética computacional e
dos principais tipos de erros computacionais.
00:00 05:16
speed
1x
Referências
BURDEN, R. L.; FAIRES, J. D. Análise Numérica. São Paulo: Thomson, 2003.
DIEGUEZ, J. P. P. Métodos de Cálculo Numérico. Rio de Janeiro: Fundação Ricardo Franco, 2005.
IEEE. Standard for Floating-Point Arithmetic. In: EEE Std 754-2019 (Revision of IEEE 754-2008), vol., no., pp.1-
84, 22 July 2019, doi: 10.1109/IEEESTD.2019.8766229.
RUGGIERO, M. A. G.; LOPES, V. L. R. Cálculo Numérico: aspectos teóricos e computacionais. São Paulo: Makron
Books, 1996.
Explore +
Você pode acessar e realizar o download de bibliotecas de Python disponíveis nos sites Phyton, Jupyter e
Colaboratory.
Pesquise o site Matplotlib para explorar diversas maneiras de fazer gráficos e figuras em Python.
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 64/65
24/04/2022 23:01 Aritmética computacional em Python
https://stecine.azureedge.net/repositorio/00212ti/02279/index.html# 65/65