Matrices
Una lista és un contenidor de dades.
Una matriu es diferencia d’una llista per la quantitat de dimension.
Ejemplo de lista
lista =[1,2,3,4,5]
Ejemplo de matriz
matriz = [1,2,3,4,5,[2,3,4,[3,4,5,]]]
En aquest cas la matriu tendría 3 dimensions.
La segona característica de la matriu és que les llistes que conté han de ser del mateix tamany.
matriu = [[1,2,3],[1,2,3]]
Les matrius es distingueixen perquè tenen una sèrie d’aplicacions matemàtiques àmplies.
L’última característica és que els seus elements han de ser nombres.
Característiques de les matrius
- Tenen dimensions
- Les llistes han de contenir la mateixa quantitat d’elements
- Tots els elements ha de ser nombres
- Es declara posant la paraula
Matrix
després del signe=
- Per a que reconega la classe
Matrix
cal importarla en el fitxer
Declaració:
matriu = Matrix[[1,2,3],[1,2,3]]
Importació de la classe Matrix
require 'matrix'
matriz = Matrix[[1,2,3],[1,2,3]]
puts matriz
Output
Matrix[[1, 2, 3], [1, 2, 3]]
1. Iterar
require 'matrix'
matriz = Matrix[[1,2,3],[1,2,3]]
matriz.each do |i|
puts i
end
Output
1
2
3
1
2
3
El comandament each
itera d’esquerra a dreta i de dalt cap avall.
En el cas de les matrius each
té modificadors, com per exemple podriem imprimir la diagonal de la matriu.
2. Imprimir diagonal
# [
# 1 8 3
# 5 2 2
# 5 2 2
# ]
require 'matrix'
matriz = Matrix[[1,8,3],[5,2,2],[5,2,2]]
matriz.each(:diagonal) do |i|
puts i
end
Output
1
2
2
3. Imprimir els elements que de la fila de baix de la diagonal
# [
# 1 8 3
# 5 2 2
# 5 2 2
# ]
require 'matrix'
matriz = Matrix[[1,8,3],[5,2,2],[5,2,2]]
matriz.each(:strict_lower) do |i|
puts i
end
Output
5
5
2
4. Imprimir els elements que de la fila de damunt de la diagonal
# [
# 1 8 3
# 5 2 2
# 5 2 2
# ]
require 'matrix'
matriz = Matrix[[1,8,3],[5,2,2],[5,2,2]]
matriz.each(:strict_upper) do |i|
puts i
end
Output
8
3
2
``
### 5. Pregunta si és una matriu diagonal
Es defineix com a matriu diagonal, en àlgebra linial, aquella que els seus elements són `0` excepte la diagonal.
```ruby
1 0 0
0 5 0
0 0 1
Li preguntem a Ruby si aquesta és una matriu diagonal
# [
# 1 0 0
# 0 5 0
# 0 0 1
# ]
require 'matrix'
matriz = Matrix[[1,0,0],[0,5,0],[0,0,1]]
puts matriz.diagonal?
Output
true
Font Código Facilito