Professional Documents
Culture Documents
1
2
Introducao
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
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
.
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
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
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
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.
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:
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
3. Adicao a uma linha de um multiplo de outra (sem alteracao das demais linhas).
Notacao: Li Li + Lk
Comandos no Octave
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
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).
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
O Metodo de Eliminacao de Gauss para reducao de uma matriz M a uma forma escada
e dada pelo seguinte algoritmo:
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
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
Comandos no Octave
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
endfunction
...
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:
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 nas operacoes com Octave, algumas operacoes elementares foram efetuadas
somente nas colunas nais. Isto porque os elementos das colunas anteriores nao sofrem
26
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
Comandos no Octave
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.
10
10
10 10
5 5
0 0
y x
5 5
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, 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.
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.
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)
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
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
...
A M = [A M 1 | A M 2 | M m ].
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
E = eye(m); E([i,j],:)=E([j,i],:)
E = eye(m); E(i,i)=x*E(i,i)
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
Func~
ao no Octave
diary lab1
diary off
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
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]
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:
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)):
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:
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
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
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!
[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:
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]
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:
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:
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.