IFG Itumbiara - Clculo Numrico Professor : Ricardo S. Oliveira
Mtodos para Sistemas de Equaes No - Lineares
1 Aplique o Mtodo de Newton para resolver o seguinte sistema no-linear de duas equaes com duas incgnitas (, ) = (, ) = % sis2.m : Newton para sistema 2x2 % Nestte programa usamos clculo simblico do Matlab syms x y f1= '2*x^3-y^2-1'; f2= 'x*y^3-y-4'; f11=diff(f1,x,1); f12=diff(f1,y,1); % Derivadas parciais de f1 f21=diff(f2,x,1); f22=diff(f2,y,1); % Derivadas parciais de f2 xk = 2; y = 3; % Aproximaes inicias for k =1.6 % Lao das Iteraes J (1,1) = eval (f11); % Clculo da Jacobiana J (1,2) = eval (f12) ; J (2,1) = eval (f21); J (2,2) = eval (f22) ; f(1) = eval(f1); % Valores de f1(x,y) e f2(x,y) f(2) = eval (f2);
v= -J\f' ; % Soluo do Sistema Linear
x = x + v(1); % Atualizando a Aproximao
y = y + v(2);
ms(k,1) = x; % Guardando as Aproximaes na
iterao k ms(k,2) = y; mf (k,1)=f(1); mf(k,2)=f(2); end
Mtodos para Sistemas de Equaes Lineares
1. Calcule a soluo do sistema usando a inversa de A: x1 = inv (A) * b =
A-1 b . >> A = [3 -2 2; 1 1 1 ; 2 1 -1] >> b = [-3 -4 -3]' >> x = A\b; % Calcula a soluo do sistema Ax=b. >> format long; x' % A partir deste comando os resultados sero apresentados com 15 dgitos. >> format short % A partir deste comando os resultados sero apresentados com 5 dgitos. >> IA = inv(A) % Clculo da inversa da Matriz A >> IA*A % Clculo do produto das duas matrizes IA e A. >> d = det(A) % Determinante da matriz A >> [V,D] = eig (A) % Clculo dos autovalores e autovetores da matriz A >> [L, U, P] = lu(A) % Clculo da Fatorao LU da matriz A >> [U, E, G] = svd(A) % Clculo da Decomposio em Valores Singulares da matriz >> ae= sparse(a); % Posies e valores dos elementos no nulos da matriz a >> nnz(a) >> for i = 1:n; b(i)= sum (a(i,:)); end
P a matriz de permutao do pivotamento usado no clculo dos fatores L
e U. A matriz P multiplicada por A tem o efeito de trocar de linhas efetuadas quando o pivotamento realizado.
a. Verifique que PA = LU
b. Verifique que, em [L,U] = lu(A), a matriz L apresentada com as trocas
de linhas correspondentes ao pivotamento.
c. Como resolver o sistema usando as Matrizes apresentadas em (b) ?
d. Verifique que s = svd(A) fornece apenas valores singulares da
decomposio.
2. Para eliminar o desperdcio de memria ao armazenar os zeros de uma
matriz esparsa, podem-se guardar apenas seus elementos no-nulos. Para evitar operaes envolvendo elementos nulos, alguns algoritmos especiais so aplicados no tratamento de sistemas lineares esparsos no Matlab. Defina a matriz a, da seguinte forma. n =8 ; r = 3; a(1,1) =-2; a(n,n)=-2; a(1,2)=1;a(n,n-1)=1; for i=2:n-1; a(i,i)=-4; end for i=2:n-1; a(i,i+1)=1; a(i,i-1)=1; end for i = 1: n-r; a(i,i+r)=1; end for i = r+1:n; a(i,i-r)=1; end a a. Como se deve proceder para guardar apenas os elementos no-nulos da matriz a. b. Se desejamos saber quantos elementos no nulos tem a matriz a: c. Defina o termo independente de modo que a soluo do sistema ax=b seja xi=1. 1 3. As matrizes de Hilbert Hn, onde Hij = 1 i, j n, so exemplos i+j1 clssicos de matrizes mal condicionadas. a) Utilize o comando hilb[ ] para gerar matrizes das seguintes ordens: 5, 7, 10. Calcule os determinantes das matrizes geradas com o comando det[ ]. O que podemos observar? b) Resolva os sistemas lineares Hn x = bn, com n = 5, 7, 10. Considere vetores bn de forma que a soluo exata seja x*= (1, 1, ..., 1)T . Analise os resultados obtidos.
4. O sistema de cabos ilustrado na figura abaixo est em equilbrio esttico:
a soma das componentes horizontais e verticais das foras que atuam em cada junta nula. a) Escreva o sistema de equaes lineares Ax = b que descreve o equilbrio do sistema.
b) Resolver o Sistema por eliminao Gaussiana
% Disciplina de Clculo Numrico - Prof. OLIVEIRA, R.S.
% Mtodo de eliminao de Gauss - % Este procedimento resolve k-sistemas lineares, onde a % matriz A de dimenso n x n comum a todos. % Os parmetros devem ser passados da forma % x=EGauss(A,b1,b2,b3,...,bk) % o resultado eh uma matriz x de dimenso n x k onde a % coluna j armazena a soluo do sistema Ax=bj % Dados A: matriz do sistema % varargin: lista dos vetores dos termos independentes function x=EGauss(A,varargin) b=[varargin{:}]; db=size(b); % Esta parte verifica se o sistema eh quadrado da=size(A); n=da(1); if n ~=da(2), disp('??? A matriz deve ser quadrada'); break; end; % Esta parte verifica se a dimenso do vetor b % esta de acordo com a dimenso do sistema if n ~=db(1), disp('??? Erro na dimenso de b'); break; end; % Cria matriz estendida Ax=[A,b]; % Fase da eliminao for k=1:(n-1) for i=k+1:n if abs(Ax(k,k)) < 10^(-16), disp('??? Piv Numericamente Nulo'); break; end; m=Ax(i,k)/Ax(k,k); for j=k+1:da(2) + db(2) Ax(i,j) = Ax(i,j)-m*Ax(k,j); end; CAPITULO 3. SISTEMAS LINEARES 38 end; end; % Fase da Retro solu\c{c}\~{a}o if abs(Ax(n,n)) < 10^(-16), disp('??? Piv Numericamente Nulo'); break; end; for m=1:db(2) x(n,m) = Ax(n,n+m)/Ax(n,n); end; for k=(n-1):-1:1 for m=1:db(2) som=0; for j=k+1:n som=som+Ax(k,j)*x(j,m); end; x(k,m) = (Ax(k,n+m)-som)/Ax(k,k); end; end;
c) Resolva o sistema Ax = b utilizando a decomposio LU da matriz
A. Neste item, use o comando [L, U, P] = lu(A)
d) Implemente uma verso do mtodo de Gauss-Seidel para resolver o
sistema Ax = b. Utilize no critrio de parada a tolerncia = 10-4. Compute o nmero de iteraes necessrias para atingir a preciso e calcule || A x* - b ||, onde x* a aproximao obtida. Compare o resultado obtido neste item com aquele obtido no item b).