Resumo da décima aula
Usamos a pivotação para resolver os problemas que surgem no
arredondamento e para o caso de encontrarmos um pivô $a_{kk}$ nulo.
A estratégia é fazer a pivotação antes de cada eliminação.
Seguem duas funções para o SCILAB para pivotação e eliminação de
Gauss. Futuramente precisaremos, quer dizer s alunos vão precisar,
destas funções.
function Y=pivota1(A,n),
// Pivota a n-esima coluna da matriz A.
[l,c]=size(A);
if (l<n)|(c<n) then Y=A; end
// localizar o elemento com o maior módulo:
M=n;
for k=n+1:l,
if abs(A(k,n))>=abs(A(M,n)) then M=k; end;
end;
//troca a linha n com a linha l
if M~=n then
b=A(n,:);
A(n,:)=A(M,:);
A(M,:)=b;
end;
Y=A;
endfunction
function Y=gauss_elim(A,n),
// executa o n esimo passo do metodo de eliminacao de Gauss
[l,c]=size(A);
if n>=min(l,c) then error("Nao da pra fazer com esse n"); end;
if A(n,n)==0 then error("fazer o Pivotamento primeiro"); end;
for k=n+1:l ,
A(k,n)=A(k,n)/A(n,n);
A(k,n+1:c)=A(k,n+1:c)-A(k,n)*A(n,n+1:c);
end;
Y=A;
endfunction;
Generated by GNU enscript 1.6.4.
04 de April de 2008 |