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

Apresentando a ScyPy e a LinAlg

Apresentando a ScyPy e a LinAlg

Por efetuar

Paulo Bordoni

May 22, 2015
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Clicando em Tutorial somos conduzidos a uma repetição do seu

    índice. De imediato vamos olhar para Introduction
  2. Na SciPy, temos diversos métodos desenvolvidos para achar raízes de

    equações. Essa é orientação que adotamos para nosso curso, Professora. Trabalhar com “softwares” desenvolvidos por especialistas.
  3. Fiz um programa para usar o método newton( ) do

    pacote scipy.optimize para achar uma raiz da equação − cos = 0. Também vamos usá-lo para calcular 3.
  4. Por definição 3 é o número ∈ ℝ para o

    qual 2 = 3. Portanto temos que resolver a equação 2 − 3 = 0. Então Mestra usei o programa com = 2 − 3, 0 = 3 e, naturalmente, = 2.
  5. A associação entre reta tangente e reta secante se dá

    através do quociente de Newton. E o quociente de Newton fornece o coeficiente angular da reta secante, uma aproximação para o valor do coeficiente angular da reta tangente. Sherlock, detalhe por que o método da secante está junto com o de Newton- Rhapson.
  6. Loirinha e Surfista, procurem examinar também os outros métodos desta

    lista. Por ex. os métodos de Brent e Ridder.
  7. É hora de embarcar no pacote scipy.linalg. Ele possui a

    álgebra linear computacional tão anunciada.
  8. Eis o motivo para usar a linalg da SciPy. Mas

    já tem linalg na NumPy. Por quê repetir?
  9. A estrutura do tutorial Linear Algebra, (scipy.linalg), é a seguinte:

    Álgebra linear Apresentação Rotinas básicas Decomposições Funções matriciais Matrizes especiais
  10. Os tópicos em rotinas básicas são : Rotinas básicas Achando

    a inversa Resolvendo sistemas lineares Achando o determinante Calculando normas Resolvendo problemas lineares de mínimos quadrados e pseudo-inversas Inversa generalizada Vamos começar pelos determinantes.
  11. O texto é um resumo da “Leitura adicional” ao final

    deste con junto de transparências.
  12. Indo ao Reference Guide do pacote Linear Algebra, em Basics,

    vamos encontrar os detalhes para usar a função. Fiquei sabendo que o cálculo de determinantes é inviável, na prática. Então, como o pacote scipy faz isto?
  13. A resposta à sua pergunta está marcada no pé da

    página, Loirinha. Mas não deixe de ler o texto sobre determinantes ao final deste conjunto de transparências
  14. E o que é fatoração LU? É algo tão importante

    e fundamental em Álgebra linear computacional como respirar é para a vida! O Mestre informou que será o assunto da próxima aula.
  15. Neste programa entramos com uma matriz A, via teclado, e

    em seguida chamamos a função det(A).
  16. Voltando às rotinas básicas do Scipy, vejamos o que há

    no tópico “Calculando normas”. Rotinas básicas Achando a inversa Resolvendo sistemas lineares Achando o determinante Calculando normas Resolvendo problemas lineares de mínimos quadrados e pseudo-inversas Inversa generalizada
  17. Por enquanto, vamos examinar apenas as normas vetoriais. Veremos as

    normas matriciais mais adiante. Para elas precisaremos de um pouco mais de teoria. É importantíssimo observar que todas aquelas cujo parâmetro ord é negativo não são normas.
  18. Surfista, apresente alguns contra-exemplos que justifiquem a última afirmação do

    Mestre! Quando ord = inf temos a norma do máximo. Para ord = 1 temos a norma da soma e para ord = 2 temos norma euclidiana. Elas são anotadas ∞ , 1 e 2 respectivamente. As outras são anotadas , ( = ).
  19. Já provamos que 2 = 1 2 + 2 2

    + ⋯ + 2 define uma norma. A verificação que 1 = 1 + 2 + ⋯ + é uma norma é óbvia. Da mesma forma, a comprovar que ∞ = max{ 1 , 2 , ⋯ , } define uma norma também é fácil.
  20. Para prová-la precisamos da desigualdade de Hölder: , ≤ ′

    com ′ = −1 . A dificuldade para provar que = |1 | + |2 | + ⋯ + | | é uma norma está na desigualdade triangular: + ≤ + . Ela é conhecida na literatura como desigualdade de Minkowski.
  21. Observem que a desigualdade de Hölder desempenha um papel análogo

    ao da desigualdade de Cauchy-Schwarz. Não vamos provar nenhuma das duas. Porém, se você estiver interessado, Surfista, já sabe as palavras-chave para buscar as demonstrações.
  22. Mestre, parece que os valores numéricos das normas estão tendendo

    ao valor da ∞ ! É verdade minha filha. Prove que para ∀ ∈ ℝ temos lim →∞ = ∞
  23. 1 y x A bola unitária no espaço euclidiano ℝ

    é o conjunto 2 = ∈ ℝ | 2 ≤ 1 . Ela descreve o conjunto 2 + 2 + 2 ≤ 1, que nossa intuição entende por uma bola (de futebol) no espaço euclidiano ℝ3. No plano seria como um CD (dos Beatles).
  24. 1 1 -1 -1 y x A bola unitária no

    espaço ℝ com a norma da soma é o conjunto 1 = ∈ ℝ | 1 ≤ 1 . No ℝ2 ela corresponde ao conjunto definido pela desigualdade + ≤ 1, mostrado na figura.
  25. 1 1 -1 -1 y x A bola unitária no

    espaço ℝ com a norma do máximo é o conjunto ∞ = ∈ ℝ | ∞ ≤ 1 . No ℝ2 ela corresponde ao conjunto definido pela desigualdade max{ , } ≤ 1, mostrado na figura.
  26. Surfista, não vá jogar bola com 1 ou ∞ .

    Você pode se machucar! É, são bolas que escapam da nossa intuição euclidiana.
  27. Este livro é o clássico dos clássicos sobre álgebra linear

    computacional. Vamos até reproduzir seu Sumário.
  28. São livros de cabeceira para quem for fazer pós-graduação em

    computação científica, matemática aplicada ou análise numérica.
  29. O conteúdo desses dois livros é a definição mais apropriada

    de Álgebra linear computacional. Invista em você. Adquira os dois livros!
  30. O conceito de função é, com certeza, o mais importante

    da matemática. Elas são o objeto do Cálculo diferencial e integral. Em particular, vamos considerar funções de um espaço vetorial U em um outro espaço vetorial V : : → , ∈ ⟼ = () ∈ .
  31. Em outras palavras, funções : → tais que: • +

    ⟼ ( + ) = + , • ⟼ = (). Tais funções recebem o nome especial de transformações lineares. Particularizando ainda mais: funções : → de um espaço vetorial U para outro V que preservam as operações nativas de U e V.
  32. = A ℝ ℝ Matrizes × definem transformações lineares de

    ℝ em ℝ através da multiplicação matriz x vetor. Uma matriz 3 x 4 define uma transformação linear ∶ ℝ4 → ℝ3, através da multiplicação: 1 2 3 = 11 12 13 14 21 22 23 24 31 32 33 34 1 2 3 4
  33. Lembrem-se que: Se A é uma matriz m x n

    então: • + = + , ∀, ∈ ℝ • = , ∀ ∈ ℝ , ∀ ∈ ℝ Que são as condições de linearidade.
  34. Um exemplo simples de ℝ2 em ℝ2 é 1 2

    ⟼ 1 2 = −1 2 2 −3 1 2 que corresponde ao par de igualdades 1 = −1 + 22 2 = 21 − 32
  35. As equações correspondentes são 1 = 1 2 = −2

    . Vemos que ela mantém a 1ª coordenada e troca o sinal da 2ª coordenada. Em outras palavras, realiza uma reflexão no eixo-x. A matriz = 1 0 0 −1 aplicada num vetor X fornece : 1 2 ⟼ 1 2 = 1 0 0 −1 1 2
  36. O programa a seguir mostra a ação de uma matriz

    M sobre um vetor . Ele permite escolher a matriz M e o vetor .
  37. Uma execução do programa. Em azul temos o vetor e

    em vermelho o vetor = X Vemos claramente que M realiza uma reflexão no eixo-x.
  38. O programa da próxima transparência permitirá a visualização da ação

    de uma matriz M qualquer sobre um triângulo ABC escolhido livremente. Mostraremos alguns exemplos com diferentes matrizes M. Surfista, faça outros exemplos exploratórios.
  39. O programa a seguir mostra a ação de uma matriz

    M de ordem 2 sobre um triângulo ABC.
  40. Comecemos conferindo que a matriz = 1 0 0 −1

    do exemplo anterior efetua uma reflexão entorno do eixo-x.
  41. Entretanto a vizualização da ação da matriz = 0.5 0

    0 1.5 sobre o triângulo azul não conduz a conclusões evidentes.
  42. Já usando um triângulo com um lado paralelo ao eixo-x

    e outro paralelo ao eixo- y percebemos que M efetua uma contração no eixo-x e uma dilatação no eixo-y.
  43. A matriz M definida por = cos() −() () cos()

    , quando aplicada num vetor v efetua uma rotação de ângulo no sentido horário em v. Isto é, se = então o ângulo entre v e u, medido de v para u é de radianos.
  44. Fiz um programa que recebe um quadrado arbitrariamente escolhido e

    gira-o no sentido horário de uma quantidade escolhida de graus..
  45. Uma rotação de 45º e outra de 90º. Notem que

    na rotação a norma dos vetores (e portanto dos objetos construídos com eles) permanece inalterada.
  46. A ação da matriz M sobre um feixe de vetores

    de tamanho unitário é clara: Ela dilata a componente vertical dos vetores do feixe por um fator de escala = 2 e mantém a componente horizontal inalterada.
  47. Já esta outra matriz M faz a dilatação = 2.5

    na componente horizontal dos vetores do feixe mantendo a componente vertical inalterada.
  48. Já a ação desta outra matriz M sobre um feixe

    de vetores unitários é mais complexa: Uma rotação seguida de uma dilatação.
  49. Esta 4ª matriz M, além da rotação e dilatação também

    realiza uma inversão do sentido dos vetores.
  50. Agora sim temos uma boa descrição do efeito de deformação

    de uma matriz M sobre um feixe de vetores.
  51. x x I A matriz identidade I é uma matriz

    quadrada de ordem n com 1’s na diagonal e 0’s fora dela. A identidade, como transformação linear não faz nada! ℝ ℝ I x = x
  52. Uma matriz M muito próxima da identidade = 1 0

    0 1 . Se M fosse a identidade I veríamos apenas o triângulo rosa, cobrindo o azul.
  53. x y A z B ℝ ℝ ℝ BA O

    produto BA de uma matriz B por uma matriz A corresponde à aplicação linear composta de A seguida por B:
  54. Lembrem-se que a multiplicação de matrizes não é comutativa. Na

    aula passada exibimos um programa que mostra que, usualmente, ≠ . Por exemplo, para = 1 2 1 2 e = −1 1 1 −1 temos = 1 −1 1 −1 e = 0 0 0 0 .
  55. A inversa de uma matriz quadrada A de ordem n

    é uma matriz quadrada B de ordem n tal que ∙ = ∙ = Existem matrizes que não possuem inversa – são não-inversíveis. Uma matriz não possui mais que uma inversa. Além disso, a inversa da inversa é a própria!
  56. Prova-se que A é inversível quando, e apenas quando, é

    não-singular, i.é, det() ≠ 0 Entretanto, verificar se det() ≠ 0 para saber se A é inversível é uma técnica nunca utilizada em Álgebra linear computacional.
  57. x y A A-1 ℝ ℝ x y A x

    A-1 ℝ ℝ ℝ I Pela própria definição, a inversa A-1 de uma matriz A , quando considerada como aplicação linear, desfaz a ação de A.
  58. Vejam a ação de uma matriz não-inversível M sobre um

    triângulo: Não há como desfazer a ação da M sobre o trtiângulo!
  59. Voltando às rotinas básicas do foquemos nossa atenção no tópico

    “Achando a inversa”. Rotinas básicas Achando a inversa Resolvendo sistemas lineares Achando o determinante Calculando normas Resolvendo problemas lineares de mínimos quadrados e pseudo-inversas Inversa generalizada
  60. Pedi ao Mestre para fazer um programa parecido àquele que

    mostra o efeito visual da ação de uma matriz num triângulo. Mas para a matriz inversa! Ele fará Loirinha, você é a queridinha dele!
  61. Verificando as ações de uma matriz e sua inversa, como

    transformações lineares. O deslocamento é um artifício para enxergarmos o efeito da inversa (em verde).
  62. Cramer apresentou sua fórmula para resolver sistemas lineares em 1750.

    Antes disso, Cardano, no final do século XVI, trabalhou com determinantes 2x2. Leibniz usou determinantes em 1693 para resolver sistemas lineares.
  63. Um determinante de 2ª ordem, é denotado e definido por:

    Notem que o cálculo exige 2 multiplicações e 1 subtração. No computador serão 3 flops.
  64. ≠ A regra de Cramer para resolver um sistema 2x2

    como este é (prove, Surfista): O cálculo exige 3x2 multiplicações, 3 adições e 2 divisões. Ao todo 11 flops.
  65. = 2 3 1 −1 2 1 1 3 =

    −5 5 = −1 = 3 1 −1 3 2 1 1 3 = 10 5 = 2 Aplicando a regra de Cramer para resolver o sistema 2x2 + = + = − obtemos:
  66. Portanto para resolver um sistema 3x3 pela regra de Cramer

    são necessárias: (3/2)4! multiplicações, 4!-4 adições e 3 divisões. Notem o fatorial no número de flops. Foram necessárias (3/2)3! multiplicações e 3!-1 adições/subtrações para cada determinante 3x3.
  67. Este é um sistema linear constituído por n equações lineares

    à n incógnitas. Sendo breve: um sistema n x n
  68. Ax = b Aliás, Lewis Carrol conta num livro, que

    a notação para matrizes que usamos hoje foi proposta por Leibniz. Na forma matricial esse sistema se reescreve:
  69. O determinante det A de uma matriz A de ordem

    n é definido recursivamente, como na próxima transparência.
  70. Para n > 1, o desenvolvimento pela − é linha

    do det é dado por det = 1 1 + 2 2 + ⋯ + onde = (−1)+ e é o determinante de ordem n-1 obtido a partir da matriz A excluindo-se sua − é linha e − é coluna. Há um desenvolvimento semelhante a partir da − é coluna. Para n = 1, det A = a 11 .
  71. det(ℴ 4 ) α det(ℴ 3 ) β det(ℴ 3

    ) γ det(ℴ 3 ) δ det(ℴ 3 ) + − + − + − α det(ℴ 2 ) β det(ℴ 2 ) γ det(ℴ 2 ) det(ℴ 3 ) + − + − α det(ℴ 1 ) β det(ℴ 1 ) det(ℴ 2 ) + − 2 mult. 1 adiç. 3 mult. 2 adiç. 4 mult. 3 adiç. O cálculo de um determinante de ordem 4 envolve: 4 × 3 × 2 × 1 = 4! multiplicações 3 × 2 × 1 = 3! adições/subtrações
  72. A regra de Cramer para resolver um sistema linear n

    x n como este é: Se = det ≠ 0 a solução é dada por 1 = 1 , 2 = 2 , ⋯ , = onde é o determinante da matriz A com a coluna k subtituída pelo termo independente b.
  73. Portanto, para resolver um sistema linear n x n precisaremos

    efetuar o cálculo de n+1 determinantes de ordem n e n divisões. Assim, o total de operações envolvidas é: • + 1 ! multiplicações • da ordem de n! adições • n divisões
  74. Bobagem! Para o Titan – Cray XK7 é mole! O

    tempo gasto, por qualquer computador, para resolver sistemas 30 x 30 é inimaginável !
  75. A tabela mostra o tempo gasto pelo Cray XK7, para

    resolver um sistema n x n: n tempo 20 48.41 min. 25 7.37 séculos 30 1.076 idade univ. Surfista querido, para um sistema 30x30 ele demora um pouco mais que a idade do universo!
  76. Jamais esqueçam de contar o número de operações envolvidas num

    algoritmo! Sherlock, qual sua mensagem para os Surfistas e a Loirinhas?