Beruflich Dokumente
Kultur Dokumente
Introdução ao MATLAB
e ao pacote GAAL
1. O que é o MATLAB ?
2. Matrizes
3. Sistemas lineares
4. Inversão de matrizes
5. Determinantes
1. O que é o MATLAB
MATLAB (acrônimo de MATrix LABoratory) é um software interativo de alta performance voltado para
o cálculo numérico. O MATLAB integra análise numérica, cálculo com matrizes, processamento de sinais e
construção de gráficos em ambiente fácil de usar, onde problemas e soluções são expressos somente como
eles são escritos matematicamente, ao contrário da programação tradicional.
O MATLAB é um sistema interativo cujo elemento básico de informação é uma matriz que não requer
dimensionamento. Esse sistema permite a resolução de muitos problemas numéricos em apenas uma
fração do tempo que se gastaria para escrever um programa semelhante em linguagem Fortran, Basic ou C.
Além disso, as soluções dos problemas são expressas no MATLAB quase exatamente como elas são
escritas matematicamente.
Alguns pacotes para cálculos específicos podem ser incorporados a rotinas pré-definidas. Um pacote
chamado GAAL com funções que são direcionadas para o estudo de Geometria Analítica e Álgebra Linear
pode ser obtido através da Internet no endereço http://www.mat.ufmg.br/~regi. Neste endereço, você
encontrará as instruções para instalar esse pacote. OBS: você deve ter o MATLAB instalado anteriormente
para instalar o pacote GAAL!
2. Matrizes
As matrizes constituem a estrutura básica do MATLAB, por isso ele permite várias maneiras de
manipulá-las. Para construir uma matriz, os elementos de uma mesma linha devem estar separados por
branco ou vírgulas e as linhas devem estar separadas por ponto e vírgula. Para criarmos uma matriz 3x2
fazemos:
O ponto e vírgula foram colocados para que o MATLAB não exibisse o resultado do comando
executado, por exemplo:
A=
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
1 2
3 4
Operação Descrição
A+B Efetua a soma de duas matrizes
A-B Efetua a subtração de duas matrizes
A.’ Encontra a transposta da matriz A
A(:,j) Mostra a coluna j de A
Num*A Produto escalar de num por A
A^k Matriz A elevada à potência k
Exemplo 1: Consideremos as matrizes A=[1 2;3 4] e B=[2 3;1 5]. Vamos realizar as operações listadas na
tabela acima sobre estas matrizes.
ans =
3 5
4 9
OBS: Quando não se atribui o resultado de um comando a uma variável, o MATLAB atribui o resultado a
uma variável ‘ans’ (ou seja, answer)
ans =
-1 -1
2 -1
ans =
1 3
2 4
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
ans =
3
5
ans =
10 15
5 25
ans =
7 21
7 28
Para modificar o elemento de uma matriz, basta atribuirmos a ele um novo valor:
EDU>> A(1,2)=5;
EDU>> A
A=
1 5
3 4
Se um for atribuído um valor a um elemento não existente, ou seja, cujos índices (um ou ambos)
excedem o tamanho da matriz, então o MATLAB aumenta esta matriz automaticamente preenchendo-a com
valores nulos nas demais posições novas, de forma que a matriz permaneça retangular:
EDU>> A(1,4)=7;
EDU>> A
A=
1 5 0 7
3 4 0 0
Os elementos de uma matriz podem ser referenciados tantos individualmente, tal como
EDU>> C(3,3)
ans =
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
ans =
2
5
8
Para sabermos o número de linhas e de colunas de uma matriz, utilizamos o comando size. Existem
duas notações para essa função:
EDU>> t=size(D)
t=
3 3
onde a variável t é uma matriz linha contendo duas posições, uma contendo o número de linhas e outra
contendo o número de colunas. A outra maneira é:
EDU>> [l,c]=size(D)
l=
c=
Função Descrição
sum Soma dos elementos das colunas da matriz
prod Produto dos elementos das colunas da matriz
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
Exemplo 2: Considere um quadrado mágico, isto é, uma matriz de ordem n>=3, com valores entre 1 e n2 ,
tal que a soma das linhas, das colunas e das diagonais dão sempre o mesmo valor. Vamos demonstrar as
principais operações da tabela acima.
F=
8 1 6
3 5 7
4 9 2
ans =
15 15 15
ans =
96 45 84
ans =
5 5 5
ans =
8 9 7
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
ans =
3 1 2
ans =
3 1 2
4 5 6
8 9 7
Todas essas funções podem ser aplicadas para se produzir os resultados relativos a cada linha,
bastando aplicar as funções à transposta da matriz:
EDU>> sum(F.')
ans =
15 15 15
EDU>> prod(F.')
ans =
48 105 72
O MATLAB possui algumas funções para manipulação de matrizes, como listadas na tabela abaixo:
Função Descrição
diag Sendo o argumento um vetor, cria uma matriz diagonal com os
elementos do vetor. Se o argumento for uma matriz, produz uma
matriz coluna com os elementos da diagonal principal.
tril Obtém a parte triangular inferior de uma matriz
triu Obtém a parte triangular superior de uma matriz
Exemplo 3: Utilizaremos a matriz F declarada no exemplo anterior para mostrar as funções acima:
d=
8
5
2
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
EDU>> D=diag(d) % cria uma matriz diagonal em que os elementos da diagonal principal são os
elementos do vetor d.
D=
8 0 0
0 5 0
0 0 2
L=
8 0 0
3 5 0
4 9 2
U=
8 1 6
0 5 7
0 0 2
O MATLAB também fornece várias matrizes elementares que são de grande utilidade. Se um único
parâmetro for provido, então a matriz será quadrada e se forem dois parâmetros, a matriz será retangular
com as dimensões iguais aos valores desses parâmetros. Essas funções estão especificadas na tabela
abaixo:
EDU>> Z=zeros(2)
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
Z=
0 0
0 0
EDU>> U=ones(2,3)
U=
1 1 1
1 1 1
EDU>> I=eye(2,4)
I=
1 0 0 0
0 1 0 0
EDU>> R=rand(3)
R=
EDU>> randn(3,5)
ans =
3. Sistemas Lineares
Nesta seção, vamos utilizar os comandos do pacote GAAL para resolvermos sistemas lineares. Instruções
sobre a instalação deste pacote você encontra no site http://www.mat.ufmg.br/~regi.
O método que será utilizado na resolução de sistemas lineares é o método de Gauss-Jordan. No
quadro abaixo, estão listados os comandos que efetuam as operações elementares sobres matrizes.
Comando Descrição
Faz a operação elementar alpha x linha i linha i da
B=opel(alpha,i,A) *
matriz A e armazena na matriz B.
B=opel(alpha,i,j,A) Faz a operação elementar alpha x linha i + linha j linha j
* da matriz A e armazena em B.
Faz a troca da linha i com a linha j da matriz A e armazena
B=opel(A,i,j) *
a matriz resultante na variável B.
Calcula passo a passo a forma escalonada reduzida da
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
B=escalona(A) *
matriz A e armazena a matriz resultante na variável B.
x=A\b Retorna o vetor solução x do sistema linear Ax=b.
1 1 2 8
-1 -2 3 1
3 -7 4 10
Temos que encontrar o pivô da primeira coluna. Como o primeiro elemento da coluna 1 é 1, basta
zerarmos os demais elementos.
EDU>> B=opel(1,1,2,A); % multiplica por 1 a primeira linha e soma com a segunda linha.
1*linha 1 + linha 2 ==> linha 2
B=
1 1 2 8
0 -1 5 9
0 -10 -2 -14
Vamos agora encontrar o pivô da segunda coluna. Para isso, basta multiplicarmos a segunda linha
por –1.
B=
1 1 2 8
0 1 -5 -9
0 -10 -2 -14
EDU>> B=opel(-1,2,1,B); % multiplica por –1 a segunda linha e soma com a primeira linha.
-1*linha 2 + linha 1 ==> linha 1
EDU>> B=opel(10,2,3,B); % multiplica a segunda linha por 10 e soma com a terceira linha.
10*linha 2 + linha 3 ==> linha 3
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
B=
1 0 7 17
0 1 -5 -9
0 0 -52 -104
Encontraremos agora o pivô da terceira linha. Para isso, multiplicaremos a terceira linha por –1/52.
B=
1 0 7 17
0 1 -5 -9
0 0 1 2
EDU>> B=opel(5,3,2,B); % multiplica por 5 a terceira linha e soma com a segunda linha.
5*linha 3 + linha 2 ==> linha 2
EDU>> B=opel(-7,3,1,B); % multiplica a terceira linha por -7 e soma com a primeira linha.
-7*linha 3 + linha 1 ==> linha 1
B=
1 0 0 3
0 1 0 1
0 0 1 2
A=
1 1 2 8
-1 -2 3 1
3 -7 4 10
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
EDU>> B=escalona(A)
[ 1, 1, 2, 8]
[ -1, -2, 3, 1]
[ 3, -7, 4, 10]
eliminação 1:
(1)*linha 1 + linha 2 ==> linha 2
(-3)*linha 1 + linha 3 ==> linha 3
[ 1, 1, 2, 8]
[ 0, -1, 5, 9]
[ 0, -10, -2, -14]
Continua ? (s/n) s
eliminação 2:
(-1)*linha 2 ==> linha 2
[ 1, 1, 2, 8]
[ 0, 1, -5, -9]
[ 0, -10, -2, -14]
Continua ? (s/n) s
(-1)*linha 2 + linha 1 ==> linha 1
(10)*linha 2 + linha 3 ==> linha 3
[ 1, 0, 7, 17]
[ 0, 1, -5, -9]
[ 0, 0, -52, -104]
Continua ? (s/n) s
eliminação 3:
(-1/52)*linha 3 ==> linha 3
[ 1, 0, 7, 17]
[ 0, 1, -5, -9]
[ 0, 0, 1, 2]
Continua ? (s/n) s
(-7)*linha 3 + linha 1 ==> linha 1
(5)*linha 3 + linha 2 ==> linha 2
[ 1, 0, 0, 3]
[ 0, 1, 0, 1]
[ 0, 0, 1, 2]
Continua ? (s/n) s
Fim
B=
[ 1, 0, 0, 3]
[ 0, 1, 0, 1]
[ 0, 0, 1, 2]
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
Um recurso que o próprio MATLAB oferece para resolver sistemas lineares com rapidez é o operador
\. Dado qualquer sistema linear Ax=b, a solução pode ser facilmente digitando o comando A\b. Vamos
resolver o sistema acima utilizando este comando.
Inicialmente, do mesmo modo que acima, temos que criar a matriz dos coeficientes e o vetor dos
termos independentes do sistema:
EDU>> x=A\b
x=
3.0000
1.0000
2.0000
Obtemos, é claro, o mesmo vetor solução encontrado acima quando utilizamos o pacote de GAAL.
4. Inversão de matrizes
Nesta seção, encontraremos a inversa de matrizes usando o MATLAB. Utilizaremos aqui o mesmo
método apresentado no livro texto, que consiste em escalonar a matriz aumentada. Essa matriz aumentada
é formada pela matriz cuja inversa queremos encontrar e pela matriz identidade. Inicialmente, vamos listar
os comandos do pacote GAAL que utilizaremos:
Comando Descrição
Atribui à matriz M a matriz obtida colocando lado a lado as
M=[A,B]
matrizes A e B
Faz a operação elementar alpha x linha i linha i da matriz
B=opel(alpha,i,A)
A e armazena na variável B.
Faz a operação elementar alpha x linha i + linha j linha j
B=opel(alpha,i,j,A)
da matriz A e armazena em B.
Faz a troca da linha i com a linha j da matriz A e armazena a
B=opel(A,i,j)
matriz resultante na variável B.
Calcula passo a passo a forma escalonada reduzida da
B=escalona(A)
matriz A e armazena a matriz resultante na variável B.
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
B=
1 2 3 1 0 0
1 1 2 0 1 0
0 1 2 0 0 1
Vamos agora escalonar a matriz aumentada. O elemento da primeira linha (pivô) é 1, precisamos
apenas zerar os elementos da primeira coluna.
B=
1 2 3 1 0 0
0 -1 -1 -1 1 0
0 1 2 0 0 1
Encontraremos agora o pivô da segunda linha. Para isso, basta multiplicarmos a segunda linha por -
1.
B=
1 2 3 1 0 0
0 1 1 1 -1 0
0 1 2 0 0
1
EDU>> B=opel(-2,2,1,B) % multiplica a segunda linha por –2 e soma com a primeira linha.
-2*linha 2 + linha 1 ==> linha 1
B=
1 0 1 -1 2 0
0 1 1 1 -1 0
0 1 2 0 0 1
EDU>> B=opel(-1,2,3,B) % multiplica a segunda linha por –1 e soma com a terceira linha.
-1*linha 2 + linha 3 ==> linha 3
B=
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
1 0 1 -1 2 0
0 1 1 1 -1 0
0 0 1 -1 1 1
Como o elemento da terceira linha e terceira coluna já é o pivô, basta zerarmos os elementos da
terceira coluna.
B=
1 0 1 -1 2 0
0 1 0 2 -2 -1
0 0 1 -1 1 1
B=
1 0 0 0 1 -1
0 1 0 2 -2 -1
0 0 1 -1 1 1
Assim, a matriz [A|I3 ] é equivalente por linhas à matriz acima, que é da forma [I3 |S], portanto a matriz
A é invertível e sua inversa é a matriz S, ou seja,
S= .
O MATLAB também oferece um comando muito simples para o cálculo da inversa de uma matriz:
Comando Descrição
B=inv(A) Atribui à matriz B a inversa da matriz A
Vamos utilizar o comando acima para calcularmos a inversa da matriz definida anteriormente.
B=
0 1 -1
2 -2 -1
-1 1 1
5. Determinantes
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
O determinante de uma matriz pode ser facilmente encontrado usando o MATLAB. O quadro abaixo
mostra esse comando, além de um comando específico do pacote GAAL para encontrarmos o determinante
de uma matriz.
Comando Descrição
b=det(A) Atribui à variável b o determinante da matriz A.
Calcula o determinante da matriz A aplicando operações
b=detopelp(A)* elementares até que a matriz esteja na forma triangular
superior e atribui o resultado à variável b.
Inicialmente temos que criar a matriz e depois executarmos os comandos. Vamos calcular primeiramente
utilizando o recurso oferecido pelo MATLAB:
b=
-1
A=
[ 1, 2, 3]
[ 1, 1, 2]
[ 0, 1, 2]
eliminação 1:
-1*linha 1 + linha 2 ==> linha 2
A=
[ 1, 2, 3]
[ 0, -1, -1]
[ 0, 1, 2]
Continua ? (s/n) s
eliminação 2:
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]
1- Introdução ao MATLAB
A=
[ 1, 2, 3]
[ 0, 1, 1]
[ 0, 1, 2]
det(A) = (-1)*det(A)
Continua ? (s/n) s
-1*linha 2 + linha 3 ==> linha 3
A=
[ 1, 2, 3]
[ 0, 1, 1]
[ 0, 0, 1]
Continua ? (s/n) s
Fim!
det(A) = (-1)*det(A)
b=
-1
http://www.mat.ufmg.br/gaal/matlab/matlab1.html[15/03/2011 17:08:45]