Download - Aula05

Transcript

Matrizes em Scilab

Yuri Tavares dos PassosGabriel de Carvalho ArimatéaFernando Melo Nascimento

Matrizes

● Em qualquer linguagem de programação, uma matriz é uma estrutura de armazenamento de dados com indexação bidimensional.

● A primeira dimensão corresponde a linha da matriz e a segunda dimensão a coluna.

● Assim como na Matemática, matrizes podem ser representadas graficamente como nos exemplos a seguir:

Matrizes em Scilab

● Em Scilab, a declaração de uma matriz é feita de modo análogo ao vetor, mas com o uso de uma dimensão extra.

● A dimensão extra é adicionada com ';'.

Exemplo 1

● A = {1 2 3; 4 5 6; 7 8 9}

Exemplo 1

Exemplo 2

● B = {0, 0; 1, 1}

Exemplo 2

Exemplo 3

● C = {0, 0, 1; 1, 2; 2, 3.4, 3}– Válido ou inválido?

Exemplo 3

Matrizes em Scilab

● A utilização de matriz pode ser feita elemento a elemento. Para acessar cada elemento deve-se indexá-lo pela linha e pela coluna:– A(1,1) = 2;

– A(1,2) = 3;

– B(2,1) = 1.1;

– B(2,3) = 7.1;

Exemplo 1

● Escreva um algoritmo que leia uma matriz de 2 linhas por 3 colunas de números reais via teclado. Em seguida, escreva esta matriz na tela.

Exemplo 1

● Solução 1

Exemplo 1

● Solução 1

Exemplo 1

● Solução 2

Exemplo 1

● Solução 2

Exemplo 1

● Solução 3

Exemplo 1

● Solução 3

Exemplo 2

● Escreva um algoritmo que extraia a diagonal principal de uma matriz NxN, quadrada, com N elementos e seus elementos lidos pelo usuário. Salve os valores da diagonal em um vetor e escreva seus valores na tela.

Exemplo 2

Exemplo 3

● Escreva um algoritmo que leia duas matrizes. A matriz A tem tamanho MxN e a matriz B é LxK. Faça um algoritmo que:– Teste se é possível realizar a multiplicação de

A por B. Isto só é possível se N=L.

– Se elas podem ser multiplicadas, crie uma matriz C resultante desta multiplicação, onde:

C ij=∑K=1

N

AiK BKj

Exemplo 3

Exemplo 3 (cont.)

Exemplo 4

● Escreva um algoritmo que leia uma matriz MxN e armazene seus elementos em um vetor. Leia os elementos da matriz linha por linha. Exemplo:

A=[1 2 34 5 67 8 9 ] V=[

123456789

]

Exemplo 4

Exemplo 5

● Escreva um algoritmo que leia um vetor de tamanho T = MN e escreva seus elementos em uma matriz de tamanho MxN. – Ao invés de ler a matriz e escrever o vetor,

deve-se ler o vetor e escrever a matriz

Exemplo 5

Exercício

● Escreva um algoritmo que leia a quantidade de linhas e colunas de uma matriz, leia a posição i e j de um elemento qualquer desta matriz e indique qual a posição k do vetor da questão 3 que este elemento se encontraria. Não crie nenhum vetor ou matriz neste programa.

Matrizes e vetores

● Uma matriz pode ser entendida como um vetor feito com outros vetores.

● O comando for do Scilab pode ser utilizado para manipular os vetores colunas de uma matriz.

Matrizes e vetores

● Exemplo

Matrizes e vetores

● Resultado

Submatrizes

● O Scilab permite que você acesse porções de matriz de modo fácil usando “:”.

● Com :, você define o limite inicial e final da submatriz que será utilizada.

● Sintaxe:– <limite inicial>:<limite final>

Submatrizes

● Exemplo

Submatrizes

● A(1:3,2:3)● A(1:4,2:2)

Submatrizes

● Não utilizar limites inferiores e superiores significa que deseja-se todos os valores.

● Exemplo– A(:,1:3)

– A(1:2,:)

Comando size

● O Scilab oferece o comando size para retornar a quantidade de elementos em cada dimensão

● Exemplo

Hipermatrizes

● Além das matrizes bidimensionais, o Scilab oferece o uso de matrizes n-dimensionais.

● Exemplo:– Suponha T uma matriz tridimensional.

– O acesso a cada elemento de T é feito utilizando 3 indíces.

Hipermatrizes

● Exemplo (continuação)– T(1,3,2) significa o acesso ao elemento na 1ª

linha, 3ª coluna e 2ª profundidade.

Arquivos no Scilab

● O Scilab foi projetado para trabalhar com grandes volumes de dados.

● Os comandos para leitura e escrita de arquivos poupa a digitação de grandes volumes de dados.

● As variáveis criadas no Scilab podem ser salvas em arquivos para serem utilizadas em outras execuções.

● Para escrita de arquivos, usa-se save ou write.● Para leitura de arquivos, usa-se load ou read.

Escrita de arquivos

● Para salvar uma variável qualquer em um arquivo binário, utiliza-se o comando save.

● Sintaxe mais comum:– save(nome_do_arquivo, lista_de_variáveis)

● Exemplo● save("A.dat",A)● save("ABC.dat",A,B,C)

Escrita de arquivos

● Para salvar uma variável qualquer em arquivo texto, usa-se o comando write.

● Um arquivo texto pode ser visualizado em editores de texto como notepad, Word, etc.

● Sintaxe mais comum:– write(nome_do_arquivo, variável)

● Exemplo:– write("A.txt",A)

Leitura de arquivos

● Para ler uma variável qualquer já salva em um arquivo binário, utiliza-se o comando load.

● Sintaxe mais comum:– load(nome_do_arquivo, lista_de_variáveis)

● Exemplo● load("ABC.dat","A","B","C")● load("teste3D.dat","t")

Leitura de arquivos

● Para ler uma variável qualquer salva previamente em arquivo texto, usa-se o comando read.

● Sintaxe mais comum:– read(nome_do_arquivo, lista_de_dimensões)

● O resultado de read deve ser atribuído a alguma variável.

● Exemplo:– A = read("A.txt",50,100);