Upgrade to Pro — share decks privately, control downloads, hide ads and more …

P1 de Cálculo Numérico, 2ª questão

Paulo Bordoni
November 11, 2018

P1 de Cálculo Numérico, 2ª questão

O texto da questão 2.

Paulo Bordoni

November 11, 2018
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. O Mestre esqueceu de informar na Questão 1 que o

    gráfico da resposta deverá ser um “mapa de cores”, como no slide em frente. Sim. No eixo−, eixo-horizontal, coloquem o segmento = [0, ] e para cada instante de tempo (no eixo−, eixo-vertical) as temperaturas calculadas ( , ) ao longo de uma cópia do segmento [0, ] por .
  2. Essa pasta deverá conter: • O código do programa; •

    Os dados utilizados e a resposta; • Explicações que acharem necessárias. E ele também esqueceu de informar que cada Grupo deverá encaminhar um e-mail (com o nome dos partipantes) com a resposta numa pasta zipada como Anexo.
  3. A 2ª questão envolverá uma aplicação interessante da SVD, a

    Decomposição em Valores Singulares de uma matriz.
  4. O formato jpeg para compressão de fotografias é incrivelmente util.

    Nesta segunda questão utilizaremos a SVD para compactar arquivos de imagens. Fotos e imagens ocupam muito espaço de memória. Reduzir a quantidade utilizada de memória é essencial tanto para armazenamento quanto para transmissão de dados.
  5. Quatro imagens de Lenhard Euler, uma ruim com rank 3,

    uma outra com rank 10 e uma boa com rank 30. A do canto inferior direito é a imagem original com 326x277 pixeis em escala de cinza (portanto 90.302 números), com rank 277. Matrizes tem rank. Imagens também ?
  6. Sim querida, imagens podem ser armazenadas como matrizes de pixeis

    em tons de cinza variando de 0 a 1. Gostei da ideia!
  7. = = = 1 … … 1 ⋯ 0 ⋮

    ⋱ ⋮ 0 ⋯ 0×(−) 0(−)× 0(−)×(−) = = 1 1 … 0×(−) 1 ⋮ ⋮ = = 1 1 1 + 2 2 2 + ⋯ + Se uma matriz de tamanho × tem posto então sua decomposição SVD possuirá valores singulares não- nulos e teremos a identidade: Nesta última linha a soma tem parcelas !
  8. Vamos descrever um procedimento para comprimir uma imagem armazenada como

    matriz de pixeis. Sim Surfista e essa linha informa que quando menor for , relativamente a e , mais simples (menor) será a reconstrução de .
  9. Basta usa a scipy.linalg: U, S, V = spl. svd().

    Assuma que = [ ] é uma matriz × que armazena uma imagem em tons de cinza. Os valores de e dão a posição do pixel na imagem e o valor a escala de cinza, do branco ao preto. Comece calculando a SVD de .
  10. Defina usando os maiores valores singulares de : = 1

    1 1 + 2 2 2 + ⋯ + Então será uma matriz × com posto .
  11. Se os valores singulares de desprezados forem pequenos, será uma

    boa aproximação de : − < com pequeno (à sua escolha, Loirinha). Basta usar spl. norm( − , 2) para calcular o erro na aproximação.
  12. Surfista, a segunda questão consiste em você fazer um “selfie”

    (só o rosto), jogar no computador e efetuar diversas aproximações de sua foto. Depois você manda tudo para o Mestre, como explicado (em vermelho) no início deste conjunto de transparências para a questão 1.
  13. Primeiro jogue a imagem para o programa = imread(“_. ”)

    é um array com 326 × 277 × 3 números. Depois construa a matriz , a foto em escala de cinza, com = (, 3) que calcula a média sobre a terceira coluna de (as 3 cores).
  14. Depois calcule a SVD de com a scipy.linalg , ,

    = svd() é uma matriz ortogonal 326 × 326. ← (41 422,8 309, … , 0.79,0) é uma matriz diagonal (eye) 326 × 277. uma matriz ortogonal 277 × 277. Elas são muito grandes para mostrar aqui.
  15. Por exemplo, a de rank 30, é uma boa aproximação.

    Para reconstruí-la precisamos dos 30 1º valores singulares 1 , 2 , ⋯ , 30 das 30 primeiras colunas de e das 30 primeiras colunas de . Construa a aproximação de rank de : = 1 1 1 + 2 2 2 + ⋯ + = [: , 0: ] × [0: , 0: ] × [: , 0: ]
  16. Fiz a conta: 30 + 30 × 226 + 30

    × 277 = 18.120 números. Apenas 1/5 dos 90.302 da imagem original. E realmente, elas são quase iguais!