GNU Octave/Aritmética
A aritmética em Octave pode parecer, a primeira vista, complicada, mas tendo em mente que esta é uma linguagem orientada para matrizes, as expressões que parecem complicadas se mostram, na verdade, intuitivas.
Por exemplo, se definirmos
octave> x = [1 2] octave> y = [3 4] octave> z = x + y
é natural esperar que z seja o vetor-linha (ou seja, a matriz 1 x 2) [4 6].
Analogamente, lembrando da orientação a matrizes, é óbvio que o resultado de:
octave> v = [1 ; -1] octave> M = [0 2; -1 -1] octave> v1 = M * v
será o vetor-coluna (matriz 2x1) resultante do produto matricial de M(2x2) por v(2x1), ou seja, v1 = [-2; 0].
Quando um elemento for um escalar (ou seja, uma matriz 1x1), sua multiplicação por um escalar, vetor ou matriz representa o produto escalar:
octave> lambda = 2 octave> v = [1 ; -1] octave> v2 = lambda * v % v2 = [2 ; -2]
A multiplicação de matrizes de tamanho incompativel resulta em erro:
octave> A = [2 3; 4 5] octave> B = [1 2 3; 4 5 6; 7 8 9] octave> A * B % erro
A soma de matrizes de tamanho incompatível também resulta em erro:
octave> x = [1 2] octave> x1 = [10 20 30] octave> x2 = x + x1 % erro
Para fazer a multiplicação elemento-a-elemento de duas matrizes, usar ".*":
octave> x = [1 2] octave> y = [3 4] octave> v3 = x .* y % v3 = [3 8]