Tutorial Matlab - Matrisez

Tutorial Matlab - Matrisez

Engenharia Informática e Telecomunicações

Álgebra Linear e Geometria Analítica

  1. Instituto Politécnico de Viseu

  2. Escola Superior De Tecnologia e Gestão de Lamego

Engenharia Informática e Telecomunicações

Álgebra Linear e Geometria Analítica

Matlab

Operaçõescom

Matrizes

Elaborado por:

Paulo Santos Nº 1026

Manuel Rua Nº 1024

António Almeida Nº 1023

Helder Regada Nº 960

  • índice

Alterar a forma de uma matriz 14

Calculos entre matrizes 10

Concatenação de matrizes 8

Criação de Matrizes 3

Índices 3, 5

Inverter a posição dos valores de uma matriz. 15, 16

Matrizes Elementares 7

Produto interno entre dois vectores linha x e y 12

Remoção de colunas e linhas 9

Rodar uma Matriz 15

Sistemas de Equações 17

Supressão de resultados 10

Transformar Matrizes 14

Transposta de uma Matriz. 14

Polinómio característico de uma matriz 13

Transformação de matrizes 14

Alterar o tipo 14

Transposta . 14

Rodar 15

Inverter a posição dos valores 15

Extrair a triangular ....................................................................................................................16

Equações com matrizes 17

  • Criação de Matrizes

Uma matriz é uma estrutura de dados bidimensional que permite guardar números de uma forma ordenada e indexável.

Uma matriz pode ser expressa como um escalar (matriz 1 x 1), como um vector (matriz 1 x n ou n x 1) ou como uma matriz propriamente dita (matriz m x n).

Os valores de uma Matriz são colocados entre parentesis rectos, sendo que, os elementos de uma coluna são separados por um espaço ou por uma vírgula, e as linhas são separadas por ponto e vírgula. É também necessário ter em mente, ao nomear as matrizes, que o Matlab faz distinção entre letras maiúsculas e minúsculas.

Para criar, por exemplo, a seguinte matriz A com duas linhas e três colunas:

[ ]

1

2

3

4

5

6

A =

Escreve-se o comando:

>>A= [1,2,3;4,5,6]ou >>A= [1 2 3;4 5 6]

Os escalares são criados utilizando a mesma notação, tal como os vectores linha ou coluna. Por exemplo :

Escalar

>>a= 10 ou >>a= [10]

Vector

>>v= [1,3,5,]

  • Índices

Dada uma matriz, os seus elementos podem ser obtidos especificando os índices das suas linhas (i) e colunas (j), sendo que A(i, j) representa o elemento aij da matriz A.

Em notação Matlab, para obter o elemento A(1,3), da matriz anterior, pode-se escrever:

>>A(1,3) (De notar que se escreve sempre na forma matriz(linha,coluna))

ans = 3

Para alterar o valor do elemento A(1,3) para 7 :

>>A(1,3)= 7

A =

1 2 7

4 5 6

Os índices das matrizes são listas de números que podem ser armazenadas em vectores declarados previamente. Se pretendermos por exemplo, extrair a segunda linha da matriz podemos fazer :

>>v= A(2,[1 2 3])

v= 4 5 6

ou declarando primeiro um vector para os índices das colunas:

>>k= [1 2 3]

>>v= A(2,k)

v=

4 5 6

Também é possivel obter a diagonal da matriz sob a forma de um vector coluna. Por exemplo para a seguinte matriz a:

>> a=[1:4;5:8;9:12;13:16]

a =

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

>> k= diag (a)

k =

1

6

11

16

  • O Operador “:”

A criação de vectores elemento a elemento é bastante morosa e para matrizes de grandes dimensões quase irrealizável. O Matlab permite gerar sequências de números de forma rápida se fizermos uso do operador “ : ”. Por exemplo, para gerar o vector v =[1,2,3,...,100] podemos fazer :

>>v= 1:100

A notação geral para o operador “ : ” é a seguinte :

número_inicial : incremento : número_final

Por exemplo, usando 2 como incremento :

>> c=1:2:20

c =

1 3 5 7 9 11 13 15 17 19

O operador “ : ” permite a geração de sequências de números inteiros como no exemplo anterior ou mesmo de números reais. Eis alguns exemplos:

>> d=1:pi/20:pi (pi é igual a 3.1416)

d =

Columns 1 through 7

1.0000 1.1571 1.3142 1.4712 1.6283 1.7854 1.9425

Columns 8 through 14

2.0996 2.2566 2.4137 2.5708 2.7279 2.8850 3.0420

>> e=5:-1:-5

e =

5 4 3 2 1 0 -1 -2 -3 -4 -5

O operador “ : ” pode também ser utilizado na geração de vectores, obtendo-se uma notação muito compacta. Se quisermos obter as colunas ímpares da seguinte matriz a:

>> a=[1:4;5:8;9:12]

a =

1 2 3 4

5 6 7 8

9 10 11 12

podemos fazer :

>> B=a(1:3,1:2:3)

B =

1 3

5 7

9 11

No caso anterior são indexadas todas as linhas da matriz. Para simplificar a notação, quando não se conhece exactamente o número de linhas de uma matriz, pode-se utilizar a notação :

>>B=a(:,1:2:3)

B =

1 3

5 7

9 11

Se quiséssemos obter a primeira linha da matriz A podíamos escrever :

>>A (1,:)

ans =

1 2 3 4

  • Matrizes Elementares

As funções seguintes permitem a criação de algumas matrizes elementares:

• zeros

Cria uma matriz preenchida com zeros

• ones

Cria uma matriz preenchida com uns

• eye

Cria a matriz identidade

• rand

Cria uma matriz de números aleatórios com distribuição uniforme

• randn

Cria uma matriz de números aleatórios com entradas normalmente distribuídas (média 0 e desvio padrão 1)

Vejamos alguns exemplos de utilização destas funções:

>>Z= zeros (2,5)

Z =

0 0 0 0 0

0 0 0 0 0

>>O= ones(2,3)

O=

1 1 1

1 1 1

>>T= ones(2,3)*3

T=

3 3 3

3 3 3

>> R=rand(4)

R =

0.9501 0.8913 0.8214 0.9218

0.2311 0.7621 0.4447 0.7382

0.6068 0.4565 0.6154 0.1763

0.4860 0.0185 0.7919 0.4057

>> A= randn(1,3)*i (“i” representa a unidade imaginária)

A=

0 - 1.3362i 0 + 0.7143i 0 + 1.6236i

É ainda possivel combinar as diferentes funções, por exemplo:

>> B = [ones(3) zeros(3,2); zeros(2,3) 4*eye(2)]

B =

1 1 1 0 0

1 1 1 0 0

1 1 1 0 0

0 0 0 4 0

0 0 0 0 4

Cria uma matriz B usando submatrizes elementares: ones, zeros, e a matriz identidade de tamanhos específicos.

  • Concatenação de matrizes

Concatenar matrizes consiste em formar matrizes a partir de outras mais pequenas. A notação é idêntica à utilizada para formar matrizes com números.

Os seguintes exemplos ilustram a concatenação de matrizes.

>>a= [1,2; 3,4]

a= 1 2 3 4

>>A= [a a; a a] (Matriz 4x4, formada a partir da matriz a anterior)

A= 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4

>>b= (1:4)’ (Criação de uma matriz (1x4). O simbolo “ ’ ” indica que se trata de uma matriz com uma coluna, caso contrário o Matlab assume uma linha.)

b=

1

2

3

4

>>B= [b b [a;a]] (Matriz 4x4, formada a partir das matrizes a e b anteriores)

B= 1 1 1 2 2 2 3 4 3 3 1 2 4 4 3 4

  • Remoção de colunas e linhas

É possível remover de uma dada matriz qualquer conjunto de linhas e colunas. Para tal, basta atribuir o valor de uma matriz vazia definida por “[ ]” às linhas e colunas que se pretende remover. No exemplo que se segue, elimina-se a 2ª coluna da matriz A.

>>a= [1 2; 3 4];

>>A= [a a; a a]

A=

1 2 1 2

3 4 3 4

1 2 1 2

3 4 3 4

>>A (:,2)= [ ]

1 1 2

3 3 4

1 1 2

3 3 4

A remoção de um elemento isolado de uma matriz não é possível uma vez que esta deixaria de respeitar as propriedades de uma matriz

>>A (1,2)=[ ] (operação não é permitida pelo Matlab)

??? Indexed empty matrix assignment is not allowed.

  • Supressão de resultados no Matlab

Quando as matrizes são de grande dimensão torna-se bastante incómodo para o utilizador a apresentação do resultado no ecrã do computador de todos os cálculos efectuados. Para evitar a apresentação dos resultados basta colocar no final da linha de comando um ponto e vírgula tal como o seguinte exemplo demonstra:

>> g=[1:500;501:1000];

  • Calculos entre matrizes

É possível resolver com o Matlab diversos problemas da álgebra linear, sendo fácil realizar cálculos elaborados com matrizes, como por exemplo, o produto de duas matrizes, inversão de matrizes, cálculo dos valores próprios, etc.

Dadas as matrizes A e B, por exemplo:

>> A=[1:4;5:8;9:12;-3:0] (Matriz A)

A =

1 2 3 4

5 6 7 8

9 10 11 12

-3 -2 -1 0

>> B=[13:16;-8:-5;17:20;21:24] (Matriz B)

B =

13 14 15 16

-8 -7 -6 -5

17 18 19 20

21 22 23 24

  • Soma de Matrizes:

>>C= A+B (A soma de matrizes só é válida se A e B são do mesmo tamanho.)

C =

14 16 18 20

-3 -1 1 3

26 28 30 32

18 20 22 24

  • Subtracção de Matrizes:

>>D= A-B (A subtracção de matrizes só é válida se A e B são do mesmo tamanho.)

D =

-12 -12 -12 -12

13 13 13 13

-8 -8 -8 -8

-24 -24 -24 -24

  • Multiplicação de Matrizes :

>>E= A*B (A subtracção de matrizes só é válida se o número de colunas de A é igual ao número de linhas de B.)

E =

132 142 152 162

304 330 356 382

476 518 560 602

-40 -46 -52 -58

  • Produto interno entre dois vectores linha x e y

>>x= 1:4 (x = 1 2 3 4)

>>y= 3:6 (y = 3 4 5 6)

>>g = x*y’ (vector x * transposta do vector y)

g=

50

  • Determinante da matriz:

>> det(A)

ans = 0

  • Valores próprios da matriz:

>> eig(A)

ans =

17.0623

0.0000

0.9377

-0.0000

  • Inversa da matriz:

>>inv(A)

ans =

-4.5036 -0.0000 1.5012 3.0024

3.3777 1.1259 -1.8765 -2.6271

6.7554 -2.2518 -0.7506 -3.7530

-5.6295 1.1259 1.1259 3.3777

  • Potência de uma matriz:

>>A^2 ou >>A*A

ans =

26 36 46 56

74 100 126 152

122 164 206 248

-22 -28 -34 -40

  • Polinómio característico de uma matriz:

>>p= poly(A)

p =

1.0000 -18.0000 16.0000 -0.0000 -0.0000

o que indica que o polinómio característico (λI) é:

λ4 -18 λ 3 + 16 λ 2 - 0 λ 1 – 0

  • Transformação de matrizes

  • Alterar o tipo:

Transformar uma matriz A (3 por 4) numa matriz B (2 por 6):

>> A = [1 4 7 10; 2 5 8 11; 3 6 9 12]

A =

1 4 7 10

2 5 8 11

3 6 9 12

>>B = reshape(A, 2, 6)

B =

1 3 5 7 9 11

2 4 6 8 10 12

  • Alterar para Transposta:

Transpor a Matriz A de maneira a que as colunas se tornem linhas e as linhas colunas;

>>B = transpose (A) ou >> B=A’

B =

1 2 3

4 5 6

7 8 9

10 11 12

  • Rodar:

Rodar os valores da matriz 90 graus;

>> B = rot90(A)

B =

10 11 12

7 8 9

4 5 6

1 2 3

  • Inverter as posições:

da esquerda para a direita;

>>B = fliplr(A)

B =

10 7 4 1

11 8 5 2

12 9 6 3

de cima para baixo;

>> B=flipud (A)

B =

3 6 9 12

2 5 8 11

1 4 7 10

  • Extrair a triangular:

Seja a Matriz A;

>> A = [-3:0;1:4;5:8;9:12]

A =

-3 -2 -1 0

1 2 3 4

5 6 7 8

9 10 11 12

Triangular inferior;

>> tril (A)

ans =

-3 0 0 0

1 2 0 0

5 6 7 0

9 10 11 12

Triangular superior;

>> triu (A)

ans =

-3 -2 -1 0

0 2 3 4

0 0 7 8

0 0 0 12

  • Equações Com Matrizes

O Matlab permite resolver equações com matrizes, numericamente de forma muito eficiente. Considere-se a equação com matrizes (Ax = B) em que:

[ ]

[ ]

1 2 1

1

A=

4 1 2

B=

0

6 3 1

2

Para resolver a equação podemos utilizar:

x = A−1B

e o correspondente comando Matlab

>>x= inv (A)*B

x= 0.0588 0.7059

-0.4706

Lamego, janeiro de 2008 Página: 17 de 17

Comentários