módulo 7 aula expositiva 8 3.2 matrizes 3.2.1 atribuindo valores a uma matriz 3.2.2 vetores linha e...
TRANSCRIPT
![Page 1: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/1.jpg)
Módulo 7Aula Expositiva 8
3.2 Matrizes3.2.1 Atribuindo valores a uma Matriz3.2.2 Vetores Linha e Coluna3.2.3 Referenciando Partes de uma Matriz3.2.4 Aritmética Matricial3.2.5 Construindo Matrizes3.2.6 Matrizes e Gráficos3.2.7 Matrizes de Strings e Arquivos3.2.8 Matrizes Numéricas e Arquivos3.2.9 Matrizes e Expressões Lógicas
DCC 001Programação de Computadores
2° Semestre de 2011Prof. Osvaldo Carvalho
![Page 2: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/2.jpg)
Matrizes no Scilab
Matrizes são valores compostos por outros valores (todos de um mesmo tipo)
Manipulação de matrizes em Scilab (MatLab) mais flexível que em linguagens como C, Fortran, Java
DCC001 2011-2 2
![Page 3: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/3.jpg)
Criando uma Matriz
Exemplo de valor de matriz 2 x 3, com linhas separadas por “;”
-->A = [1 2 3; 4 5 6] A = 1. 2. 3. 4. 5. 6.
DCC001 2011-2 3
![Page 4: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/4.jpg)
Variável em Scilab é Matriz
DCC001 2011-2 4
-->x = 7 x = 7.-->size(x) ans = 1. 1.-->
x é uma matriz de uma linha e uma
coluna!
Toda variável em Scilab é uma matriz
Função size retorna número de linhas e de colunas do argumento
![Page 5: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/5.jpg)
Indexação
-->e = A(2,3) e = 6.
DCC001 2011-2 5
-->A = [1 2 3; 4 5 6] A = 1. 2. 3. 4. 5. 6.
![Page 6: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/6.jpg)
Modificação de elemento
DCC001 2011-2 6
-->A(1,2) = 33
A = 1. 33. 3. 4. 5. 6.
![Page 7: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/7.jpg)
Vetores Vetores: matrizes de uma única linha
(ou coluna)-->v = [10 20 30] v = 10. 20. 30.-->u = [10; 20; 30] u = 10. 20. 30.
Lembrando que o “;” separa linhas
DCC001 2011-2 7
![Page 8: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/8.jpg)
Atribuindo único valor a parte de matriz
x = 23. 30. 29. 50. 91. 28. 68. 23. 93. 56. 43. 4. 12. 15. 21. 21. 48. 26. 48. 77. 69. 88. 31. 33. 63. 26. 21. 84. 65. 36. 59. 40. 41. 11. 40.-->x(2:4,3:5) = -1 x =
23. 30. 29. 50. 91. 28. 68. 23. 93. - 1. - 1. - 1. 12. 15. 21. 21. - 1. - 1. - 1. 77. 69. 88. 31. - 1. - 1. - 1. 21. 84. 65. 36. 59. 40. 41. 11. 40.
DCC001 2011-2 8
![Page 9: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/9.jpg)
Atribuindo matriz a parte de matriz
x = 40. 58. 38. 73. 53. 4. 58. 87. 68. 92. 26. 11. 67. 48. 11. 89. 94. 49. 22. 20. 22. 19. 50. 34. 26. 62. 39. 84. 56. 34. 37. 52. 76. 83. 12.-->x(3:4,4:5) = [-1 -2;-3 -4] x = 40. 58. 38. 73. 53. 4. 58. 87. 68. 92. 26. 11. 67. 48. 11. 89. 94. - 1. - 2. 20. 22. 19. 50. 34. - 3. - 4. 39. 84. 56. 34. 37. 52. 76. 83. 12.
DCC001 2011-2 9
![Page 10: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/10.jpg)
x =
21. 62. 56. 23. 30. 29. 50. 75. 84. 66. 23. 93. 56. 43. 0. 68. 72. 21. 21. 48. 26. 33. 87. 19. 88. 31. 33. 63. 66. 6. 54. 65. 36. 59. 40.
-->a = x(2,:) a =
75. 84. 66. 23. 93. 56. 43.
Acesso a linha de matriz
x =
21. 62. 56. 23. 30. 29. 50. 75. 84. 66. 23. 93. 56. 43. 0. 68. 72. 21. 21. 48. 26. 33. 87. 19. 88. 31. 33. 63. 66. 6. 54. 65. 36. 59. 40.
-->a = x(2,:) a =
75. 84. 66. 23. 93. 56. 43.
DCC001 2011-2 10
“:” designa todos os elementos de uma dimensão
![Page 11: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/11.jpg)
Acesso a linhas de parte de matriz
x = 91. 28. 68. 40. 58. 38. 73. 4. 12. 15. 87. 68. 92. 26. 48. 77. 69. 11. 89. 94. 49. 26. 21. 84. 19. 50. 34. 26. 41. 11. 40. 56. 34. 37. 52.-->b = x(:,3:5) b = 68. 40. 58. 15. 87. 68. 69. 11. 89. 84. 19. 50. 40. 56. 34.
DCC001 2011-2 11
![Page 12: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/12.jpg)
Aritmética Matricial
Como todas as variáveis Scilab são matrizes, operações aritméticas usuais (+,-,*,/,^) são entendidas como operações matriciais
Ou seja: a*b representa o produto matricial da matriz a pela matriz b
Operações escalares usam os mesmos símbolos, precedidos por “.”. Exemplos: .*, .^ etc.
DCC001 2011-2 12
![Page 13: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/13.jpg)
Adição e Subtração Requerem matrizes de mesmas dimensões
-->x = [1 2 3; 4 5 6];-->y = [10 20 30; 40 50 60];-->x + y ans = 11. 22. 33. 44. 55. 66.-->x - y ans = - 9. - 18. - 27. - 36. - 45. - 54.
DCC001 2011-2 13
![Page 14: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/14.jpg)
Produto Matricial-->x = [1 2 3; 4 5 6] x = 1. 2. 3. 4. 5. 6.-->y = [10 20; 30 40; 50 60] y = 10. 20. 30. 40. 50. 60.-->x * y ans = 220. 280. 490. 640.
220 = 1x10 + 2x30 + 3x50
DCC001 2011-2 14
![Page 15: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/15.jpg)
-->x = [1 2; 3 4];-->y = [10 20; 30 40];-->x * y ans = 70. 100. 150. 220.-->x .* y ans = 10. 40. 90. 160.
Produto Elemento a Elemento
Produto Matricial
Produto Elemento a Elemento
DCC001 2011-2 15
![Page 16: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/16.jpg)
Multiplicação de Matriz por Escalar
-->x = [1 2 3; 4 5 6];
-->y = 2*x y =
2. 4. 6. 8. 10. 12.
DCC001 2011-2 16
![Page 17: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/17.jpg)
Exponenciação
-->x = [1 2; 3 4];-->x^2 ans = 7. 10. 15. 22.-->x .^ 2 ans = 1. 4. 9. 16.
Produto Matricial x * x
Exponenciação Elemento a Elemento
DCC001 2011-2 17
![Page 18: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/18.jpg)
Matriz Transposta
A = 1. 2. 3. 4. 5. 6. 7. 33. 9.-->B = A' B = 1. 4. 7. 2. 5. 33. 3. 6. 9.
A' é a transposta da matriz A
DCC001 2011-2 18
![Page 19: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/19.jpg)
Matriz Inversa – 1
A = 4. 7. 6. 2. 2. 1. 1. 1. 6.-->IA = inv(A) IA = - 0.3333333 1.0909091 0.1515152 0.3333333 - 0.5454545 - 0.2424242 0. - 0.0909091 0.1818182
DCC001 2011-2 19
![Page 20: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/20.jpg)
Matriz Inversa – 2
-->A * IA ans = 1. 0. - 4.441D-16 1.110D-16 1. - 1.110D-16 5.551D-17 0. 1.-->IA * A ans = 1. 8.327D-17 0. 0. 1. 0. 0. 0. 1.
Erro de Aproximação
DCC001 2011-2 20
![Page 21: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/21.jpg)
Vamos resolver Onde, por exemplo,
Usando
Sistemas de Equações Lineares
DCC001 2011-2 21
𝑎 = −2 −1 32 1 1−4 1 3൩ 𝑏= 401൩ 𝑎−1𝑎𝑥= 𝑥= 𝑎−1𝑏
![Page 22: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/22.jpg)
Solução com Scilab
DCC001 2011-2 22
-->a = [-2 -2 3; 2 1 1;-4 1 3];-->b = [-4 0 1]';
-->x = inv(a)*b x = - 0.5 2. - 1.
![Page 23: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/23.jpg)
Verificando a Solução
DCC001 2011-2 23
-->residuo = a*x - b residuo = 0. - 2.220D-16 0.
![Page 24: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/24.jpg)
Construção de Vetores “Regulares”
Vetores com valores regularmente espaçados podem ser construídos de forma similar à utilizada no comando for-->x = 10:13
x = 10. 11. 12. 13.
-->x = 12:-0.5:10 x = 12. 11.5 11. 10.5 10.
DCC001 2011-2 24
![Page 25: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/25.jpg)
Revisitando o comando for
DCC001 2011-2 25
for i = [9 3 14] printf("%d, ",i)end
O comando
imprime
9, 3, 14,
Vetor com valores atribuídos um a um à variável de controle
![Page 26: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/26.jpg)
A Função linspace
-->x = linspace(0,10,3) x = 0. 5. 10. -->x = linspace(0,10,6) x = 0. 2. 4. 6. 8. 10.
Limites
Nro. de Pontos
Pode ser conveniente gerar um vetor regular especificando seus limites e o número de pontos desejados
DCC001 2011-2 26
![Page 27: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/27.jpg)
Zeros e Uns
-->x = zeros(2,3) x = 0. 0. 0. 0. 0. 0.-->y = ones(2,3) y = 1. 1. 1. 1. 1. 1.
DCC001 2011-2 27
![Page 28: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/28.jpg)
Matriz Identidade
-->I = eye(4,4) I =
1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1.
DCC001 2011-2 28
![Page 29: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/29.jpg)
Matrizes Randômicas
-->m = rand(2,3) m = 0.2113249 0.0002211 0.6653811 0.7560439 0.3303271 0.6283918-->n = rand(2,3) n = 0.8497452 0.8782165 0.5608486 0.6857310 0.0683740 0.6623569
Gera números aleatórios entre
0 e 1Novos números
a cada chamada
DCC001 2011-2 29
![Page 30: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/30.jpg)
Gerando Matrizes “Bonitinhas”
DCC001 2011-2 30
-->m = round(rand(2,3)*100) m = 21. 0. 66. 75. 33. 62.
Arredonda para o inteiro mais próximo
Fator de Escala
![Page 31: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/31.jpg)
Construindo Matrizes a partir de Matrizes
-->x = [1 2; 3 4];-->y = [10 20; 30 40];-->z = [x y] z = 1. 2. 10. 20. 3. 4. 30. 40.-->z = [x ; y] z = 1. 2. 3. 4. 10. 20. 30. 40.
DCC001 2011-2 31
![Page 32: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/32.jpg)
Funções Scilab são Matriciais!
-->sqrt([4 9 16 25]) ans = 2. 3. 4. 5.
Se a função sqrt, por exemplo, for chamada com um argumento matricial, seu resultado também é uma matriz
DCC001 2011-2 32
![Page 33: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/33.jpg)
Vetores e Gráficos Vetores são utilíssimos para a
construção de gráficos O comando mais simples é plot2d(x,y), onde x e y são vetores com as mesmas dimensões
O Scilab constrói um gráfico unindo por retas os pontos com coordenadas
(x(1), y(1)), (x(2), y(2)), ...
DCC001 2011-2 33
![Page 34: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/34.jpg)
Exemplo de gráfico-->x = [1 4 7 11]; y = [12 6 15 7];
-->plot2d(x,y)
1 2 3 4 5 6 7 8 9 10 116
7
8
9
10
11
12
13
14
15
1,12
4,6
7,15
11,7
DCC001 2011-2 34
![Page 35: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/35.jpg)
Outro exemplo de gráfico
DCC001 2011-2
2,3
-->x = [2 5 3 4]; y = [ 3 1 4 7];
-->plot2d(x,y)
5,1
3,4
4,7
35
![Page 36: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/36.jpg)
Gráfico Seno(x) – Versão 1
-->x = 0:0.8:3*%pi;-->y = sin(x);-->plot2d(x,y)
0 1 2 3 4 5 6 7 8 9-1.0
-0.8
-0.6
-0.4
-0.2
0.0
0.2
0.4
0.6
0.8
1.0
O espaçamento de 0.8 está
grande!
DCC001 2011-2 36
![Page 37: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/37.jpg)
Gráfico Seno(x) – Versão 2
-->x = 0:0.1:3*%pi;-->y = sin(x);-->plot2d(x,y
0 1 2 3 4 5 6 7 8 9 10-1.0
-0.8
-0.6
-0.4
-0.2
0.0
0.2
0.4
0.6
0.8
1.0
DCC001 2011-2 37
O espaçamento de 0.1 está bem
melhor!
![Page 38: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/38.jpg)
Várias curvas em um gráfico
A função plot2d pode ser usada para traçar várias curvas em um único gráfico
plot2d(x,M), onde x é um vetor coluna M é uma matriz com o mesmo número de
linhas de x
faz um gráfico de x versus cada coluna de M
DCC001 2011-2 38
![Page 39: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/39.jpg)
Gráfico com várias curvas-->x = linspace(0, 3*%pi, 101)';-->plot2d(x,[sin(x) sin(2*x) sin(3*x)])
0 1 2 3 4 5 6 7 8 9 10-1.0
-0.8
-0.6
-0.4
-0.2
0.0
0.2
0.4
0.6
0.8
1.0
x é um vetor coluna (e sin(x),
sin(2*x) e sin(3*x)
também são)
DCC001 2011-2 39
![Page 40: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/40.jpg)
Matrizes de Strings
-->a = ["s1" "s2"] a =!s1 s2 !
-->b = ["s1" ; "s2"] b =!s1 !! !!s2 !
DCC001 2011-2 40
![Page 41: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/41.jpg)
Leitura de Arquivos como Matrizes de Strings - 1
fpath = uigetfile()da = mopen(fpath,'r')linhas = mgetl(da);mclose(da);
O comando s = mgetl(da) , onde da é o descritor de um arquivo já aberto, lê todas as
linhas do arquivo da e coloca cada uma delas como um elemento do vetor coluna de strings
s Uso típico:
DCC001 2011-2 41
![Page 42: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/42.jpg)
Leitura de Arquivos como Matrizes de Strings – 2
-->linhas linhas =!E agora, José? !!A festa acabou, !!a luz apagou, !!o povo sumiu, !!a noite esfriou, !!e agora, José? !!e agora, você? !!você que é sem nome, !!que zomba dos outros, !!você que faz versos, !!que ama, protesta? !!e agora, José? !
Este programa usado com o arquivo José produz:
DCC001 2011-2 42
![Page 43: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/43.jpg)
Matrizes Numéricas e Arquivos no Scilab
Os comandos já vistos de leitura e gravação de arquivos podem ser usados para a leitura de matrizes, mas o Scilab oferece mecanismos mais simples através dos comandos fscanfMat e fprintfMat
Estes comandos lêm ou gravam arquivos que contêm somente números em formato tabular, à exceção das primeiras linhas que podem conter textos.
A abertura e o fechamento dos arquivos são feitas internamente pelas funções fscanfMat e fprintfMatDCC001 2011-2 43
![Page 44: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/44.jpg)
O Comando fprintfMat - 1
fprintfMat(arq,r,'%5.2f', Cabecalho) Grava a matriz r no arquivo arq Cabecalho é um vetor de strings que são
gravados nas primeiras linhas, e normalmente contém uma explicação sobre os campos presentes no arquivo.
DCC001 2011-2 44
![Page 45: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/45.jpg)
O programa
produz o arquivo
O Comando fprintfMat – 2
a = [1 2 3; 4 5 6; 7 8 9];arq = uigetfile();Cabecalho = [" Meus Dados "; "Col1 Col2 Col3"] fprintfMat(arq,a,"%5.2f",Cabecalho);
DCC001 2011-2 45
![Page 46: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/46.jpg)
O Comando fscanfMat
r = fscanfMat(arq);Lê uma matriz do arquivo cujo
nome completo é um string armazenado em arq
Linhas com texto no início do arquivo são ignoradas
DCC001 2011-2 46
![Page 47: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/47.jpg)
O programa
Escolhendo o arquivo anterior, produz a matriz
O Comando fscanfMat
arquivo = uigetfile();m = fscanfMat(arquivo)
m = 1. 2. 3. 4. 5. 6. 7. 8. 9.
DCC001 2011-2 47
![Page 48: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/48.jpg)
Clima em Belo Horizonte:O Arquivo TempoBHZ.txt
Aberto com o “Bloco de Notas”
DCC001 2011-2 48
![Page 49: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/49.jpg)
Clima em Belo Horizonte
Faça um programa que: Leia este arquivo para uma matriz ClimaBH,
usando a função fscanfMat, que ignora linhas de cabeçalho em um arquivo.
Da matriz ClimaBH, extraia os vetores MaxMed, MinMed, MaxRec, MinRec e Precip, com significados óbvios.
Gere um gráfico que tenha simultaneamente os valores de MaxMed, MinMed, MaxRec e MinRec.
DCC001 2011-2 49
![Page 50: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/50.jpg)
Clima em Belo Horizonte
arqClima = uigetfile(title="Arquivo com dados do clima em BH: ");ClimaBH = fscanfMat(arqClima);
MaxMed = ClimaBH(:,2); // MaxMed = 2a colunaMinMed = ClimaBH(:,3); // MinMed = 3a colunaMaxRec = ClimaBH(:,4); // MaxRec = 4a colunaMinRec = ClimaBH(:,5); // MinRec = 5a colunaPrecip = ClimaBH(:,6); // Precip = 6a coluna
plot2d([1:12],[MaxMed MinMed MaxRec MinRec],...leg="MaxMed@MinMed@MaxRec@MinRec")xtitle("Temperaturas Mensais em BH","Mês","Graus C");
DCC001 2011-2 50
![Page 51: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/51.jpg)
Clima em Belo HorizonteGráfico
MaxMedMinMedMaxRec
MinRec
0 2 4 6 8 10 120
5
10
15
20
25
30
35
40
Temperaturas Mensais em BH
Mês
Gra
us C
DCC001 2011-2 51
![Page 52: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/52.jpg)
Gráficos de Dados Experimentais
O arquivo AcessosNotas.txt tem este formato
Construir um gráfico que mostre estes dados
DCC001 2011-2 52
![Page 53: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/53.jpg)
Programa AcessosNotas.sce
DCC001 2011-2 53
// Este programa lê o arquivo AcessosNotas.txt,// e produz um gráfico de dispersão dos dados
arq = uigetfile("*.txt",pwd(), ..."Arquivo com Acessos e Notas");AcessosNotas = fscanfMat(arq);Acessos = AcessosNotas(:,1);Notas = AcessosNotas(:,2);plot2d(Acessos,Notas,style=-1)xgrid()xtitle("Acessos versus Notas", ..."Número de Acessos","Aproveitamento")
![Page 54: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/54.jpg)
Resultado do programa AcessosNotas.sce
DCC001 2011-2 54
![Page 55: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/55.jpg)
Matrizes e Expressões Lógicas
O resultado de uma expressão relacional envolvendo matrizes é uma matriz de booleanos
55DCC001 2011-2
-->a = [3 7;8 2]
a =
3. 7.
8. 2.
-->a > 5
ans =
F T
T F
-->a = [3 7; 8 2];
-->b = [5 6; 7 8];
-->a > b
ans =
F T
T F
![Page 56: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/56.jpg)
Matrizes, Expressões Lógicas e o Comando if
-->a = [3 9; 12 1]-->x = 0; y = 0;-->if a > 5 then; x = 10000; end;-->if a > 0 then; y = 10000; end;-->[x y] ans = 0. 10000.
56DCC001 2011-2
![Page 57: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/57.jpg)
Usando Matrizes Booleanas para designar elementos de uma Matriz
-->a = [3 9; 12 1];-->a(a>5) = -1 a = 3. - 1. - 1. 1.
Sejam X uma matriz de números reais, e mb uma matriz de booleanos com as mesmas dimensões de X
X(mb) designa os elementos de X com correspondentes em mb iguais a %T
57DCC001 2011-2
![Page 58: Módulo 7 Aula Expositiva 8 3.2 Matrizes 3.2.1 Atribuindo valores a uma Matriz 3.2.2 Vetores Linha e Coluna 3.2.3 Referenciando Partes de uma Matriz 3.2.4](https://reader035.vdocuments.net/reader035/viewer/2022062512/552fc171497959413d8ee3d1/html5/thumbnails/58.jpg)
Notas
Matrizes são absolutamente essenciais para programas que tratam com problemas algébricos ou com tabelas
A manipulação de matrizes é muito flexível no Scilab
Matrizes são também essenciais para o desenho de gráficos no Scilab
DCC001 2011-2 58