segunda-feira, 2 de fevereiro de 2009

Tutorial Scilab - 2 [Vetores e Matrizes - 1]

[English version here.]

Como faz tempo que fiz o primeiro post do tutorial do Scilab, acho que está na hora de continuar o serviço.

Como já foi dito, o Scilab é muito semelhante ao Matlab (que eu não gosto, nem uso e muito menos recomendo). E Matlab é uma sigla para "Laboratório de Matrizes", ou seja, é um software voltado para a manipulação matricial de dados.

Se nós temos a equação y = A x, em que:

x = [1 2 3 4]' (x é um vetor coluna)

e

A = [1 2 3 4;
1 2 3 4;
1 2 3 4;
1 2 3 4].

Em que A é uma matriz quadrada.

Obtem-se que:

y = [x[1]A[1,1]+x[2]A[2,1]+x[3]A[3,1]+x[4]A[4,1] x[1]A[1,2]+x[2]A[2,2]+x[3]A[3,2]+x[4]A[4,2] x[1]A[1,3]+x[2]A[2,3]+x[3]A[3,3]+x[4]A[4,3] x[1]A[1,4]+x[2]A[2,4]+x[3]A[3,4]+x[4]A[4,4]]' = [1²+2²+3²+4² 1²+2²+3²+4² 1²+2²+3²+4² 1²+2²+3²+4²]' = [30 30 30 30]'.

Para fazer operações assim em linguagens de programação convencionais (C/C++, Java, Python, Pascal, Perl, etc...) seria necessário declarar as variáveis como vetores ou matrizes (com ponteiros, a depender da situação) e fazer laços de repetição.

Mas, como o Scilab é um software criado para manipular matrizes, deve ser fácil resolver este tipo de problema.

Realmente é fácil, basta fazer o seguinte:

-->x = [1 2 3 4]'; // a apostrofe { ' } indica a transposição, então x é um vetor coluna, pois [1 2 3 4] é um vetor linha e x é [1 2 3 4] transposto.

-->A = [1 2 3 4;
-->1 2 3 4;
-->1 2 3 4;
-->1 2 3 4];

-->y = A*x
y =

30.
30.
30.
30.

Observem a coerência com o que foi explicado, pois obtemos o vetor coluna y = [30 30 30 30]'.

Para os que estudam álgebra linear, esperem que o Scilab vai resolver muitos problemas para vocês.

Nenhum comentário: