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