You are on page 1of 52

Sumario

1 Topicos de Matrizes e Sistemas Lineares, com Octave 7


1.1 Introducao aos sistemas de equacoes lineares . . . . . . . . . . . . . . . . . . 7
1.2 Metodos de Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.1 Metodo de Eliminacao de Gauss . . . . . . . . . . . . . . . . . . . . . 15
1.2.2 Metodo de Gauss-Jordan . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3 Posto de Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.4 Teorema de Rouche-Capelli e Resolucao de sistemas lineares por escalonamento 28
1.5 Sistemas Lineares Homogeneos . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.6 Inversao de matrizes por escalonamento e matrizes elementares . . . . . . . . 35
1.7 Introducao ao Octave - Parte 1 . . . . . . . . . . . . . . . . . . . . . . . . . 44

1
2
Introducao

A Geometria Analtica reune tecnicas e conceitos algebricos para se trabalhar numeri-


camente com a Geometria. As tecnicas introduzidas sao parte da Algebra Linear Os obje-
tos geometricos (ponto, reta, plano, conica, quadrica, . . . ) sao transformados em objetos
algebricos e numericos, como conjunto de pontos (dados por coordenadas) que satisfazem
certas equacoes. Trabalhar com esses elementos leva a trabalhar com matrizes, sistemas
lineares e outros elementos da Algebra Linear. Assim, iniciamos nosso texto com o captulo
de Topicos de Matrizes e Sistemas Lineares, para depois iniciarmos os topicos propriamente
de Geometria.
Estes topicos de Geometria comecam com a conceituacao geometrica de vetor, que e o
elemento basico dos espacos vetoriais da Algebra Linear. Com essa passagem, iniciamos
o estudo de objetos e conceitos relacionados com pontos, retas e planos do espaco, como
posicoes relativas, distancias, angulos, areas, volumes, trabalhando algebricamente e inter-
pretando geometricamente os resultados.
Depois, passamos ao estudo de outros elementos geometricos como conicas e quadricas,
relacionados com equacoes quadraticas, mas cujo estudo passa por analise de matrizes. Os
exemplos de conicas e quadricas, juntamente com retas e planos, formam os primeiros exem-
plos de curvas e superfcies.
Neste texto, vamos introduzir tambem a utilizacao de alguns aplicativos como Octave e
Geogebra, que podem ser obtidos livremente na rede mundial de computadores, para auxiliar
no desenvolvimento da teoria. O Octave e um programa de computacao numerica e graca,

3
4

e possui uma boa versatilidade para trabalhar com matrizes. O Geogebra e um programa de
Geometria Dinamica, que transforma a tela do computador numa prancheta de desenho, e
permite manipular os objetos geometricos atraves do clicar do mouse ou da janela de entradas
algebricas. Existem outros programas livres que podem ser utilizados, como o Maxima, mais
util para o Calculo Diferencial e Integral, que podem ser explorados tambem em Geometria
Analtica, mas vamos car somente nos dois primeiros inicialmente. Observamos que existem
os programas Matlab, Cabri e Maple ou Mathematica, comercializados para ns cientcos e
prossionais. Utilizaremos tambem no decorrer do texto alguns programas livres dedicados
a ns especcos, como o K3dsurf, para visualizar superfcies no espaco.

A versao do Octave que vamos utilizar aqui e a versao mais simples, o GNU Octave.
Existe tambem a versao com interface graca, o QtOctave, que os interessados podem ins-
talar livremente. Veja a janela de abertura do Octave, com algumas informacoes uteis:
5

Os comandos podem ser inseridos onde aparece o cursor na gura.


A seguir, uma visao do Geogebra:

Geogebra com janela de Algebra e area de desenho.


Vamos inserir a utilizacao dos programas a medida que os topicos da teoria vao sendo
desenvolvidos e, no nal do captulo, apresentamos um resumo desenvolvendo os aspectos
abordados e mais alguns aspectos considerados pertinentes ao momento.
6
Captulo 1

Topicos de Matrizes e Sistemas


Lineares, com Octave

Palavras-chave: matriz escada, matriz escada l-reduzida, Metodo de Eliminacao de Gauss


e Metodo de Gauss-Jordan, pivo, posto de matriz, inversao de matrizes por escalonamento,
resolucao de sistemas lineares, Teorema de Rouche-Capelli Octave

1.1 Introducao aos sistemas de equacoes lineares

Na Geometria Analtica veremos, entre outras aplicacoes, que retas no plano podem ser
denidas por equacoes lineares a 2 variaveis (da forma ax + by + c = 0 onde x e y sao as
variaveis e a , b e c constantes); que planos podem ser denidas por equacoes lineares a 3
variaveis (da forma ax+by +cz +d = 0 onde x, y e z sao as variaveis e a , b, c e d constantes);
que uma reta no espaco pode ser dada como interseccao de dois planos e portanto, como
a x + b y + c z + d = 0
1 1 1 1
solucao de um sistema de duas equacoes a 3 variaveis (na forma ).
a x + b y + c z + d = 0
2 2 2 2
Assim, uma boa compreensao de sistemas lineares vem de auxlio a boa conducao dos
estudos futuros.

7
8

Comecaremos com um exemplo:







2x + y + z = 8
() x + y + 4z = 15



3y + 2z = 9
Este e um sistema de 3 equacoes lineares a 3 variaveis. Geometricamente, cada equacao
pode ser interpretada como um plano do espaco. Uma solucao deste sistema e uma terna
x = x0 , y = y0 , z = z0 de numeros reais, que satisfaz simultaneamente as 3 equacoes.
Por exemplo, x = 2, y = 1 e z = 3 e uma solucao do sistema. Podemos ainda dizer
que (x, y, z) = (2, 1, 3) e uma solucao. Na interpretacao geometrica, a solucao obtida e a
interseccao dos 3 planos dados, no caso, exatamente o pontoP = (2,
1, 3).
2 1 1


A matriz dos coecientes desse sistema e dado por A = 1 1 4 e a matriz ampliada

0 3 2

2 1 1 8

e
do sistema e A = 1 1 4 15.

0 3 2 9

8 x


Escrevendo B = 15 , e X = y temos que o sistema linear original e equivalente a

9 z
equacao matricial AX = B:

2 1 1 x 8


1 1 4 y = 15

0 3 2 z 9
Ainda, X0 = (2, 1, 3) e solucao do sistema pois AX0 = B:

2 1 1 2 8


1 1 4 1 = 15

0 3 2 3 9
9

.
Formalizando, seja dado um sistema linear





a11 x1 + . . . + a1n xn = b1


a x + ... + a x = b
21 1 2n n 2
.
.. . . .

+ .. + .. = ..



a x + . . . + a
m1 1 mn = bn

a11 . . . a1n


a21 . . . a2n
a matriz A = . e
. .. .. e a matriz dos coecientes e a matriz A = [A|B] =
. . .

am1 . . . amn

a11 . . . a1n b1


a21 . . . a2n b2

.. .. .. .. e a matriz completa do sistema (ou matriz ampliada).
. . . .

am1 . . . amn bn

b1 x
1

b2 x2

Colocando B = . e X =
.. , o sistema corresponde a equacao matricial AX = B.
.
. .

bm xn

Vamos introduzir aqui os primeiros comandos do Octave para ilustrar os assuntos de-
senvolvidos ate aqui. Na ultima sessao deste captulo, apresentamos mais sobre o Octave,
mas para o momento, apresentamos os comandos, com comentarios, e as respectivas sadas.
Veja na ultima sessao comandos para escrever diario, historico, limpar memoria, abandonar
a sessao, etc.

Comandos no Octave

% tudo que vem na linha depois do % e comentario


% cada linha de comando e precedido por >
10

> A = [ 2,1,1;1,1,4; 0,3,2] % ou


> A = [ 2 1 1;1 1 4; 0 3 2]
% define a matriz dos coeficientes A do sistema dado acima
% As vrgulas separam os elementos na linha mas
% podem ser trocados por espacos
% O ponto-e-vrgula dentro da matriz muda de linha
% Se colocado no final do comando, o ; serve para executar
% o comando sem exibir o resultado.
A =
2 1 1
1 1 4 % esta e a resposta a cada um dos comandos acima
0 3 2
> A(2,3) % elemento da linha 2 e coluna 3 de A
ans = 4 % ans (answer=resposta) e a variavel padr~
ao de sada
> A(1,:) % linha 1 (o : no lugar da coluna fornece todas as colunas)
ans =
2 1 1
> A(:,2) % coluna 2 de A
ans =
1
1
3
> B = [8; 15; 9] % define B como matriz-coluna
B =
8
15
11

9
> B = [8 15 9] % dem, so que transpondo a matriz-linha com o
% O apostrofo no final da matriz serve para transpor a matriz.
B =
8
15
9
> A % matriz transposta de A
ans =
2 1 0
1 1 3
1 4 2
> B(2) % segundo elemento de B, considerando B como vetor,
% onde vetor aqui significa lista ordenada
ans = 15
> B(2,1) % dem, considerando matriz B como 3x1
ans = 15
> AB = [A B] % justap~
oe A e B, lado a lado, formando a matriz ampliada
% matrizes com mesmo numero de linhas podem ser justapostas!
AB =
2 1 1 8
1 1 4 15
0 3 2 9
> AB(:,1:3) % e a submatriz A de AB (colunas de 1 a 3)
ans =
2 1 1
1 1 4
12

0 3 2

% Um pouco mais sobre a notac~


ao : em listas
> 3:8 % lista dos inteiros de 3 a 8, com passo 1
ans =
3 4 5 6 7 8
> 3:2:8 % lista dos inteiros de 3 a 8, com passo 2
ans =
3 5 7
> 8:-2:1 % lista dos inteiros de 8 a 1, com passo -2
ans =
8 6 4 2

> AB(:,4) % e a submatriz B de AB (4a. coluna)


ans =
8
15
9
> A\B % resolve o sistema AX = B, diretamente.
ans =
2
1
3
> X0 = A \ B % define X0 como a soluc~
ao do sistema
X0 =
2
1
13

3
> A * X0 % multiplica A por X0. Deve resultar em B
ans =
8
15
9
> A*B % produto matricial de A por B
ans =
40
59
63
> det(A) % determinante da matriz A
ans = -19

> inv(A) % matriz inversa de A


ans =
0.526316 -0.052632 -0.157895
0.105263 -0.210526 0.368421
-0.157895 0.315789 -0.052632
...

1.2 Metodos de Escalonamento

Antes de introduzirmos efetivamente os metodos de escalonamento, vamos tecer algumas


consideracoes:

Observacao 1: Existem certos sistemas simplicados em que e mais facil efetuar subs-
tituicoes para resolve-los. Nesta categoria, encaixam-se os sistemas com matrizes escada
14





x + y + z = 8
como deniremos depois. Por exemplo, o sistema () y + 4z = 13 esta na



2z = 6
forma escada e podemos resolve-la facilmente comecando a substituicao tras-para-frente,
fazendo z = 6
2
= 3, donde y = 134z = 1312 = 1 e portanto, x = 8y z = 813 = 4.

Observacao 2: Algumas alteracoes no sistema nao afetam o conjunto das solucoes, como

trocar duas equacoes entre si, que na matriz ampliada, corresponde a trocar duas linhas
entre si;

multiplicar uma equacao por um numero nao nulo, que na matriz ampliada, corresponde
a multiplicar uma linha pelo numero;

substituir uma equacao pela soma dela com uma outra equacao, que na matriz ampliada,
corresponde a somar a uma linha uma outra linha. Cuidado: a outra equacao deve ser
mantida!
Para ilustrarmos este ultimo fato, vejamos no caso de um sistema de 3 variaveis x, y e
z:
a x + a y + a z = b
11 12 13 1
()
a x + a y + a z = b
21 22 23 2

Substituindo a segunda equacao pela soma das duas, temos o novo sistema

a11 x + a12 y + a13 z = b1
()
(a + a )x + (a + a )y + (a + a )z = (b + b )
21 11 22 12 23 13 2 1

E obvio que que uma solucao (x0 , y0 , z0 ) do sistema (*) satisfaz o sistema (**), pois se

a x + a y + a z = b
11 0 12 0 13 0 1
,
a x + a y + a z = b
21 0 22 0 23 0 2

entao
(a21 + a11 )x0 + (a22 + a12 )y0 + (a23 + a13 )z0 =
b b
z }|1 { z }|2 {
= (a21 x0 + a22 y0 + a23 z0 ) + (a11 x0 + a12 y0 + a13 z0 ) = b2 + b1 .
15

Reciprocamente, se (x0 , y0 , z0 ) e uma solucao de (**), entao e uma solucao de (*), pois
a primeira equacao de (*) e a mesma e a segunda equacao de (*) pode ser obtida de
(**) multiplicando a primeira por (-1) e somando a segunda equacao de (**):
a21 x0 +a22 y0 +a23 z0 = (a21 +a11 )x0 +(a22 +112 )y0 +(a23 +a13 )z0 )(a11 x0 +a12 y0 +a13 z0 ) =
(b2 + b1 ) b1 = b2 .

juntando as duas alteracoes anteriores, pode-se substituir uma equacao pela soma dela
com um multiplo de outra equacao, correspondendo na matriz ampliada a soma a uma
linha de um multiplo de outra linha.

Uma das formas de analisar e resolver sistemas lineares consiste em trocar o sistema
inicial por outro sistema equivalente (isto e, com o mesmo conjunto de solucoes), de forma
que o novo sistema seja mais adequado para discussao e resolucao, como por exemplo, um
sistema na forma escada.

1.2.1 Metodo de Eliminacao de Gauss

Um dos metodos de resolucao de sistemas lineares que vamos estudar aqui e o Metodo
de Eliminacao de Gauss, cujas alteracoes para simplicacao do sistema e baseada nas ob-
servacoes acima e e feita de forma sistematica e objetiva.
Podemos sintetizar as alteracoes no sistema no Metodo de Eliminacao de Gauss em 3
tipos:

1. Troca de equacoes entre si.

2. Multiplicacao de uma equacao por um escalar = 0.

3. Adicao a uma equacao de um multiplo de outra (sem alteracao das demais equacoes).

Estas alteracoes, na forma matricial, geram operacoes com linhas nas matrizes, chamadas
operacoes elementares com linhas.
16

1. Troca de linhas entre si. Notacao: Li Lj

2. Multiplicacao de uma linha por um escalar = 0. Notacao: Li Li

3. Adicao a uma linha de um multiplo de outra (sem alteracao das demais linhas).
Notacao: Li Li + Lk

Estas operacoes elementares, escritas na linguagem do programa Octave, cam da se-


guinte forma (teoricamente as entradas devem ser numericas):

Comandos no Octave

% suponha dada uma matriz M mxn


M([i,j],:)= M([j,i],:) % realiza em M a troca entre as linhas i e j
M(i,:) = x*M(i,:) % multiplica a linha i de M por x
M(i,:) = M(i,:)+x*M(k,:) % soma a linha i de M a linha k multiplicada por x
M(i,:) += x*M(k,:) % dem, forma simplificada
% (a +=b e o mesmo que a = a + b)
...

Observamos que o smbolo = nos comandos do Octave nao e de igualdade e sim, atri-
buicao. Quando escrevemos a = a+b, estamos atribuindo a variavel a, o seu valor anterior
somado de b.
O programa Octave permite tambem criar funcoes para certas rotinas. Por exemplo,
pode-se criar funcoes para as operacoes elementares acima.
Cada funcao pode ser editada e arquivada num arquivo nome-da-func~
ao.m, na area de
trabalho escolhida, para ser utilizada em todas as sessoes do Octave. Caso queira somente
testar uma funcao, sem intencao de utilizar em sessoes futuras, basta continuar no terminal
e escrever os comandos da funcao.
Como exemplo, podemos construir a funcao swaprow de troca de linhas. (este nome de
funcao foi escolhido por ser o nome utilizado num programa classico chamado Maple).
17

Func~
ao no Octave

% swaprow(M,i,j) troca as linhas i e j da matriz M


% MatrizSaida = swaprow(MatrizEntrada,i,j)
function M = swaprow(M,i,j)

M([i,j],:) = M([j,i], :);


endfunction
...

Este arquivo pode ser editado independentemente do programa Octave, que basta sua
presenca na area de trabalho para ser prontamente utilizada. Mas um editor de programas
pode ser evocado por dentro do Octave, com o comando edit. Os comentarios nas primeiras
linhas aparecem quando o usuario utiliza o comando help para a funcao.
Crie como exerccio: a funcao mulrow(M,i,x), que multiplica a linha i de M por x, e a
funcao addrow(M,k,i,x), que adiciona a linha i de M , a linha k multiplicada por x.

Dizemos que uma matriz B, obtida de uma matriz A por uma sequencia de operacoes
elementares sobre linhas e linha-equivalente ou simplesmente, l-equivalente a matriz A. De-

notamos B A.

Pode-se mostrar que e uma relacao de equivalencia, isto e, valem as propriedades: re-

exiva (A A), simetrica (A B implica B A) e transitiva (A B e B C implica A C).

Com o Metodo da Eliminacao de Gauss para resolver um sistema linear, procura-se um


novo sistema cuja matriz ampliada e l-equivalente a matriz ampliada original, e tem a forma
escada que sera denida a seguir.
Definicao Dizemos que uma matriz Mmn esta na forma escada se possui as seguintes
caractersticas:
18

1. As linhas nulas, se houver, cam abaixo das linhas nao nulas.

2. Para cada linha nao nula i, se ai,ci e o primeiro elemento nao nulo da linha i, da
esquerda para a direita, os elementos da coluna ci abaixo da linha i sao todos nulos.
Ou equivalentemente, se denotamos por ci o numero da coluna onde ocorre o primeiro
elemento nao nulo da linha i, devemos ter c1 < c2 < < cr onde r e o numero de
linhas nao nulas de M .
Ou ainda, os numeros de zeros que antecedem os primeiros elementos nao nulos das
linhas nao nulas e crescente com as linhas.

Isto faz com que a matriz escada tenha uma escada de zeros na parte inferior da matriz,
subindo da direita para a esquerda.

2 3 0 1


Vejamos um exemplo: A = 0 0 1 0 e uma matriz escada pois:

0 0 0 0

1. a linha nula esta abaixo das 2 linhas nao nulas (r = 2)

2. o primeiro elemento nao nulo da linha 1 e A11 = 2 e todos os elementos da coluna


abaixo dele sao nulos (c1 = 1);
o primeiro elemento nao nulo da linha 2 e A23 = 1 e todos os elementos da coluna
abaixo dele sao nulos (c2 = 3).
Observe tambem que c1 = 1 < 3 = c2 .
Alem disso, nas linhas nao nulas 1 e 2, temos 0 e 2 zeros que antecedem os primeiros
elementos nao nulos de linhas, e 0 < 2.

0 3 0 1


A matriz B = 0 2 0 0 nao e escada pois c1 = 2 = c2 . E tambem o numero de

0 0 0 1
zeros antes do primeiro elemento nao nulo da linha 1 e o mesmo na linha 2 (nao crescente).
E mais, abaixo do primeiro elemento nao nulo da linha 1 tem o da linha 2, nao nulo.
19

O Metodo de Eliminacao de Gauss para reducao de uma matriz M a uma forma escada
e dada pelo seguinte algoritmo:

1. Seja c1 a primeira coluna nao nula de M , da esquerda para a direita. Se necessario,


troque de linhas para que o elemento da linha 1 e coluna c1 seja nao nulo, isto e,
M1c1 = 0. Esse elemento e chamado de pivo. Fixando a linha 1, anule os elementos
M
abaixo do pivo M1c1 = 0, utilizando as operacoes Li Li M1c
ic1
L1 , para cada i > 1.
1

Chame a nova matriz de M 1 .

2. Seja c2 a coluna de M 1 , contada da esquerda para a direita, onde existem elementos


nao nulos a partir da linha 2. Se necessario, troque a linha 2 por alguma abaixo de
1
forma que M2c 2
= 0. Esse e o novo pivo.
Fixando a linha 2, anule os elementos da coluna c2 , abaixo da linha 2 (abaixo do pivo).
Mic2
As operacoes sao Li Li M2c2
L2 , para i > 2
Chame a nova matriz de M 2 .

3. Continue o processo, considerando ck a primeira coluna de M k1 , contada da esquerda


para a direita, onde existem elementos nao nulos a partir da k-esima linha. Se ne-
k1
cessario, troque a linha k por alguma abaixo, para que Mkc k
= 0. Esse e o k-esimo
pivo.
Fixando a linha k, anule os elementos da coluna ck abaixo da linha k, isto e, abaixo
Mick
do k-esimo pivo, com as operacoes Li Li Mkck
Lk para i > k.

4. Este processo termina quando acabam as linhas nao nulas ou as colunas.

Mick
Por que utilizamos na operacao elementar Li Li Mkck
Lk , o multiplicador x =
M
Mkc
ick
?
k

Lembrando que queremos anular o novo elemento na posicao (i, ck ), basta ver que x e solucao
de Micnovo
k
= Mick + x Mkck = 0.
20

Atencao: Se voce estiver utilizando uma calculadora para efetuar as contas, a escolha dos
pivos deve ser efetuada com mais cuidado, de forma a reduzir os erros. Uma escolha simples
e utilizar como k-esimo pivo o elemento de maior valor absoluto na coluna ck , a partir
da linha k (conhecido como Emininacao de Gauss com pivoteamento parcial, em Calculo
Numerico).
Voltemos
ao nosso exemplo:




2x + y + z = 8

2 1 1 8


() x + y + 4z = 15 com matriz ampliada M = 1 1 4 15.



3y + 2z = 9 0 3 2 9
A matriz M nao esta na forma escada, pois o elemento M11 = 2 e o primeiro elemento
nao nulo da primeira linha (logo c1 = 1), e o elemento M21 = 1 e o primeiro elemento nao
nulo da segunda linha (logo c2 = 1), e portanto nao temos c1 < c2 . Vemos tambem que
M2,1 = 1 = 0 esta na mesma coluna e abaixo do primeiro elemento nao nulo da primeira
linha.
Vemos que M1c1 = M11 = 2 = 0 e portanto, podemos utiliza-lo como o primeiro pivo,
isto e, podemos xar a linha 1 e anular os termos da coluna c1 = 1 abaixo de M11 = 2. No
caso, basta fazer L2 L2 21 L1 .
Depois, xando M2,2 = 1
2
como o segundo pivo, anulamos abaixo dele com L3
L3 6L2 . A matriz E resultante ja esta na forma escada.


2 1 1 8 2 1 1 8 2 1 1 8
L L 1 L
2 2 2 1 L L 6L
M = 1 1 4 15 0 12 72 11 3
3
2
0 12 7
11 =E
2
0 3 2 9 0 3 2 9 0 0 19 57

Assim, o sistema (*) ca equivalente ao sistema escalonado




2x + y +


z = 8
() 1 7
y + z = 11

2 2

+ 19z = 57
21

57
cuja solucao pode ser dada substituindo de tras-para-frente: z = 19
= 3, donde, y =
2 (11 72 3) = 2 1
2
=1ex= 1
2
(8 1 3) = 2.
O exemplo acima, no Octave, caria com estes comandos:

Comandos no Octave

A = [ 2,1,1;1,1,4; 0,3,2 % entrando com a matriz A dos coeficientes


B = [8; 15; 9] % entrando com os termos independentes
M = [A, B] % justapondo A com B e chamando de M
M1 = M; % copiando M em M1, se quiser preservar M
M1(2,:) += -1/2*M1(1,:) % efetuando a operac~
ao L2 -> L2 - 1/2*L1
M2 = M1; % apenas para ficar de acordo com o texto
M2(3,2:4) += 6*M2(2,2:4) % efetua L3 -> L3 +6*L2, nas colunas 2 a 4
% (Por qu^
e de 2 a 4?)
E = M2
% E e a matriz escada obtida a partir de M=[A,B]
...

Se voce construiu as funcoes swaprow, mulrow e addrow como anteriormente, a sequencia


acima ca:

Comandos no Octave

A = [ 2,1,1;1,1,4; 0,3,2] % entrando com a matriz A dos coeficientes


B = [8; 15; 9] % entrando com os termos independentes
M = [A, B] % justapondo A com B e chamando de M
M1 = addrow(M1, 1,2,-1/2) % efetuando a operac~
ao L2 -> L2 - 1/2*L1
M2= addrow(M1,2,3,x) % efetua L3 -> L3 + 6*L2
E = M2
% E e a matriz escada obtida a partir de M=[A,B]
...
22

Vamos criar a funcao pivot(M,k,ck), que entra com a matriz M e retorna a matriz com
todos os elementos abaixo do elemento pivo Mk,ck nulos. Como este pivo deve ser nao nulo,
vamos um teste de forma que, se for nulo, retorna uma mensagem de erro. Este exemplo
servira tambem para introduzir mais alguns recursos do Octave.

Func~
ao no Octave

% pivot(M,k,ck) anula todos os termos da coluna ck exceto linha k


% O elemento (k,ck) da matriz M deve ser n~
ao nulo
% MatrizSaida = pivot(MatrizEntrada, linha-pivot, coluna-pivot)
function M = pivot(M,k,ck)
if (abs(M(k,ck))<eps) % Se |M(k,ck)| < eps
error("O pivot deve ser n~
ao nulo");
endif % fim de Se ...
% Anulando abaixo do piv^
o:
if (k<m) % Se k < m
for i=k+1:m % Para i de k+1 ate m
x=-M(i,ck)/M(k,ck); % calcule o multiplicador x
M(i,:) += x*M(k,:); % Li --> Li+x*Lk
endfor % fim de Para ...
endif % fim de Se k ...
% Caso queira anular tambem os elementos acima do piv^
o,
% descomente as linhas abaixo
% if (k > 1)
% for i=1:k
% x = -M(i,ck)/M(k,ck);
% M(i,:) += x*M(k,:);
% endfor
% endif
23

endfunction
...

O eps e o menor numero nao nulo manipulado no Octave, e depende da precisao da


maquina (em computadores de 64 bits, e em torno de 2.2204e-16). Em geral, nos programas
computacionais numericos, nao se usa vericar se um numero e igual a zero, e sim, se e zero
dentro de uma certa tolerancia, que pode ser denido pelo usuario, de acordo com a natureza
do problema a resolver. O nome eps lembra o utilizado no Calculo Diferencial!
Tambem o uso dos comandos de programacao
if e for.
1 2 3 4 5


7 8 9 10 11
Como exerccio, escalone a matriz M =
, utilizando o Metodo

3 2 1 0 1

200 201 202 203 204
de Eliminacao de Gauss e a funcao pivot denida acima.
Para completar a programacao do Metodo de Eliminacao de Gauss, so falta implementar
a escolha do k-esimo pivo, para cada k. E um bom exerccio de programacao, e serve tambem
para entender o Metodo.

1.2.2 Metodo de Gauss-Jordan

No Metodo de Gauss-Jordan, a sequencia de operacoes elementares deve levar a uma


matriz mais simplicada que simplesmente escada, chamada matriz escada l-reduzida (linha-
reduzida, ou matriz de Gauss-Jordan):
Por denicao, uma matriz R e uma matriz escada l-reduzida se:

1. e uma matriz escada,

2. o primeiro elemento nao nulo de cada linha nao nula (pivo) e 1 e,

3. na coluna onde ocorre o primeiro elemento nao nulo de alguma linha, todos os outros
elementos (mesmo os acima) sao nulos.
24

2 1 1 8

1
A matriz escada E = 0 2 7
11 do exemplo anterior nao e l-reduzida, pois os
2
0 0 19 57
primeiros elementos nao nulos das linhas sao 2, 21 e 19, diferentes de 1 e, alem disso, nao
sao os unicos elementos nao nulos de sua coluna.
As matrizes escada l-reduzidas 3 3 podem ter seguintes fomatos:

matriz nula;

1 x y 0 1 x 0 0 1


0 0 0 ou 0 0 0 ou 0 0 0, com uma linha nao nula;

0 0 0 0 0 0 0 0 0

1 0 x 1 x 0 0 1 0


0 1 y ou 0 0 1 ou 0 0 1, com duas linhas nao nulas;

0 0 0 0 0 0 0 0 0

1 0 0


0 1 0, com 3 linhas nao nulas

0 0 1

Para obter a matriz escada l-reduzida R, a partir da matriz escada E, basta seguir o
seguinte algoritmo:

1. Transforme todos os pivos em 1, multiplicando as linhas nao nulas i { 1, 2, . . . , r }


1
pelos multiplicadores Eici
.

2. Comece pelo ultimo pivo, anulando todos os elementos ACIMA dele, e prossiga ate o
segundo pivo (inclusive). Como acima do primeiro pivo nao ha elementos, o processo
se completa.
25

No exemplo,

1 1 1 5
2 1 1 8 1 4 1 0 2 1 0 0 2
2 2 2
1
E = 0 2 7
11 0 1 7 22 0 1 0 1 0 1 0 1 = R
2
0 0 19 57 0 0 1 3 0 0 1 3 0 0 1 3

Observe que o sistema correspondente a matriz ampliada R fornece a solucao de imediato:







x = 2
( ) y = 1



z = 3
Comandos no Octave

% supondo ja obtido a matriz escada E


M2 = E % copiando E em M2, para preservar E
x=1/M2(1,1); M2(1,:)= x*M2(1,:) % transformando o primeiro piv^
o em 1
x=1/M2(2,2); M2(2,:)= x*M2(2,:) % transformando o segundo piv^
o em 1
x=1/M2(3,3); M2(3,:)= x*M2(3,:) % transformando o terceiro piv^
o em 1
x=-M2(2,3)/M2(3,3); M2(2,3:4)+=x*M2(3,3:4)
% zerando M2(2,3) acima do 3o. piv^
o
x=-M2(1,3)/M2(3,3); M2(1,3:4)+=x*M2(3;3:4)
% zerando M2(1,3) acima do 3o. piv^
o
x=-M2(1,2)/M2(2,2); M2(1,2:4)+=x*M2(2,2:4)
% zerando M2(1,2) acima do 2o. piv^
o
R = M2 % R e a matriz de Gauss-Jordan de M
R = rref(M) % Obtendo R diretamente de M
[R,p] = rref(M) % p e a lista das colunas dos piv^
os
x0 = R(:,4) % Soluc~
ao do sistema, na coluna 4
Por enquanto e so ...

Observe que nas operacoes com Octave, algumas operacoes elementares foram efetuadas
somente nas colunas nais. Isto porque os elementos das colunas anteriores nao sofrem
26

nenhuma alteracao na operacao, desde que os elementos da linha do pivo, a esquerda do


mesmo, sejam todos nulos. Experimente introduzir nas funcoes swaprow, mulrow e addrow
estes e outros melhoramentos!

Se quiser obter diretamente a matriz l-reduzida, a partir de M , pode optar por transfor-
mar todos os pivos em 1, desde o incio, para simplicar a obtencao dos multiplicadores. Mais
ainda, uma vez obtido o pivo 1, pode zerar todos os outros elementos da coluna, antes de
procurar o proximo pivo. Este e o metodo mais conhecido como o Metodo de Gauss-Jordan.

1 2 3 4 5


7 8 9 10 11
Como exemplo, vamos obter a matriz l-reduzida de M =

3 2 1 0 1

200 201 202 203 204
pelo Metodo de Gauss-Jordan.


1 2 3 4 5 1 2 3 4 5


7 8 9 10 11 0 6 12 18 24
M =
pivot(M, 1, 1)

= M1

3 2 1 0 1 0 4 8 12 16

200 201 202 203 204 0 199 398 597 796

1 2 3 4 5


0 1 2 3 4
L2 6 L2
1

= M2

0 4 8 12 16

0 199 398 597 796

1 0 1 2 3


0 1 2 3 4

pivot(M2 , 2, 2) =R

0 0 0 0 0

0 0 0 0 0
Acima, pivot(A, k, ck ) seria uma funcao que anula todos os elementos da coluna do pivo Akck ,
exceto o proprio. Modique a funcao do arquivo pivot.m fornecido anteriormente para a
tarefa.
27

1.3 Posto de Matriz


Observe que dada uma matriz M , se esta nao for matriz nula, ha sempre innitas matrizes
escada obtidas a partir de M , mas todas elas tem em comum o numero de linhas nao nulas
e as colunas onde aparecem os pivos. A matriz escada l-reduzida (Gauss-Jordan) e unica.
Em todo caso, a constante de todas as matrizes escada obtidas a partir de uma matriz
M leva a seguinte denicao:
Definicao: O posto de uma matriz M e o numero de linhas nao nulas de qualquer matriz
escada obtida a partir de M por operacoes elementares sobre linhas.
Observamos que existe outra denicao de posto de matriz, sem utilizar escalonamento: o
posto de M e a ordem da maior submatriz quadrada de M com determinante nao nulo. Por
exemplo, se M for quadrada e invertvel, seu posto e a ordem da matriz. Pode-se demonstrar
que se trata do mesmo
conceito, mas
nao o faremos aqui.
1 2 3 4


A matriz A = 5 6 7 8 tem posto 2. De fato,

9 10 11 12

1 2 3 4 1 2 3 4 1 2 3 4


5 6 7 8 0 4 8 12 0 4 8 12

9 10 11 12 0 8 16 24 0 0 0 0

e portanto, o numero de linhas nao nulas da matriz escada obtida e 2.


Fica como exerccio encontrar uma submatriz 2 2 com determinante nao nulo e vericar
que todas as submatrizes 3 3 (quantas?) tem determinante 0. Fica como exerccio tambem
indicar quais operacoes elementares foram efetuadas nos passos acima.

Comandos no Octave

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


rank(A) % rank(A) e o posto de A
R=rref(A) % compare o posto com o numero de linhas n~
ao nulas de R
28

[R,P]=rref(A) % e tambem o numero de elementos de P=[c1, c2 , .., cr]

A1 = A(:,[1,2,3]), A2 = A(:,[1,2,4]), A3 = A(:,[1,3,4]), A4 = A(:,[2,3,4])


% obtendo e exibindo as submatrizes 3x3 de A
det(A1), det(A2), det(A3), det(A4)
% obtendo os determinantes (=?)

M1=A([1,2],P), M2=A([1,3],P), M3=A([2,3],P)


% obtendo as submatrizes 2x2 com as colunas obtidas acima
% uma delas deve ter determinante n~ao nulo
Por enquanto e so ...

1.4 Teorema de Rouche-Capelli e Resolucao de siste-


mas lineares por escalonamento





2x + y + z = 8
Vimos que o sistema linear () x + y + 4z = 15 discutido anteriormente



3y + 2z = 9
tem solucao unica, isto e, (x0 , y0 , z0 ) = (2, 1, 3) e solucao e nao existem outros valores para
x, y e z que satisfacam o sistema. Portanto e um sistema possvel e determinado.
Como a matriz
ampliada M = [A|B]
do sistema (AX = B) e l-equivalente a matriz
1 0 0 2 1 0 0


l-reduzida R = 0 1 0 1, onde 0 1 0 corresponde a l-reduzida de A, temos que

0 0 1 3 0 0 1
p = posto(A) e igual a q = posto(M ), que e igual ao numero de variaveis, n = 3. Pelas
observacoes prelimares a denicao de posto, p e q podem ser calculadas com qualquer matriz

escada E M .
Lembramos que a solucao unica deste sistema determinado aparece na ultima coluna de
29

R.

x + y + 4z = 15
Consideremos agora outro exemplo: () ,
3y + 2z = 9

1 1 4 15
com matriz ampliada M = , ja na forma escada.
0 3 2 9
Reduzindo a forma de Gauss-Jordan temos:


10
1 1 4 15 1 1 4 15 1 0 12
M = 3 =R
0 3 2 9 0 1 32 3 0 1 2
3
3


x + 10
z = 12
3
Logo o sistema acima e equivalente a
y + 23 z = 3
donde x = 12 10
3
z, y = 3 23 z e z pode variar livremente, assumindo qualquer valor real.
Por exemplo, para z = 0, temos a solucao (x, y, z) = (12, 3, 0) , para z = 3 temos outra
solucao (x, y, z) = (2, 1, 3) e para z = t R qualquer, temos (x, y, z) = (12 10
3
t, 3 32 t, t) =
(12, 3, 0) + t( 10
3
, 23 , 1).

O exemplo acima mostra um sistema com innitas solucoes, ou seja, uma sistema possvel
e indeterminado, com grau de liberdade igual a 1 (todas as solucoes podem ser descritas
variando livremente uma das variaveis no caso, z e as outras variaveis podem ser
escritas em funcao dessa variavel). A variavel z acima e a chamada variavel livre e t foi o
parametro utilizado para descreve-lo.

Observe que neste caso, p = 2 = q < n = 3, onde p = posto(A), q = posto(M ) e n e o


numero de variaveis. Alem disso, o grau de liberdade e n p = 3 2 = 1.

Observe tambem que a variavel livre z escolhida acima e correspodente a coluna 3 de R



(ou de qualquer escada E M ), e nesta coluna nao aparece nenhum pivo.

Veja a interpretacao geometrica do sistema acima cada equacao representa um plano


30

10

10
10 10

5 5

0 0
y x
5 5

e a solucao e a reta de interseccao: 10 10


Se considerarmos o sistema
x + y + 4z = 15 1 1 4 15
com matriz ampliada M = , teremos,
2x + 2y + 8z = 30 2 2 8 930

x + y + 4z = 15
o sistema equivalente pelo escalonamento.
0 + 0y + 0z = 0
Obviamente a segunda linha e nula e nao tem inuencia no sistema. Assim, camos
somente com a equacao x + y + 4z = 15, e portanto, x = 15 y 4z onde y e z podem variar
livremente.
Por exemplo, (x, y, z) = (15, 0, 0), (x, y, z) = (14, 1, 0) e (x, y, z) = (11, 0, 1) sao solucoes
particulares do sistema.
Para uso futuro, e interessante escrever as solucoes na forma (x, y, z) = (15, 0, 0) +
t(1, 1, 0) + s(4, 0, 1), t, s R. Isto pode ser obtido designando parametros as variaveis
livres: y = t e z = s, donde (x, y, z) = (15 y 4z, y, z) = (15 t 4s, t, s) = (15, 0, 0) +
(t, t, 0) + (4s, 0, s) = (15, 0, 0) + t(1, 1, 0) + s(4, 0, 1).
O sistema que acabamos de mostrar tambem e sistema possvel e indeterminado, com grau
de liberdade 2. Observe que p = q =1 < 3 = n e as
variaveis livres escolhidas correspodem as
1 1 4 15
colunas 2 e 3 da matriz escada R = , onde nao aparece nenhum pivo. Poderia
0 0 0 0
31

ter utilizado outras variaveis como livres? Sim, mas com certeza os escolhidos funcionam
bem.
Qual a interpretacao geometrica deste sistema? (Resposta: os planos descritos pelas
equacoes sao coincidentes e portanto, a solucao, e o proprio plano, que pode ser descrito por
2 parametros.)
Observe o que o grau de liberdade e a diferenca entre o numero de variaveis e o numero de
equacoes nao nulas na forma escada que aparecem nos sistemas possveis e indeterminados.
Mas um sistema pode ser impossvel, se ao reduzirmos na forma escada obtivermos uma
equacao do tipo 0 = b = 0, ou seja, desconsiderando a coluna dos termos independentes, a
forma escada possui pelo menos uma linha nao nula a menos que a matriz completa. Isto
signica que p = posto(A) < q = posto(M ).
Vamos apresentar um teorema acerca de solucoes de sistemas lineares, em termos de
postos de matrizes:
Teorema de Rouche-Capelli. Seja um sistema linear de m equacoes a n variaveis
e tem posto q.
AX = B, cuja matriz dos coecientes A tem posto p e cuja matriz ampliada A
Entao:

1. se p = q, o sistema e impossvel;

2. se p = q = n, o sistema e possvel e determinado;

3. se p = q < n, o sistema e possvel e indeterminado, com grau de liberdade n p.

O teorema ca evidente se analisarmos os sistemas lineares na forma escada, de pre-


ferencia de Gauss-Jordan:

1. se p = q, signica que a matriz ampliada escalonada tem a q-esima linha do tipo


h i
0 0 bq , que corresponde a equacao 0x1 + + 0xn = bq , sem solucao, ja que
bq = 0.
32

2. se
p = q = n, as n linhas
nao nulas da matriz de Gauss-Jordan da ampliada e da forma
1 0 0 | b1


0 1 0 | b2

.. .. . . .. . , donde a unica solucao e (x1 , x2 , . . . , xn ) = (b1 , b2 , . . . , bn )
. . . . | ..

0 0 1 | bn

3. No caso p = q < n, veja o exemplo discutido a seguir. Fica claro que e possvel escrever
as p = q variaveis correspondentes as colunas dos pivos em funcao das outras n p
incognitas.

O comando A \ B para resolver o sistema AX = B no Octave so funciona se o sistema


for possvel e determinado.
A seguir, vamos indicar um metodo para a escolha das variaveis livres e forma de apre-
sentar as solucoes, nos sistemas indeterminados.

1. Obtenha a forma escada da matriz ampliada do sistema. Considere a parte correspon-


dente a matriz dos coecientes.

2. Se os pivos estao nas colunas c1 < c2 < < cp , as demais n p colunas (sem contar
a ultima coluna) correspondem as variaveis livres.

As colunas dos pivos correspondem as variaveis que se escrevem em termos das variaveis
livres (podendo inclusive ser constante)

Por exemplo,
se a matriz ampliada
de um sistema de 4 variaveis x, y, z e w, e dada
1 20 0 3 | 10


por M = 0 0 1 1 | 5 temos que os pivos estaos nas colunas c1 = 1 e c2 = 3

0 0 0 0 | 0
de x e z, donde os candidatos as variaveis livres sao as demais, y e w. Temos que
x = 10 2y 3w e z = 5 w.

3. Utilizando parametros para as variaveis livres, escreva as solucoes de forma a evidenciar


cada parametro.
33

Por exemplo, no sistema acima, utilizando parametros y = t e w = s, temos


(x, y, z, w) = (10 20t 3s, t, 5 s, s) = (10, 0, 5, 0) + t(20, 1, 0, 0) + s(3, 0, 1, 1),
com t, s R.

Esta apresentacao das solucoes facilita a identicacao do conjunto das solucoes e a ligacao
com o grau de liberdade, na interpretacao geometrica. Quando a solucao e descrita com um
parametro, a interpretacao geometrica do conjunto das solucoes e de um objeto de dimensao
1, como retas no plano ou no espaco. Quando sao utilizados 2 parametros na descricao das
solucoes, temos um plano de solucoes (dimensao 2)

Projeto de trabalho no Octave:


No programa Octave, a funcao rref([A,B] retorna a matriz de Gauss-Jordam R da matriz
ampliada [A, B] do sistema AX = B e a lista P das colunas dos pivos.
Observe que no sistema acima, P = [1, 3], donde a escolha das variaveis livres recai na se-
gunda e quarta variaveis. Fazendo estas iguais a 0, temos (x, y, z, w) = (10, 0, 5, 0).
Observe tambem que, (20, 1, 0, 0) e (3, 0, 1, 1) sao solucoes do sistema AX = 0 (sistema
homogeneo introduzido a seguir).
De posse disso, e facil escrever as solucoes do sistema como acima, e construir uma funcao,
que no exemplo acima, exibiria as n-uplas (10, 0, 5, 0), (20, 1, 0, 0) e (3, 0, 1, 1). Cons-
trua esta funcao e chame de linsolve.

1.5 Sistemas Lineares Homogeneos


Um sistema linear e homogeneo se os termos independentes sao todos nulos, isto e, e um
sistema da forma AX = 0. Neste caso, sempre ha a solucao nula (x1 , . . . , xn ) = (0, . . . , 0).
Resta ver se tem somente a solucao nula (sistema homogeneo determinado) ou se existem
outras solucoes (sistema homogeneo indeterminado). Matricialmente, a ultima coluna da
34

matriz ampliada sendo nula, as operacoes elementares sobre linhas nao modica essa situacao,
e por isso, muitas vezes esta coluna e omitida por economia.
Uma relacao interessante entre um sistema nao homogeneo AX = B e o sistema ho-
mogeneo associado AX = 0, e que se X0 e uma solucao particular do sistema nao homogeneo,
isto e, AX0 = B, as outras solucoes podem ser escritas na forma X = X0 + X1 , onde X1 e
uma solucao do sistema homogeneo.
x + y + 4z = 15
No exemplo (anteriormente estudado) () , o sistema ho-
3y + 2z = 9

x + y + 4z = 0
mogeneo associado e () .
3y + 2z = 0
Vimos que as solucoes de (*) sao da forma (x, y, z) = (12, 3, 0) + t( 10
3
, 32 , 1), t R.
Observe que (12, 3, 0) e uma solucao particular do sistema (*) e que t( 10
3
, 23 , 1), t R sao
as solucoes do sistema homogeneo (**). Na verdade, em vez da solucao particular (12, 3, 0)
poderia ser qualquer outra solucao de (*).
Geometricamente, o sistema nao homogeneo tem como solucao a reta que passa pelo
ponto (12, 3, 0) e tem a direcao da reta (isto e, e paralela a reta) dada como solucao de
sua homogenea associada, que representa uma reta pela origem. Veremos mais tarde que
( 10 , 32 , 1) representa o vetor direcao da reta.
3
1 20 0 3 | 10


No outro exemplo, cuja matriz ampliada ja e dada por M = 0 0 1 1 | 5 , a

0 0 0 0 | 0

1 20 0 3 | 0


matriz ampliada do sistema homogeneo associado ca M 0 = 0 0 1 1 | 0.

0 0 0 0 | 0
Sendo as variaveis x, y, z e w no sistema homogeno AX = 0 acima, onde as variaveis
livres sao y e w, fazendo (y, w) = (1, 0), obtemos (x, y, z, w) = (20, 1, 0, 0) e, fazendo
(y, w) = (0, 1), obtemos (x, y, z, w) = (3, 0, 1, 1) e as solucoes do sistema linear homogeneo
podem ser escritas na forma t(20, 1, 0, 0) + s(3, 0, 1, 0), com t, s R.
35

Ou seja, uma solucao geral de um sistema linear AX = B e soma de uma solucao


particular do sistema, com uma solucao do sistema homogeneo AX = 0.

1.6 Inversao de matrizes por escalonamento e matrizes


elementares
Uma outra aplicacao do processo de Gauss-Jordan e na inversao de matrizes.
Dada uma matriz A quadrada nn, podemos inverte-la construindo a matriz M = [A | In ]
obtida justapondo A com a matriz identidade In Aplicando o processo de Gauss-Jordan, se
a matriz A for invertvel, deve-se chegar na matriz escada l-reduzida R = [In | A1 ].
Isto signica tambem que a matriz A a ser reduzida a matriz identidade na sua forma de
Gauss-Jordan, o que fornece o posto maximo n, e que determinante de A e nao nulo. Vale
a recproca, isto e, se det(A) = 0, entao
A e invertvel.
1 2 1 2 | 1 0
Exemplo: Considere a matriz A = . Temos que M = [A | I2 ] =
3 4 3 4 | 0 1

1 2 | 1 0 1 2 | 1 0 1 0 | 2 1
e portanto, a inversa

0 2 | 3 1 0 1 | 3/2 1/2 0 1 | 3/2 1/2



2 1
da matriz A e A1 =
3/2 1/2
Veja como fazer isto no Octave, utilizando a funcao rref:

Comandos no Octave

A = [ 1 2; 3 4] % definindo matriz A
[m,n] = size(A) % size = tamanho (voc^
e n~
ao precisa disso!)
Id = eye(n,n) % eye(n,n) e a matriz identidade nxn
AI = [ A Id ] % justapondo A e Id
R = rref(AI) % R e a matriz l-reduzida de AI
invA = R(:,n+1:2*n) % invA e a submatriz de R, inversa de A,
36

% se A for invertvel
inv(A) % diretamente, para conferir
...

Para a demonstracao da validade deste processo de inversao de matrizes, e necessario


denir as matrizes elementares, obtidas da matriz identidade por uma operacao elementar
sobre linhas.
Uma operacao elementar em M corresponde a uma multiplicacao E M de M por uma
matriz elementar E, onde E e obtida de uma matriz identidade pela operacao elementar em
questao.
0 0 1


Por exemplo, a matriz E = 0 1 0 e uma matriz elementar obtida pela operacao

1 0 0
L1 L3 , e podemos ver que multiplicando uma matriz M a esquerda por E temos
E M
z
}| { z }| {
0 0 1 0 2 3 3 1 1 7 0


0
1 0 4 1 5 2 4 1 5 2 .
=

1 0 0 1 1 7 0 0 2 3 3
Conra o resultado da operacao elementar aplicada diretamente em M :

0 2 3 3 1 1 7 0

L1 L3
4 1 5 2 4 1 5 2

1 1 7 0 0 2 3 3

1 0 0


Analogamente, a matriz E = 0 1 0 e uma matriz elementar obtida pela operacao

5 0 1
L3 L3 + 5L1 , e multiplicar uma matriz M a esquerda por E

1 0 0 1 2 3 3 1 2 3 3


0 1 0 4 1 5 2 = 4 1 5 2

15 0 1 5 1 7 0 0 11 22 15
37

e equivalente a aplicar a operacao


na matriz M :

1 2 3 3 1 2 3 3

L3 L3 +5L1
4 1 5 2 4 1 5 2

5 1 7 0 0 11 22 15

1 0 0


Do mesmo modo, a matriz elementar E = 0 1 0 obtida da identidade multiplicando

0 0 x
a linha 3 por x, produz numa multiplicacao E M o mesmo resultado que multiplicar a linha
3 de M por x.
Assim, dada uma matriz quadrada invertvel A, e a matriz M = [A | In ], temos uma
sequencia de matrizes elementares E1 , E2 , . . . , Er , correspondentes as operacoes elementares
efetuadas para se chegar na sua matriz escada l-reduzida R = [In | B]. Mostremos que
B = A1 .
Primeiro, um fato da multiplicacao de matrizes: pode-se provar que, se escrevemos uma
matriz M na forma M = [M 1 | M 2 | | M m ] ( estamos colocando | para separar blocos de
matrizes, como no caso M = [A | In ]), entao, multiplicando M a esquerda por A temos:

A M = [A M 1 | A M 2 | M m ].

Assim, temos que R = [In | B] = Er E2 E1 [A | In ]. Das primeiras n colunas,


conclui-se que Er E2 E1 A = In , donde Er E2 E1 = A1 . Pelas n ultimas colunas,
segue que Er E2 E1 In = B. Logo, B = A1 .
0 1 2


Vamos ilustrar com o Octave a inversao da matriz A = 3 4 5, mostrando todos

1 2 1
os passos do escalonamento por Gauss-Jordan. Aproveitamos tambem para obter e utilizar
as matrizes elementares, para ilustrar a justicativa do metodo de inversao e a atuacao das
matrizes elementares.
38

Comandos no Octave

octave:2> A = [ 0 1 2; 3 4 5; -1 2 1]
A = % sada do Octave
0 1 2
3 4 5
-1 2 1
octave:3> [m,n] = size(A) % obter m e n
m = 3
n = 3
% Vamos justapor A com a matriz identidade mxm
octave:4> M = [ A eye(m) ] % eye(m)= I = identidade
M =
0 1 2 1 0 0
3 4 5 0 1 0
-1 2 1 0 0 1
% Como a coluna 1 e n~
ao nula, vamos encontrar o piv^
o nesta coluna.
% Como M(1,1)=0, facamos uma troca de linhas para mudar isto
octave:5> E1 = eye(m); E1([1,2],:) = E1([2,1],:)% obtendo E1 aplicando em I
% a operac~
ao elementar op1
E1 = % de troca da L1 <--> L2
0 1 0 % ou seja, E1 = op1(I)
1 0 0 % E1 e a matriz elementar
0 0 1
octave:6> M1 = E1*M % multiplicando M por E1
M1 =
3 4 5 0 1 0
0 1 2 1 0 0
39

-1 2 1 0 0 1
% O resultado e M1=op1(M)=[A1,E1]=[op1(A),op1(I)]=[E1*A,E1*I]
% Vamos agora transformar o piv^
o em 1, multiplicando a linha L1
octave:7> E2 = eye(m); E2(1,:) = 1/M1(1,1)*E2(1,:)
E2 = % op2: L1 --> 1/M1(1,1)*L1
0.33333 0.00000 0.00000 % E2 = op2(I)
0.00000 1.00000 0.00000 % E2 e matriz elementar
0.00000 0.00000 1.00000
octave:8> M2 = E2*M1
M2 = %
1.00000 1.33333 1.66667 0.00000 0.33333 0.00000 %
0.00000 1.00000 2.00000 1.00000 0.00000 0.00000
-1.00000 2.00000 1.00000 0.00000 0.00000 1.00000
% M2 =E2*M1 =op2(M1) =[op2(A1),op2(E1)] =[E2*A1,E2*E1]=[A2,E2*E1]
% Agora vamos zerar os elementos abaixo do piv^
o da coluna c1 =1
octave:9> E3 = eye(m); E3(3,:) -= M2(3,1)*E3(1,:)
E3 = % op3: L3 --> L3-M2(3,1)*L1
1 0 0 % E3 e a matriz elementar
0 1 0
1 0 1
octave:10> M3 = E3*M2
M3 =
1.00000 1.33333 1.66667 0.00000 0.33333 0.00000
0.00000 1.00000 2.00000 1.00000 0.00000 0.00000
0.00000 3.33333 2.66667 0.00000 0.33333 1.00000
% M3 =E3*M2 =op3(M2) =[op3(A2),op3(E2*E1)]=[E3*A2(=A3),E3*E2*E1]
% Agora vamos a segunda coluna. O piv^
o e M3(2,2)=1.
40

% Devemos zerar os outros elementos da coluna.


octave:11> E4 = eye(m); E4(3,2:n) -= M3(3,2)*E4(2, 2:n)
E4 = % op4: L3 --> L3-M3(3,2)*L2
1.00000 0.00000 0.00000
0.00000 1.00000 0.00000 % E4 e matriz elementar
0.00000 -3.33333 1.00000
octave:12> M4 = E4*M3
M4 =
1.00000 1.33333 1.66667 0.00000 0.33333 0.00000
0.00000 1.00000 2.00000 1.00000 0.00000 0.00000
0.00000 0.00000 -4.00000 -3.33333 0.33333 1.00000
% M4 = op4(M3) = [A4, E4*E3*E2*E1]
octave:13> E5 = eye(m); E5(1,2:n) -= M4(1,2)*E5(2, 2:n)
E5 =
1.00000 -1.33333 0.00000
0.00000 1.00000 0.00000
0.00000 0.00000 1.00000
octave:14> M5 = E5*M4
M5 =
1.00000 0.00000 -1.00000 -1.33333 0.33333 0.00000
0.00000 1.00000 2.00000 1.00000 0.00000 0.00000
0.00000 0.00000 -4.00000 -3.33333 0.33333 1.00000
% Agora vamos ao terceiro piv^
o M5(3,3)=-4 que devera ser 1
octave:15> E6 = eye(m); E6(3,3) = 1/M4(3,3)*E6(3,3)
E6 =
1.00000 0.00000 0.00000
0.00000 1.00000 0.00000
41

0.00000 0.00000 -0.25000


octave:16> M6 = E6*M5
M6 =
1.00000 0.00000 -1.00000 -1.33333 0.33333 0.00000
0.00000 1.00000 2.00000 1.00000 0.00000 0.00000
0.00000 0.00000 1.00000 0.83333 -0.08333 -0.25000
% Vamos zerar os demais elementos da coluna c3=3, acima de 1
octave:17> E7 = eye(m); E7(2,3) -= M6(2,3)*E7(3,3)
E7 =
1 0 0
0 1 -2
0 0 1
octave:18> M7 = E7*M6
M7 =
1.00000 0.00000 -1.00000 -1.33333 0.33333 0.00000
0.00000 1.00000 0.00000 -0.66667 0.16667 0.50000
0.00000 0.00000 1.00000 0.83333 -0.08333 -0.25000
octave:19> E8 = eye(m); E8(1,3) -= M7(1,3)*E8(3,3)
E8 =
1 0 1
0 1 0
0 0 1
octave:20> M8 = E8*M7
M8 =
1.00000 0.00000 -0.00000 -0.50000 0.25000 -0.25000
0.00000 1.00000 0.00000 -0.66667 0.16667 0.50000
0.00000 0.00000 1.00000 0.83333 -0.08333 -0.25000
42

% M8 = op8(M7) = [E8*A7=I , E8*E7*E6*E5*E4*E3*E2*E1*I]=[A8,I8]


% I = E8*A7 = E8*E7*A6 = ... = E8*E7*E6* ... *E1*A = I8*A
% Logo o produto das matrizes elementares e I8=inv(A) e
% corresponde a submatriz M8(:, n+1:2*n)
octave:21> I8 = M8(:, n+1:2*n) % obtendo a inversa de A
invA =
-0.500000 0.250000 -0.250000
-0.666667 0.166667 0.500000
0.833333 -0.083333 -0.250000
...

Analisando os dados acima, observa-se que as matrizes elementares (E) correspondentes


as aplicacoes elementares sobre as linhas de matrizes m n sao:

Para a troca de linhas, Li Lj , a matriz elementar e a matriz identidade com as


linhas trocadas.

E = eye(m); E([i,j],:)=E([j,i],:)

Para multiplicacao de um linha Li x Li , a matriz elementar e a matriz identidade


com o elemento (i,i) multiplicado por x, isto e, Eii = x

E = eye(m); E(i,i)=x*E(i,i)

Para adicionar a linha Li a linha Lk multiplicada por x, Li Li + x Lk , comece


com a matriz identidade e coloque o multiplicador x na posicao (i, k)

E = eye(m); E(i,k)= x

Como exemplo, vamos recriar a funcao addrow no Octave, utilizando multiplicacao por
matriz elementar. Fica como exerccio criar as outras aplicacoes elementares.
43

Func~
ao no Octave

% addrow(M,k,i,x) soma a linha i, a linha k multiplicada por x


function M = addrow(M,k,i,x)
if (nargs <4 )
print_usage ();
endif
[m,n]=size(M);
E = eye(m); E(i,k) = x;
M = E*M;
endfunction
...

Outro exemplo: funcao pivot.m, reescrita com matrizes elementares:

Func~
ao no Octave

% pivot(M,k,ck) anula todos os termos da coluna ck exceto linha k


% O elemento (k,ck) da matriz M deve ser n~
ao nulo
% MatrizSaida = pivot(MatrizEntrada, linha-pivot, coluna-pivot)
function M = pivot(M,k,ck)
[m,n] = size(M);
if (abs(M(k,ck))<eps) error("O pivot deve ser n~
ao nulo"); endif
if (k>1)
for i=1:k-1 E=eye(m);E(i,ck)=-M(i,ck)/M(k,ck);M = E*M; endfor
endif
if(k<m)
for i=k+1:m E=eye(m);E(i,ck)=-M(i,ck)/M(k,ck);M = E*M; endfor
endif
endfunction
...
44

Vamos reapresentar o Octave, recordando alguns comandos e acrescentando outros que


poderao ser uteis, acessveis no momento.

1.7 Introducao ao Octave - Parte 1


Voltamos a apresentar aqui alguns exemplos de comandos do Octave para trabalhar
com matrizes e vetores (vetores ainda no sentido computacional), que foram utilizados no
decorrer deste captulo. Nao vamos detalhar os usos do software, que podem ser obtidos na
rede mundial de computadores e variam de uma versao para outra. Ao obter o download de
sua versao, procure a documentacao correspondente.
Nosso objetivo nao e ensinar programacao, e sim, utilizar o Octave para que mais exem-
plos possam ser explorados para cada topico de Geometria Analtica, auxiliando na compre-
ensao dos conceitos, aplicacoes e exerccios relacionados com estes topicos.
Ao carregar o programa Octave, e interessante ativar um diario, para registrar todos os
comandos e sadas da sessao, para estudar mais tarde. Para isso, escreva:

diary lab1

Ao m, para fechar o diario, escreva

diary off

Para encerrar a sessao do Octave, pode digitar:

quit

O arquivo lab1 gravado pode ser aberto e reeditado em qualquer editor de texto. Se
apos fechar o diario lab1, reabr-lo novamente no Octave com o mesmo nome, a nova sessao
sera acrescentada no arquivo.
Algumas versoes do Octave, como o QtOctave, salvam e recarregam automaticamente as
variaveis das sessoes anteriores. Para limpar todas estas variaveis, existe o comando:
45

clear all

No decorrer da sessao, se desejar apagar somente uma determinada variavel, digamos, vvv,
pode-se utilizar o mesmo comando, com o nome da variavel:

clear vvv

Duvidas podem ser esclarecidas com o comando help. Por exemplo, para saber mais
sobre o comando clear, digite:

help clear

O Octave trabalha basicamente com matrizes. Matrizes linha (1 n) ou matrizes coluna


(n 1) serao chamados vetores. Mais tarde, a teoria esclarecera este nome.
Vamos trabalhar agora com entrada de matrizes, incluindo vetores, e manipulacoes
basicas como obter elementos, linhas, colunas, submatrizes, e operacoes basicas como so-
mas, multiplicacao por escalar, produto de matrizes e transposicoes.
Damos entrada a um vetor tipo matriz linha, designado de u como segue:

u = [ 1 2 3]

ou

u = [1,2,3]

Observe que espaco ou vrgula servem para separar os elementos. Se nao quiser que o Octave
exiba o resultado, acrescente um ; no nal do comando.
Agora, um vetor v, como matriz coluna, pode ser denido escrevendo:

v = [ 1; 2; 3]

Os ;s entre os elementos indicam m da linha.


1 2 3 0


Analogamente, entramos com a matriz A = 4 4 6 0 :

7 8 9 10
46

A = [ 1 2 3; 4 5 6; 7 8 9]

Os espacos (ou vrgulas) separam os elementos das linhas, o ponto e vrgula ; indica m da
linha. Se colocarmos ; no nal do comando, este sera executado, mas o resultado nao sera
exibido no terminal.
Os elementos de um vetor, tambem chamados de coordenadas e os elementos de uma
matriz, podem ser acessados atraves da posicao:

u(2) % e a segunda coordenada do vetor u


A(2,3) % e o elemento da linha 2 e coluna 3 da matriz A

Observe que neste caso, nao demos nomes (variaveis) aos elementos exibidos. Quando nao se
coloca o nome da variavel, o Octave coloca a sada na variavel ans, que vai sendo atualizada
toda vez que uma nova sada nao tiver nome especco. Se o objetivo for simplesmente
executar e ver no terminal a resposta, a sada em ans economiza variaveis. Mas se quiser
utilizar o resultado posteriormente, convem dar um nome especco a sada, como zemos
acima com os vetores (variaveis u e v) e a matriz (variavel A).
Uma linha ou coluna de uma matriz pode ser escolhida, entrando com o numero da linha
ou da coluna, na posicao correspondente (A(linha, coluna)):

L2 = A(2, :) % L2 recebe a linha 2 de A


C3 = A(:, 3) % C3 recebe a coluna 3 de A

O : nos comandos acima seleciona todas as colunas ou linhas, conforme apareca na posicao
da coluna ou da linha.
Se ao inves de uma linha (ou uma coluna), quisermos varias linhas (ou varias colunas),
ou ainda, selecionar algumas das colunas (ou linhas) nas linhas, basta indicar na posicao da
linha (ou da coluna), as linhas (ou colunas) desejadas:

A12 = A([1 2],:) % exibe a submatriz de A com as linhas 1 e 2


A21 = A([2 1],:) % matriz obtida de A com as linhas 2 e 1
47

A234 = A(2:4, :) % submatriz de A com linhas 2:4 = 2,3,4


A(2:4, 1:3) % submatriz de A obtida com as linhas 2:4 e 1:3

Para melhor entender as sadas acima, veja o signicado de ::

1:10 % todos os inteiros de 1 a 10


1:2:10 % = 1, 3, 5, 7, 9
% n:passo:m = n, n+passo, n+2*passo, ..., n+k*passo <= m
10:-1:1 % = 10,9,8, ..., 1
1: .2: 2 % = 1 1.2 1.4 ... 1.8 2

Observacao: Uma submatriz de uma matriz A deve ser obtidas de linhas e colunas da matriz
A, mantendo a ordem crescente nas linhas e colunas. Ou seja, se B e uma submatriz obtida
de A com as linhas l1 < l2 < < lk e colunas c1 < c2 < < cm , entao B(i, j) = A(li , lj ).
Nao pode ocorrer, por exemplo, l1 l2 , como em A21 acima.
Uma matriz pode ser transposta com , transformando linhas em colunas. Em particular,
um vetor linha pode virar vetor coluna e vice-versa:

A % e a transposta da matriz A
v = u % o vetor coluna v e a transposta do vetor linha u

Matrizes de mesmo tipo m n podem ser somadas com o operador + e uma matriz pode
ser multiplicada por um numero (multiplicacao por escalar) com o operador *:

A = [1 2 3 4; 5 6 7 8; 9 0 0 0]
B = [1 0 0 0; 0 1 0 0; 0 0 1 0]
C = A + B % C e a soma A + B
D = 5*A % D e A multiplicada por 5
E = 5*A - 7*B % E = 5A-7B

O operador * serve tambem para multiplicar matrizes m n e n p da forma classica


P
((A B)ij = nk=1 Aik Bkj ).
48

A = [1 2 3 4; 5 6 7 8; 9 0 0 0]
v = [ 1; 2; 4]
Bt = B % Bt e a transposta de B (3x4), logo 4x3
A * Bt % produto de A por B
A * v % produto de A pelo vetor coluna v

Tambem podemos obter potencias de matrizes (quadradas) usando ^, podendo inclusive


ter potencias fracionarias e negativas. Lembramos que A2 = A A, A3 = A A A, . . . ,
A}, A0 = Identidade, A1 = inversa de A, A1/2 e a matriz cujo quadrado e
An = |A {z
n vezes
A, e assim por diante.

A = [1 2; 3 4]
A^2 % o mesmo que A*A
A^0 % o mesmo que eye(2)
A^(-1) % o mesmo que inv(A)
A^(1/2) % o mesmo que uma matriz B tal que B^2=B*B=A

O Octave dene, para certos usos, um novo produto para matrizes do mesmo tipo, mul-
tiplicando termo a termo: (A . B)ij = Aij Bij . Nao confunda com a multiplicacao
classica!

x = y = [-1:.1:1]; % define x e y como vetores (de 21 coordenadas)


z = x .* y % define o vetor z onde z(i) = x(i) * y(i)
A .* B % com A e B definidos acima, 3x4, e possvel?

Analogamente, temos a potencia termo a termo e funcoes aplicadas termo a termo:

[1 2 3] .^ 2 % = [ 1 4 9]
[1 2; 3 4] .^ 2 % = [ 1 4; 9 16]
cos([1 2 3]) % = [ cos(1) cos(2) cos(3) ]
49

Algumas matrizes especiais podem ser obtidas com comandos especiais. Experimente e
conra os resultados:

I5 = eye(5) % eye(n) e a matriz identidade nxn


I57 = eye(5,7) % eye(m,n) e a matriz mxn com 1 na diagonal
% e 0 no resto
O7 = zeros(7) % e a matriz nula 7x7
O74 = zeros(7,4) % e a matriz nula 7x4
U = ones(2,3) % e a matriz 2x3 com todos elementos 1
M = rand(3,4) % e uma matriz 3x4 gerada aleatoriamente
M = diag([1 2 3]) % e a matriz diagonal 3x3 com diagonal dada
M = diag([1,2,3],2) % execute no Octave e veja o resultado!

Tambem podemos construir matrizes juntando outras matrizes como blocos, desde que
sejam de tamanhos adequados. Os blocos, para serem enleirados de lado precisam ter o
mesmo numero de linhas, para serem colocadas uma abaixo da outra, o mesmo numero de
colunas. Veja os exemplos:

A11 = [ 1 2 ; 3 4]
A12 = eye(2) % B = [1 0 ; 0 1]
A21 = zeros(2); % C = [ 0 0; 0 0]
A22 = diag([5,6]); % D = [ 5 0 ; 0 6]
M = [ A11 A12 ; A21 A22] % = [ 1 2 1 0; 3 4 0 1; 0 0 5 0; 0 0 0 6]
v = [9 10] % v = [9; 10]
Av = [A v] % = [1 2 9; 3 4 10] (matriz ampliada de AX=v)
u = [1 2 3]; v =[ 4 5 0]; uv = [u ; v] % = [ 1 2 3; 4 5 0]

Podemos tambem alterar partes de uma matriz, inserindo os dados especicamente:

E = eye(4); E(3,4)=5 % alterando um elemento da identidade 4x4


F = zeros(5,4); F(4,:) = [1 2 3 4] % alterando a linha 4 da matriz nula
50

G = eye(5); G([2 5],:)=G([5 2], :) % trocando as linhas 2 e 5 de Id


H = eye(5); G([1 3],[1 3]) = [1 2; 3 4] % alterando a submatriz de H de Id

As operacoes elementares sobre linhas podem ser obtidas desta forma:

M([i j],:) = M([j i],:) % L_i <--> L_j


M(i, :) = x*M(i, :) % L_i --> x*L_i
M(i, :) += x*M(k, :) % L_i --> L_i + x*L_k

Observacao: a += b e o mesmo que a = a + b , como na linguagem C.


Tambem podemos fazer uso do for ... endfor para denir os elementos de uma
matriz A com uma formula Ai,j = f (i, j):

A = zeros(4,5); % inicializando uma matriz A com zeros


for i=1:4
for j = 1:5
A(i,j) = 1/(i+j-1);
endfor
endfor % obs: pode ser tudo numa linha so

Outras formas de obter matrizes e vetores:

t = linspace(-1,1,21) % t = [-1, -1+(1-(-1))/20, ..., 1] vetor contendo


% 21 pontos do intervalo de -1 a 1, obtidos dividindo
% o mesmo em 20 partes iguais.
[R,P] = rref(A) % retorna a matriz R de Gauss-Jordan de A,
% e o vetor P com as colunas dos piv^
os
x0 = A \ B % retorna a soluc~
ao da equacao matricial AX=B.
inv(A) % retorna matriz inversa de A, como A^(-1)

Varias funcoes matriciais ja estao denidas no Octave, as acima e outros, como determi-
nante (det), posto de matriz (rank). Mas a maioria das funcoes matriciais ainda nao podem
51

ser apresentadas no momento, pois no mnimo exigiriam mais conhecimentos teoricos. Tem
tambem funcoes nao necessariamente matriciais, como trigonometicas, exponenciais, loga-
ritmicas, etc.
Existem ainda as funcoes para desenhos de gracos, que tambem trataremos em momento
mais oportuno.
Podemos tambem denir novas funcoes e grava-las para serem utilizadas em outras
sessoes, o que permite o desenvolvimento de projetos complexos. Por exemplo, construir
uma funcao para resolver sistemas lineares com innitas solucoes.
Vejamos algumas regras basicas da denicao de uma funcao. A primeira delas e que ela
pode ser editada num arquivo cujo nome e o nome da funcao, acrescido de .m. Procure
nomes sem caracteres especiais como acentos e cedilha. Se for colocada no diretorio de
trabalho, pode ser utilizada em qualquer sessao como se fosse parte do programa Octave. E
desejavel tambem que ela tenha uma linha de ajuda, para quando se der o comando help,
seja lembrado se utiliza a funcao. Mas antes disso, a funcao, se nao for muito longa, pode
ser escrita e testada no proprio terminal.
O arquivo nome-da-funcao.m deve ter a seguinte estrutura:

% Nas primeiras linhas comentadas seguem a ajuda para a func~


ao
function sada = nome-da-funcao(par^
ametros de entrada)
corpo da func~
ao
endfunction

Uma vez salva, o arquivo pode ser acessado novamente para reedicao com o comando

edit nome-da-funcao.m

O editor de programa depende de sua instalacao. No Linux, o editor padrao costuma ser o
Emacs. Mas qualquer editor tipo Notepad serve, e pode ser editado independentemente de
se ter o Octave ativado.
52

Algumas funcoes distribudas com o Octave, como o rref, pode ser lido na ntegra com
o comando

type rref

Mas se der o mesmo comando type para ler a funcao det, de determinante, saira a mensagem:
det is a built-in function.
Uma outra opcao interessante do Octave, e que este pode estar instalado num servidor
linux em qualquer lugar do mundo e, desde que se tenha autorizacao de acesso via SSH,
pode ser utilizado normalmente, pelo menos na parte nao graca. Outra opcao e editar uma
sequencia de comandos que deseja executar e obter os dados num arquivo e executa-lo em
linha de comando do terminal. Por exemplo, edite e salve um arquivo chamado teste com
o seguinte conteudo:

% Comandos para serem executados offline


A = [ 1 2; 3 4]
for n=1:100
n, A^n
endfor

e execute no terminal do linux escrevendo:

octave teste >> resposta

O >> resposta e como se faz no linux para escrever a sada do comando no arquivo
chamado resposta, em formato de texto simples. Sem este nal, a sada sera exibida no
terminal (nao conveniente, para respostas muito longas como esta).
Enm, isto e uma apresentacao inicial de um programa computacional numerico e graco,
que podera ser muito util para acompanhar o aluno em Geometria Analtica e em muitas
outras materias mais avancadas a vir. Alem disso, seus comandos sao muito semelhantes aos
utilizados num programa muito conhecido no meio cientco, o Matlab.

You might also like