Skip to content

DeguShi/Trabalho_Calculo-Numerico

Repository files navigation

Trabalho Prático de Cálculo Numérico (SME0104)

Este repositório contém a resolução do trabalho prático da disciplina de Cálculo Numérico (SME0104), ministrada pela Professora Cynthia Lage Ferreira. O objetivo deste trabalho é aplicar os conceitos aprendidos em aula para solucionar uma série de problemas por meio da implementação de métodos numéricos em Python, utilizando a plataforma Colab.

O trabalho é composto por cinco exercícios que abordam os seguintes tópicos:

  1. Sistemas Lineares
  2. Zeros de Funções e Sistemas Não Lineares
  3. Decomposição em Valores Singulares (SVD)
  4. Interpolação
  5. Mínimos Quadrados

A seguir, cada exercício é detalhado conforme as especificações do enunciado.

1. Sistemas Lineares

Neste exercício, o objetivo é realizar uma análise comparativa detalhada entre duas funções Python, func1 e func2, que implementam a decomposição LU de uma matriz A.

A tarefa consiste em:

  • Analisar e comentar os códigos de func1 e func2 para explicar suas operações.
  • Aplicar ambas as funções a uma matriz de dimensão $n=2000$ e um parâmetro $p=2$, gerada conforme o exemplo fornecido.
  • Discutir as diferenças entre as funções e apresentar conclusões baseadas nos resultados obtidos, incluindo a análise do tempo de execução e da precisão da decomposição.

2. Zeros de Funções e Sistemas Não Lineares

Este exercício aborda o problema de determinar a altura do impacto de um projétil em uma elevação. O perfil das elevações é dado pela função $p(x) = -x^4 + 7.7x^3 - 18x^2 + 13.6x$ e a trajetória do projétil é descrita pela curva $q(x) = -x^2 + 5x + 0.75$.

As duas abordagens solicitadas para resolver o problema são:

  • a) Formulação como Raiz de Função Não Linear:

    • Formular o problema de modo que a solução seja a raiz de uma função $f: \mathbb{R} \rightarrow \mathbb{R}$.
    • Utilizar o Método da Bisseção, com precisão de 0.001 e um máximo de 5 iterações, para encontrar a raiz e, consequentemente, a altura do impacto.
  • b) Formulação como Raiz de Sistema Não Linear:

    • Formular o problema de modo que sua solução seja uma raiz de uma função $F: \mathbb{R}^2 \rightarrow \mathbb{R}^2$.
    • Utilizar o Método de Newton para Sistemas, com precisão de 0.001, para aproximar a raiz e a altura do impacto.

Para ambas as partes, é necessário apresentar os códigos, os critérios de parada e uma comparação detalhada entre as soluções encontradas.

3. Decomposição em Valores Singulares (SVD)

Este exercício explora a Decomposição em Valores Singulares (SVD) de uma matriz $A_{m \times n}$ e sua relação com o cálculo de autovalores e autovetores. A principal ferramenta a ser utilizada é o Método de Francis, que emprega sucessivas decomposições QR para encontrar os autovalores de uma matriz simétrica.

As tarefas são:

  • a) Implementar em código o Método de Francis para cálculo de autovalores e autovetores, utilizando a função numpy.linalg.qr.
  • b) Desenvolver um código que calcule a decomposição SVD de uma matriz $A_{m \times n}$ qualquer, utilizando a rotina do Método de Francis implementada no item anterior. A sugestão é aplicar o método em $AA^T$ ou $A^T A$ e derivar o restante da decomposição.
  • c) Aplicar a SVD para compressão de imagens. Para isso, deve-se:
    • Carregar a imagem em escala de cinza cat.png usando a biblioteca Matplotlib.
    • Comprimir a imagem utilizando a decomposição SVD implementada e a função numpy.linalg.svd.
    • A compressão deve ser feita representando a imagem com 50% e 70% menos valores singulares.
    • Plotar a imagem original e as imagens comprimidas para comparação.

4. Interpolação

O foco deste exercício é a análise de diferentes métodos de interpolação para a função $f(t) = \frac{1}{1+25t^2}$ no intervalo $[-1, 1]$.

As etapas do exercício são:

  • a) Implementar os métodos de interpolação de Lagrange e de Newton.
  • b) Utilizar as implementações para interpolar a função com base em 11 pontos igualmente espaçados, exibir os gráficos e justificar teoricamente por que os resultados são idênticos.
  • c) Repetir o processo com 21 pontos igualmente espaçados, plotar o gráfico comparativo com a função exata e analisar o fenômeno resultante.
  • d) Utilizar a função scipy.interpolate.interp1d para calcular a interpolação por spline linear e cúbica com 21 pontos. Apresentar os gráficos e comparar com os resultados anteriores.
  • e) Repetir os itens b) e c) utilizando nós de Chebyshev. Comentar por que os resultados obtidos com esses nós são superiores aos anteriores.

5. Mínimos Quadrados

Neste último exercício, o objetivo é ajustar modelos matemáticos a um conjunto de dados de casos acumulados de Covid-19 no Brasil, de 26 de fevereiro a 18 de junho de 2020, utilizando o método dos mínimos quadrados.

As tarefas são:

  • a) Explicar o funcionamento dos códigos mmq e mmq_QR fornecidos, que resolvem o problema de mínimos quadrados.
  • b) Ajustar uma função exponencial da forma $g(x) = ab^x$ aos dados do período completo.
  • c) Ajustar polinômios de grau $m=4, 5, 6$ aos dados do período completo.
  • d) Calcular o erro de truncamento para os ajustes dos itens b) e c) e comparar os resultados.
  • e) Repetir a análise dos itens b), c) e d) considerando apenas os primeiros 20 dias dos dados.
  • f) Repetir a análise dos itens b), c) e d) considerando apenas os últimos 50 dias dos dados.
  • g) Comparar todos os resultados obtidos e discutir as informações que os diferentes ajustes fornecem sobre a evolução da pandemia nos períodos analisados.

Nota de Autoria

Este projeto foi desenvolvido para a disciplina de Cálculo Numérico (SME0104) na USP, sob a orientação da Prof.ª Cynthia Lage Ferreira. O trabalho foi submetido academicamente em conformidade com as regras da disciplina, em dupla. O código e o relatório contidos neste repositório refletem a minha contribuição individual para o projeto.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published