📘 Modelagem Matemática: Aulas 01 e 02
📌 Sumário da Aula
- Aritmética Computacional, Fundamentos Computacional e Teoria de Erros
- 📊 Diagrama Técnico Estrutural
- 1.1 Variáveis e Tipos de Dados
- 1.2 Operadores Aritméticos e Relação de Precedência
- 1.3 Strings: Indexação, Fatiamento e Formatação
- 1.4 Lógica Booleana e Operadores Relacionais
- 1.5 Estruturas de Dados Sequenciais: Tuplas vs. Listas
- 1.6 Modularidade: Funções, Condicionais e Laços de Repetição
- 1.7 Bibliotecas Científicas: NumPy e Matplotlib
- 2.1 Sistemas de Numeração Posicionais
- 2.2 Algoritmos de Conversão de Bases para Inteiros
- 2.3 Bits e Representação com Sinal (Sinal-Magnitude)
- 2.4 Representação de Números Reais Fracionários
- 2.5 Notação Científica Normalizada e Ponto Flutuante
- 2.6 Métricas de Erro: Erro Absoluto e Erro Relativo
- 2.7 Técnicas de Aproximação: Truncamento vs. Arredondamento
- 2.8 Aritmética de Ponto Flutuante e Propagação de Erros
- 2.9 Cancelamento Catastrófico (*Loss of Significance*)
- Atividade 1: Expressões e Precedência
- Atividade 2: Mutabilidade de Sequências
- Atividade 3: Overflow em Ponto Flutuante
- Atividade 4: Cálculo de Erro Absoluto e Relativo
- Atividade 5: Erro de Operação por Alinhamento de Expoente
- Atividade 1 (Apostila 01 - Seção 1 / Atividade 1): Expressões Booleanas e Tipos Numéricos Computacional
- Atividade 2 (Apostila 01 - Seção 1 / Atividade 2): Mutabilidade de Listas vs. Imutabilidade de Tuplas
- Atividade 3 (Apostila 01 - Seção 1 / Atividade 3): Laço de Repetição e Somatório com `range`
- Atividade 4 (Apostila 01 - Seção 2 / Atividade 1): Notação Posicional Decimal
- Atividade 5 (Apostila 01 - Seção 2 / Atividade 2): Conversão Decimal para Binário Inteiro
- Atividade 6 (Apostila 01 - Seção 2 / Atividade 3): Limitações de Ponto Flutuante e Overflow
- Atividade 7 (Apostila 01 - Seção 2 / Atividade 4): Cálculo de Erro Absoluto e Relativo
- Atividade 8 (Apostila 01 - Seção 2 / Atividade 5): Propagação de Erro na Adição com Ponto Flutuante
- 🔮 Conexão com o Próximo Bloco: Zeros de Funções Não Lineares
Aritmética Computacional, Fundamentos Computacional e Teoria de Erros
Navegação Rápida no Cofre
📍 Disciplina: Modelagem Matemática | 📚 MOC: 01 Matemática e Estatística | 🏠 Início: Hub Principal 📄 Apostila Base: Aritmética Computacional Computacional 💻 Códigos Associados: conversor_bin (Material Complementar) | conversor_bin_numeros_reais (Material Complementar) | estrutura_condicional (Material Complementar) | laços (Material Complementar) | função (Material Complementar) | graficos (Material Complementar) | tuplas (Material Complementar) 🖼️ Diagrama Técnico: modelagem_aritmetica_ieee754_erros.svg
🎯 Objetivos de Aprendizagem
Ao final destas duas aulas, você será capaz de:
- Dominar a sintaxe fundamental do Python aplicada à modelagem matemática: tipos numéricos, operadores, estruturas de dados (listas e tuplas), fluxo de controle, funções e bibliotecas científicas (
numpyematplotlib). - Compreender a representação de sistemas de numeração: conversão posicional entre bases (decimal, binária, octal e hexadecimal) para inteiros e reais fracionários.
- Analisar a aritmética de ponto flutuante (IEEE 754): normalização científica, mantissa, expoente, fenômenos de overflow e underflow.
- Quantificar erros numéricos: cálculo analítico e computacional de erro absoluto () e erro relativo ().
- Identificar fontes de imprecisão computacional: arredondamento por truncamento versus aproximação (regra do par mais próximo), propagação de erros operacionais e o perigo do cancelamento catastrófico.
📊 Diagrama Técnico Estrutural
🧩 PARTE I: AULA 01 — Fundamentos de Programação Computacional para Modelagem
A modelagem matemática em engenharia requer a tradução de equações físicas em algoritmos executáveis. O Python é a linguagem padrão devido à sua clareza, dinamismo e rico ecossistema científico.
1.1 Variáveis e Tipos de Dados
Uma variável atua como uma referência nomeada a um endereço de memória onde determinado objeto está armazenado.
Distinção Crucial:
=(Atribuição) vs (Igualdade Matemática)
- Na matemática, é uma contradição impossível.
- Na programação,
x = x + 1é uma instrução de atualização iterativa: “avalie o valor atual armazenado em , some a ele e grave o novo valor de volta na variável ”.
Boas Práticas e Tipagem
Em Python, a tipagem é dinâmica e fortemente tipada. Recomenda-se utilizar nomes descritivos em conformidade com o padrão PEP 8 (snake_case):
Parâmetros de Projeto e Considerações Analíticas:
- Atribuições com nomes descritivos
1.2 Operadores Aritméticos e Relação de Precedência
O Python disponibiliza operadores primitivos essenciais para formulações analíticas:
| Operador | Operação | Exemplo Computacional | Resultado | Observações para Modelagem |
|---|---|---|---|---|
+ | Adição | 5 + 3 | 8 | Comuta parcelas |
- | Subtração | 10 - 4 | 6 | Atenção a números muito próximos |
* | Multiplicação | 7 * 6 | 42 | Produto escalar ou escalar por vetor |
/ | Divisão real | 10 / 4 | 2.5 | Sempre retorna float, mesmo com divisão exata |
// | Divisão inteira | 10 // 3 | 3 | Descarta completamente a fração |
% | Módulo (Resto) | 10 % 3 | 1 | Usado para teste de paridade e periodicidade |
** | Exponenciação | 2 ** 3 | 8 | Equivalente a |
Ordem de Precedência Matemática
Assim como no cálculo analítico, operadores possuem hierarquia estrita:
- Parênteses:
(...)(forçam prioridade) - Potenciação:
** - Multiplicação e divisões:
*,/,//,%(avaliados da esquerda para a direita) - Adição e subtração:
+,-
Parâmetros de Projeto e Considerações Analíticas:
- Demonstração de Precedência
Exemplo Prático: Fórmula dos Juros Compostos / Decaimento Exponencial
Parâmetros de Projeto e Considerações Analíticas:
- f-string com formatação de 2 casas decimais (: .2f)
- Saída: O valor acumulado será de: R$ 1104.62
1.3 Strings: Indexação, Fatiamento e Formatação
Textos são sequências ordenadas e imutáveis de caracteres (tipo str).
Indexação e Slicing
- Indexação Positiva: inicia em
0e vai atén-1. - Indexação Negativa: o último elemento é
-1, o penúltimo-2, etc. - Fatiamento (Slice):
string[inicio : fim : passo](o limitefimé exclusivo).
Parâmetros de Projeto e Considerações Analíticas:
- Indexação
- Fatiamento
1.4 Lógica Booleana e Operadores Relacionais
A tomada de decisão em algoritmos numéricos baseia-se em condições booleanas (True ou False).
Operadores Relacionais
<: Menor que>: Maior que<=: Menor ou igual a>=: Maior ou igual a==: Igualdade de valor (dois sinais de igual)!=: Diferente de
Operadores Lógicos
and: Verdadeiro apenas se todas as condições forem verdadeiras.or: Verdadeiro se pelo menos uma condição for verdadeira.not: Inversão lógica.
1.5 Estruturas de Dados Sequenciais: Tuplas vs. Listas
Para modelar vetores, matrizes, coordenadas e tabelas de iteração, o Python oferece tuplas e listas nativas.
| Propriedade | Tupla (tuple) | Lista (list) |
|---|---|---|
| Sintaxe | Parênteses: (1, 2, 3) | Colchetes: [1, 2, 3] |
| Mutabilidade | Imutável (tamanho e valores fixos) | Mutável (permite inserção, edição e remoção) |
| Desempenho | Mais leve e rápida para leitura | Maior flexibilidade e sobrecarga dinâmica |
| Uso em Modelagem | Coordenadas fixas , dimensões de malha | Séries temporais, históricos de aproximações |
Código Exemplo de Manipulação
Parâmetros de Projeto e Considerações Analíticas:
-
- Tuplas
- dados[1] = 110 -> ERRO! TypeError: ‘tuple’ object does not support item assignment
-
- Listas
-
- Operadores em sequências
1.6 Modularidade: Funções, Condicionais e Laços de Repetição
A estrutura básica de qualquer método numérico (como Newton-Raphson ou Bisseção) requer modularização em funções e repetições controladas.
Definição de Funções (def)
Estrutura Condicional (if, elif, else)
Laço for com range(início, parada, passo)
O laço for itera sobre sequências pré-definidas. O comando range(1, 5) gera os números [1, 2, 3, 4] (o limite superior não é incluso).
Parâmetros de Projeto e Considerações Analíticas:
- Acumulador de somatório: sum_{i=1}^4 i
1.7 Bibliotecas Científicas: NumPy e Matplotlib
Para resolver problemas reais de engenharia, usamos duas bibliotecas fundamentais:
numpy: vetores e matrizes de alta performance em C, funções matemáticas vetorizadas.matplotlib.pyplot: renderização gráfica de curvas, superfícies e convergências numéricas.
Exemplo de Plotagem de Função
Parâmetros de Projeto e Considerações Analíticas:
-
- Gerar malha de 100 pontos no domínio [-2, 2]
-
- Avaliar a função quadrática y = x²
-
- Construir e configurar o gráfico
🔢 PARTE II: AULA 02 — Representação Numérica, Sistemas de Bases e Aritmética de Ponto Flutuante
Os computadores não operam com o contínuo matemático dos números reais (), mas com circuitos biestáveis finitos (bits). Entender como os números são traduzidos e armazenados é imperativo para evitar catástrofes numéricas.
2.1 Sistemas de Numeração Posicionais
Qualquer número inteiro positivo pode ser representado de forma única em uma base inteira () através da expansão polinomial posicional:
Onde cada dígito satisfaz: .
As Quatro Bases Fundamentais na Engenharia
- Base Decimal (): Dígitos .
- Base Binária (): Dígitos . Base nativa do hardware.
- Base Octal (): Dígitos . Agrupa 3 bits ().
- Base Hexadecimal (): Dígitos . Agrupa 4 bits ().
Exemplo de Decomposição Posicional Decimal:
2.2 Algoritmos de Conversão de Bases para Inteiros
1. De Base para Base Decimal ()
Basta expandir o somatório das potências de :
- Binário para Decimal:
- Hexadecimal para Decimal:
2. De Base Decimal para Base () — Algoritmo das Divisões Sucessivas
Divide-se sucessivamente o número pela base de destino . Os restos formam os dígitos da direita para a esquerda (do menos significativo ao mais significativo):
undefined